Inversion jour/mois copier coller

Bonjours à tous j'ai une problématique sur un fichier que j'ai réalisé.

J'exporte depuis une application un fichier excel qui comporte pour chaque ligne un dossier. L'objectif étant de copier ces données dans un Dashboard qui réalise un reporting des dossiers.

J'ai donc réalisé une macro VBA qui copie-colle les données de l'export dans une plage prédéfinis sur mon dashboard. La problématique réside dans le collage de données, effectivement lorsque je colle les dates les jours et les mois s'échangent uniquement pour les jours inférieurs à 12. Par exemple la date 11/10/2023 devient le 10/11/2023.

De plus je suis obligé d'intégrer le collage avec l'enregistreur de macro en fin de code pour que le collage soit effectif.

Je ne parviens pas à résoudre ces problématiques, ci-dessous la macro ( je suis un vrai débutant en VBA, un peu d'indulgence svp )

Sub ImporterDonnees()
Dim cheminFichier As String
Dim fichierSource As Workbook
Dim plageImport As Range
Dim plageDestination As Range

' Ouvrir la boîte de dialogue pour sélectionner le fichier
cheminFichier = Application.GetOpenFilename(FileFilter:="Fichiers Excel (*.xls; *.xlsx), *.xls; *.xlsx", Title:="Sélectionner le fichier source")

' Vérifier si l'utilisateur a annulé la sélection du fichier
If cheminFichier = "Faux" Then
Exit Sub
End If

' Ouvrir le fichier source
Set fichierSource = Workbooks.Open(cheminFichier)

' Spécifier la plage à importer (de A2 à la fin des données dans la feuille source)
Set plageImport = fichierSource.Sheets(1).Range("A2:AI" & fichierSource.Sheets(1).Cells(fichierSource.Sheets(1).Rows.Count, "A").End(xlUp).Row)

' Spécifier la plage de destination à partir de la cellule A13 jusqu'à la colonne AI et ligne 100000
Set plageDestination = ThisWorkbook.Sheets(1).Range("A13:AI100000")

' Copier la plage importée en tant que valeurs uniquement
plageImport.Copy
plageDestination.PasteSpecial Paste:=xlPasteValues

' Fermer le fichier source sans enregistrer les modifications
fichierSource.Close SaveChanges:=False

' Nettoyer le presse-papiers
Application.CutCopyMode = False

Range("A13").Select
ActiveSheet.PasteSpecial Format:="Texte Unicode", Link:=False, _
DisplayAsIcon:=False, NoHTMLFormatting:=False
MsgBox "Données copiées avec succès!", vbInformation
End Sub
Un grand merci à vous !

Salut,

je ne m'y connais pas fort en VBA mais le souci que tu décris ressemble à un souci de conversion des dates au format US, avec les mois avant les jours.

Oui j'ai essayé d'utiliser la formule CDATE mais je ne parviens à rien

Et tu veux que tout soit fait par la formule VBA ? Parce que sinon il suffit d'imbriquer les fonctions DATE, DROITE, GAUCHE et STXT pour ré-agencer le contenu de la cellule, histoire d'inverser les jours et les mois.

Bonsoir à tous,

Sans fichier, difficile de répondre à coup sûr :

Si les dates sont en colonne 1 à partir de A1, essayez la formule suivante ? :

J'ai supposé que vos dates avaient toujours 10 caractères.

=SI(ESTTEXTE(A1);DATE(DROITE(A1;4);GAUCHE(A1;2);STXT(A1;4;2));DATE(ANNEE(A1);JOUR(A1);MOIS(A1)))

Si vous voulez du VBA, un exemple :

Sub test()
Dim t, i As Long, x
   t = Range("a1:a" & Cells(Rows.Count, "a").End(xlUp).Row)
   For i = 1 To UBound(t)
      x = t(i, 1)
      If TypeName(x) = "String" Then
         t(i, 1) = DateSerial(Right(x, 4), Left(x, 2), Mid(x, 4, 2))
      Else
         t(i, 1) = DateSerial(Year(x), Day(x), Month(x))
      End If
   Next i
      Range("a1").Resize(UBound(t)).Clear
      Range("a1").Resize(UBound(t)) = t
End Sub

Nota :

Si vos dates sources sont des dates US, alors 01/02/2024 représente le 2 janvier 2024.
Il est probable qu'une fois importée cette date s'affiche aussi comme date "française" : 01/02/2024
Mais en date française, cela représente le 01 février 2024.

On a donc l'impression que la date s'est bien importée alors que ce n'est pas le cas.
Comme on n'a pas ni le fichier à importer ni le résultat de l'importation, il est difficile d'affirmer que la formule et le VBA donnent les résultats espérés.

Bonjour à tous,

Je vous remercie pour vos retours,

@doux rêveur, je souhaite que le retraitement du fichier soit fait en VBA afin de ne pas avoir à retravailler la base data.

@mafraise, Je joins le fichier que je souhaite importer dans ma matrice, j'ai des dates sur plusieurs colonnes avec des formats différents, certaines comprennent les heures et d'autres non.

J'ai essayé d'adapter ton code à ma macro mais je ne parviens à rien.

encore merci à tous

Ci-joint le fichier!

Bonjour,

ton export n'est pas en csv ou txt ?
Auquel cas il ne faut pas l'ouvrir dans excel mais l'importer (Données / Obtenir des données) où tu peux spécifier pour chaque colonne le format date JMA
Si tu l'ouvres dans excel c'est trop tard, il a interprété à sa sauce.
eric

Rechercher des sujets similaires à "inversion jour mois copier coller"