Macro pour conversion csv en colonnes - Problème de dates américaines

Bonjour à tous.

Je suis actuellement en train de construire un complément personnalisé pour Excel (.xlam).

Mon but est d'automatiser, en un bouton situé dans le ruban Excel, la conversion d'un fichier .csv, pour obtenir les colonnes distinctes de ce même fichier. Le fichier est adressé à des personnes qui n'ont pas toutes un niveau de maitrise d'excel suffisant pour ce type de tâches.

Pour cela, j'ai "bêtement" utiliser l'enregistreur de macros lorsque j'ai réalisé la conversion à la main, pour utiliser son résultat et obtenir le code suivant :

Sub convert_csv()

    Columns("A:A").Select
    Selection.TextToColumns Destination:=Range("A1"), _
        DataType:=xlDelimited, _
        TextQualifier:=xlDoubleQuote, _
        ConsecutiveDelimiter:=False, _
        Tab:=False, _
        Semicolon:=False, _
        Comma:=True, _
        Space:=False, _
        Other:=False, _
        FieldInfo:=Array(Array(1, 1), Array(2, 1), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1)), _
        TrailingMinusNumbers:=True

End Sub

J'ai alors enregistré mon fichier en .xlam dans le dossier add ins de mon PC et j'ai paramétré le ruban pour accéder facilement à la fonction.

Le problème ?

Lorsque je réalise manuellement la conversion, aucun problème, mes données sont toutes dans le bon format, notamment les dates.

Mais lorsque je passe par le complément que j'ai créé, certaines dates sont lues et interprétées en format américain, ce qui rend le fichier totalement incohérent.

Je précise que j'ai également essayé de créer une simple macro lancée par un bouton "classique" dans ma feuille de calcul --> Même problème de date que dans le complément.

Je ne comprend pas d'où peut venir le problème, puisque venant de l'enregistreur de macros, le code (qu'il soit dans le complément ou dans une simple macro) devrait voir le même résultat ... Mais ce n'est pas le cas !

Si quelqu'un peut m'expliquer d'où vient le problème, et comment le corriger si possible !

Merci par avance.

(Ci joint, un fichier .csv à modifier, et mon fichier .xlam qui contient le complément en question)

13essai-macro.csv (1.17 Ko)

Cordialement,

Onafe57

Bonsoir,

le soucis vient de la compréhension des dates "texte" par VBA, il faut lui indiquer que ce sont des dates, hors je n'ai pas réussi à les forcer dans votre code.

Je vous propose donc la routine suivante :

Sub LouReeD()
    Dim i As Long
    ' ligne de la première donnée
    i = 2
    ' on boucle tant que la cellule "ligne" colonne 1 est différente de rien
    Do While ActiveSheet.Cells(i, 1) <> ""
        ' boucle "indéfinie" je rend la main à l'utilisateur dans le cas d'une boucle infinie
        ' afin de couper le code simplement
        DoEvents
        ' on récupère dans un tableau les données de la cellule actuelle en les séparant par la virgule
        tablo = Split(Cells(i, 1), ",")
        ' on inscrit à partir de la cellule ligne i et colonne 1 la première valeur de ce tablo
        Cells(i, 1) = tablo(0)
        Cells(i, 2) = tablo(1)
        Cells(i, 3) = tablo(2)
        Cells(i, 4) = tablo(3)
        ' c'est ici qu'on force le format date pour les données 5 et 6, donc index 4 et 5 du tableau qui commence à 0
        Cells(i, 5) = CDate(tablo(4))
        Cells(i, 6) = CDate(tablo(5))
        i = i + 1
    ' on boucle
    Loop
End Sub

@ bientôt

LouReeD

Merci pour votre réponse!

Je teste ça dès demain matin ! 🙂

Super, merci LouReed, test effectué et ça marche à merveille ! :-)

Bonjour,

Merci pour votre retour et remerciement !

@ bientôt

LouReeD

Rechercher des sujets similaires à "macro conversion csv colonnes probleme dates americaines"