XL 2019 Changement de format lors d'export de dates dans autre feuille

thespeedy20

XLDnaute Occasionnel
Bonjour à tous,

je dois exporter des dates dans une autre feuille, ma macro effectue le travail mais change le format des dates :

J'ai des dates au format 00/00/0000 et 00-00-0000 lors de l'exportation alors que dans la colonne d'origine elles sont toutes en format 00-00-0000

je ne vois pas bien d'où vient le problème... merci d'avance

OLi
 

Pièces jointes

  • Dates.xlsm
    47.5 KB · Affichages: 8

sylvanu

XLDnaute Barbatruc
Supporter XLD
Bonsoir Thespeedy20,
Effectivement c'est bizarre, et sans raison apparente.
Une solution de contournement est de remettre le bon format :
VB:
    With Sheets("Feuil2").Range("A1").Resize(UBound(a, 1), UBound(a, 2))
        .Value = a
        .Columns("A:A").NumberFormat = "dd-mm-yyyy"
    End With
Ca n'explique pas mais ça résout. :)
 

thespeedy20

XLDnaute Occasionnel
Bonsoir sylvanu,

Merci pour ce contournement...

Je constate aussi que parfois, il y a une inversion (format américain), c'est de plus en plus bizarre. Ce n'est pas pour toutes les dates !!!

Exemple ligne 55 : 02-09-2012 sur feuille WO et après export 09-02-2012 sur le feuille2

OLi
 

chris

XLDnaute Barbatruc
Bonjour à tous

Je ne vois pas l'intérêt de passer par un array pour une simple copie.

Cette unique ligne suffit
VB:
Sheets("Wo").Range("A1").CurrentRegion.Copy Destination:=Sheets("Feuil2").Range("A1")

Sur la feuille 1 ce ne sont pas des dates mais des textes.
En utilisant value, Excel recalcule la valeur de la cellule et, quand il le peut, l’interprète comme date et comme on est en VBA, toute date est évaluée au format US.

Si à la main tu te places dans une cellule de la feuille 1 et revalide sont contenu sans le modifier, Excel va aussi transformer en date mais hors VBA, au format habituel.

Si tu tiens à ton array
VB:
Sub Recopie()
Dim a
    With Sheets("Wo").Range("A1").CurrentRegion
        a = Application.Index(.Value, Evaluate("row(1:" & _
            .Rows.Count & ")"), Array(1))
            For i = 2 To UBound(a)
                a(i, 1) = CDate(Replace(a(i, 1), "-", "/"))
            Next i
    End With
    With Sheets("Feuil2").Range("A1").Resize(UBound(a, 1), UBound(a, 2))
        .NumberFormat = "dd-mm-yyyy"
        .Value = a
    End With
End Sub
 
Dernière édition:

thespeedy20

XLDnaute Occasionnel
Bonjour sylvanu, chris

Je vous remercie de vous intéresser à mon problème... les dates sont extraites d'un logiciel tiers apparemment sous format texte, je vais contacter le concepteur afin qu'il règle le problème...

Merci à vous deux pour l'aboutissement ... de la résolution de ce problème

OLi
 

Discussions similaires