VBA - Format de date

Bonjour,

J'ai crée une macro qui change (entre autre) les données relative aux dates.

Voici mon format de départ :

"di 01/01/2017 - ma 31/01/2017"

et le format souhaiter : 01/01/2017

Pour ce faire, j'ai crée une boucle pour modifier toutes les cellules de la ligne relative aux dates :

    ' boucle pour changer le format des dates

        Do Until RGD1 = "TOTAL" ' on fait la boucle jusque quand on voit TOTAL
        RGD1.Value = Mid(RGD1, 4, 10) ' On ne garde que la date du mois
        RGD1.NumberFormat = "dd/mm/yyyy" 'on va mettre selon le format de date jj/mm/aaaa
            With RGD1 'on va le mettre à droite dans la cellule
            .HorizontalAlignment = xlRight
            .VerticalAlignment = xlBottom
            .WrapText = False
            .Orientation = 0
            .AddIndent = False
            .IndentLevel = 0
            .ShrinkToFit = False
            .ReadingOrder = xlContext
            .MergeCells = False
           End With

        Set RGD1 = RGD1.Offset(0, 1)

        Loop

Le résultat obtenu est le suivant :

01/01/2017 02/01/2017 03/01/2017

Il inverse donc le jour et le mois et je n'arrive pas à résoudre cela.

Dans une autre macro avec exactement la même boucle (c'est un copier coller du code) cela fonctionne. Le fichier provient du même ordinateur et donc avec les mêmes régional setting.

Je vous joint un fichier d'exemple ou je n'ai pas le problème.... Avec exactement le même code, j'ai le souci dans ma macro complète. Je ne comprends pas le côté aléatoire de mon problème et je pense qu'il y a une logique sous-jacente que certains d'entre vous connaisse et que j'ignore.

Je vous remercie d'avance pour votre aide,

Cordialement

10dates.xlsm (26.09 Ko)

Bonjour

teste comme ceci

RGD1.value= Cdate (RGD1.value)

Bonjour,

Merci pour votre réponse mais j'ai toujours le même problème même avec le Cdate.

EDIT : J'ai ajouter le fichier ou j'ai le problème en pièce jointe.

Merci d'avance pour vos aides.

10dateex.xlsm (20.00 Ko)

Re,

Ok alors comme ceci

RGD1.Value = Format(RGD1.Value, "dd/mm/yyyy")

Bonjour,

Merci pour votre message. Cela fonctionne parfaitement.

Je reste dubitatif vis à vis du fait que l'autre fonctionnait une fois sur deux mais j'ai la bonne manière de coder maintenant grâce à vous !

Je vous souhaite une bonne journée,

Cordialement,

Rechercher des sujets similaires à "vba format date"