Convertir une date

Bonjour,

J'ai des dates écrite en toute lettre de B2:E25 que j'aimerai convertir sous cette forme : XX/XX/XXXX dans la colonne I.

Connaissez-vous une macro qui puisse effectuer cette conversion svp ?

exemp

Bonjour SpaceX,

je te propose cette formule, à mettre en I2 (et à tirer vers le bas jusqu'en ligne 25) :

=SI(OU(C2="";D2="";E2="");"";DATE(E2;EQUIV(D2;{"Janvier";"Février";"Mars";"Avril";"Mai";"Juin";"Juillet";"Août";"Septembre";"Octobre";"Novembre";"Décembre"};0);C2))

dhany

Salut,

J'ai des valeurs qui s'affiche mais elle sont fausses. En effet, j'obtiens ceci :

43199

43199

43199

43199

43199

43199

43199

43199

43199

43199

43199

43199

43199

43199

43199

43199

43199

43200

43200

43200

43200

43200

43200

43200

Bonjour

Elles ne sont pas fausses c'est le format de ta cellule qui n'est pas bon, si tu mets le format date courte dans format de cellule ça te mettra bien les dates, Excel stocke les dates sous ses valeurs.

ces valeurs ne sont pas fausses : c'est les bons numéros de série des dates ; tu dois juste mettre dessus le format date de ton choix.

d'autre part, je vais aussi te proposer bientôt une autre solution avec macro.

dhany

Superbe ! Merci beaucoup ça fonctionne !

Oh Oh Oh Oh !!!! dhany passe à dhany !!!

Félicitation !

Vous vous rapprochez de moi ! C'est pas bon ça !

@ bientôt

LouReeD

Bonjour

Voila une macro

A toi de Voir

A+

Maurice

Sub TestDate()
Mois = Array(, "Janvier", "F?vrier", "Mars", "Avril", "Mai", "Juin", _
        "Juillet", "Ao?t", "Septembre", "Octobre", "Novembre", "D?cembre")
Nlig = Range("C" & Rows.Count).End(xlUp).Row
    For L = 2 To Nlig
        For I = 1 To UBound(Mois)
            If Range("D" & L) = Mois(I) Then Tmois = I: Exit For
        Next I
        Range("I" & L).Value = DateSerial(Range("E" & L).Value, Tmois, Range("C" & L).Value)
    Next
End Sub

Bonjour, Salut à tous !

Si tes données sont très exactement comme sur ton image :

Sub Test()
    Dim dd(), aa, i%, m%
    aa = ActiveSheet.Range("B2").CurrentRegion.Value
    ReDim dd(1 To UBound(aa), 0)
    For i = 1 To UBound(aa)
        For m = 1 To 12
            If StrComp(MonthName(m), aa(i, 3), vbTextCompare) = 0 Then Exit For
        Next m
        If m < 13 Then dd(i, 0) = DateSerial(aa(i, 4), m, aa(i, 2))
    Next i
    With ActiveSheet.Range("I2").Resize(UBound(dd))
        .Value = dd
        .NumberFormat = "dd/mm/yyyy"
    End With
End Sub

Cordialement.

@SpaceX

je te propose ce fichier Excel :

15exo-spacex.xlsm (16.52 Ko)

Ctrl e ➯ travail effectué

Alt F11 pour voir le code VBA, puis revenir sur Excel.

j'ai mis un test du jour très simple : entre 1 et 31 ; je te laisse ajouter ce qu'il faut pour

un vrai dernier jour de mois : 31, ou 30, ou pour février : 28 (ou 29 si année bissextile)

si besoin, tu peux demander une adaptation.

merci de me dire si ça te convient.

dhany

Petite astuce pour la fin du mois tu peux utiliser la fonction FIN.MOIS(tadate,0)

screen

voici un lien sur mon post précédent : https://forum.excel-pratique.com/viewtopic.php?p=670673#p670673

Bonjour,

@ MFerrand,

Ta proposition est la solution à retenir, mais j'ai une question :

Pourquoi If m < 13 ? Tu as une crainte que l'incrément I dépasse le seuil de 12 ?

Bon, un bon café !...

Bonne journée à tous.

Salut Jean-Eric !

Oui ! Si le mois n'est pas reconnu, par exemple Fevrier, la boucle ira au bout et m atteindra la valeur 13, et la date résultante serait fausse dans ce cas.

bonne journée.

Re,

En buvant mon café, je me suis rendu compte de l'absurdité de ma question!...

Bonne journée.

Rien de grave... avant café, j'ai dû réfléchir... !

Rechercher des sujets similaires à "convertir date"