web-dev-qa-db-fra.com

Excel 2010 - modifier les dates américaines au format britannique

J'ai importé un fichier CSV avec 2 longues colonnes de dates. Ces dates sont au format américain Aug/28/2013 et je veux qu’elles soient au format britannique standard dd/mm/yyyy.

J'ai essayé de formater les cellules en tant que dates US, puis de les convertir en formats numériques et en diverses autres permutations dans la zone de format Date, mais sans succès. 

Quelqu'un peut-il me débarrasser de ces terribles dates américaines s'il vous plaît?

7
Cara Murphy

Une autre solution sans utiliser de formule:

  • Sélectionnez les colonnes pertinentes
  • Choisissez Données → Texte en colonnes…
  • Sélectionnez "Délimité" et cliquez sur Next
  • Décochez tous les délimiteurs et cliquez sur Next
  • Sélectionnez le format de colonne de données "Date: MDY" et cliquez sur Finish

Les dates doivent maintenant être converties en dates au Royaume-Uni.

15
cmbuckley

Le problème est qu’une date aux États-Unis peut être analysée par Excel comme une date au Royaume-Uni lorsque le jour est inférieur à 13. Lorsque cela se produit, Excel le convertit en numéro de série (date) au Royaume-Uni localisé. 

Donc, 19/03/2014 est évidemment une date américaine du 19 mars. Cependant, le 05/03/2014 étant ambigu, Excel le traite comme le 5 mars, au lieu du 3 mai, aux États-Unis. Toute formule doit vérifier si Excel a stocké la date américaine comme date britannique. Une date au Royaume-Uni sera stockée dans Excel sous forme de numéro. 

=IF(ISNUMBER(A2),DATE(TEXT(A2,"yyyy"),TEXT(A2,"dd"),TEXT(A2,"mm")),DATE(RIGHT(A2,4),LEFT(A2,FIND("/",A2)-1),MID(A2,FIND("/",A2)+1,2)))

(Pour une date US dans les cellules A2 et PC, la date est jj/mm/aa).

Si ISNUMBER est vrai, la date américaine ressemble à une date britannique et Excel l'a numérotée en tant que nombre. Ainsi, vous pouvez formater la date sous forme de texte et revenir à une date. Le jour de la note est passé au paramètre month de la première fonction DATE pour effectuer la conversion. Si ISNUMBER est false, il est stocké sous forme de chaîne en tant que Excel ne convertit pas une chaîne de date avec> 12 mois. Utilisez donc des fonctions de chaîne pour le séparer de la fonction DATE. 

4
user3155533

Je suppose que la date que vous avez reçue est formatée en texte et que le faire en tant que date ne change rien. Vous pouvez exécuter la formule suivante à la date:

=(MID(A1,FIND("/",A1)+1,FIND("/",A1,FIND("/",A1)+1)-FIND("/",A1)-1)&"-"&LEFT(A1,FIND("/",A1)-1)&"-"&RIGHT(A1,4))*1

Si vous obtenez des nombres, il vous suffit de le formater avec dd/mm/yyyy et ça devrait être bon.

1
Jerry

J'ai essayé certaines des autres suggestions mais aucune ne semblait fonctionner pour moi. Dans mon cas, j'importais des dates américaines sous la forme M/j/aaaa hh: mm: ss. Si l'utilisation de VBA dans votre feuille de calcul ne vous dérange pas, alors la fonction suivante a fait le travail pour moi:

Public Function USDate(ds As Variant) As Variant
    Dim sp() As String
    Dim spt() As String
    Dim spt2() As String

    If ds = vbNullString Then
        USDate = ""
    ElseIf IsNumeric(ds) Then 
        ' Convert numeric US dates wrongly interpreted as UK i.e. 1/7/2017 as 7th January 2017
        USDate = DateSerial(Year(ds), Day(ds), Month(ds)) 
    Else
        sp = Split(ds, "/") ' split the date portion
        spt = Split(sp(2), " ") ' split the time from the year
        spt2 = Split(spt(1), ":") 'split the time hms

        USDate = DateSerial(spt(0), sp(0), sp(1)) + TimeSerial(spt2(0), spt2(1), spt2(2))
    End If
End Function

Merci pour https://stackoverflow.com/users/845584/peterx soulignant - vous devrez créer la fonction dans un module de code VBA pour utiliser cette technique.

Utilisez-le simplement dans une formule de feuille de calcul, par exemple = USDate (A2)

1
user2486488

Il y avait un autre problème pour moi, car d'une manière ou d'une autre, les données brutes étaient censées être lues sous forme de nombre, mais ce n'est pas le cas. J'ai donc mis à jour la formule avec 1 cas final:

= IFERROR (IF (ISNUMBER (A2), VALUE (TEXT (A2, "mm/jj/aaaa"))), DATE (DROITE (A2,4), GAUCHE (A2, FIND ("/", A2) -1) , MID (A2, FIND ("/", A2) +1,2))), DATE (DROITE (A2,4), GAUCHE (A2, FIND ("/", A2) -1), MID (A2, TROUVER ("/", A2) +1,1)))

0
w31hon9

À cet égard, la formule ci-dessous peut être utile pour modifier une date de 

"MM/JJ/AAAA"

dans 

"JJ/MM/AAAA".

=VALUE(TEXT(B2,"mm/dd/yyyy"))
0
Jettiesburg

Cela peut être délicat lorsque les dates sont dans un format mixte, par exemple. UK et US dans la même colonne. J'ai trouvé une solution efficace si peu élégante:

Step1) Select the column containing the dates to be converted;

Step2) Format, Cells, Text;

Step3) Format, Cells, Date, US;

Step4) Data, Text to column, Next, Delimited, Next, delete all delimiters, Next, select format MDY;

Step5) Format, Cells, Date, UK.

Step4 avait été suggéré ailleurs, mais cela seul ne le faisait pas pour moi. J'espère pouvoir combiner ces étapes dans une macro, mais aucun succès à ce jour.

0
maren

Je ne pouvais pas obtenir la réponse la plus commune au travail, le processus qui a fonctionné pour moi était:

Pour la date 10/04/2018 11:49:20, cliquez avec le bouton droit de la souris sur la cellule et sur "Formatage des cellules", sur l'onglet "Nombre", sélectionnez la catégorie "Personnalisé", puis sélectionnez mm/dd/yyyy hh:mm.

0
PuffTMD

Nous pouvons tirer le meilleur parti des deux mondes avec cette formule plus concise:

=IF(ISNUMBER(A2),VALUE(TEXT(A2,"mm/dd/yyyy")),DATE(RIGHT(A2,4),LEFT(A2,FIND("/",A2)-1),MID(A2,FIND("/",A2)+1,2)))

Je ne trouve rien de plus court.

0
Boulebill