IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Conversion CSV -> XLSXProblème Date


Sujet :

Macros et VBA Excel

  1. #1
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    279
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 279
    Points : 71
    Points
    71
    Par défaut Conversion CSV -> XLSXProblème Date
    Bonjour tout le monde,

    Après plusieurs heures de recherche, je n'arrive pas à résoudre un problème de date concernant la conversion de mon fichier CSV vers XLSX,

    En effet, mon fichier comprend des dates sur la première colonne, mais lors de la conversion celles-ci sont modifiées en MM/DD/YYYY et les dates > au jour 12 passent au format Texte

    A mon tableau, j'ai ajouté le bon paramètre xlDMYFormat

    Est-il possible d'avoir de l'aide ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     
    Day;Total;Less3Month;More3Month
    1/10/2017;7;6;1
    1/10/2017;1;0;1
    1/10/2017;1;0;1
    1/10/2017;1;1;0
    8/10/2017;2;1;1
    8/10/2017;1;1;0
    8/10/2017;9;2;7
    17/12/2017;4;2;2
    17/12/2017;2;0;2
    29/08/2018;1;0;1
    29/08/2018;3;1;2
    29/08/2018;1;0;1
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    'Conversion CSV XLS
    Application.DisplayAlerts = False
    Workbooks.Open Filename:=ficYearL2csv
    Columns("A:A").Select
        Selection.TextToColumns Destination:=Range("A1"), _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
            Semicolon:=True, Comma:=False, Space:=False, Other:=False, FieldInfo _
            :=Array(Array(1, xlDMYFormat), Array(2, 1), Array(3, 1), Array(4, 1)), TrailingMinusNumbers:= _
            True
     
        NumberFormatLocal = "jj/mm/aaaa hh:mm:ss;@"
        FormulaLocal = Columns("F:F").Value
        EntireColumn.AutoFit
    ActiveWorkbook.SaveAs Filename:= _
            ficYearL2xls, _
            FileFormat:=xlOpenXMLWorkbook, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False
    Application.DisplayAlerts = True
    ActiveWindow.Close
    'Conversion CSV XLS
    Nom : Resultat.PNG
Affichages : 599
Taille : 8,3 Ko

    Merci

  2. #2
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Pour ouvrir ton CSV, au lieu d'utiliser Open, utilise OpenText avec le paramètre DataType à xlDelimited et Semicolon à True pour indiquer que le séparateur est ";".
    https://docs.microsoft.com/fr-fr/off...books.opentext
    Specifie que le premier champ (FieldInfo) est de type date et passe le paramètre Local à True.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  3. #3
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    279
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 279
    Points : 71
    Points
    71
    Par défaut
    Merci pour votre retour,

    En revanche, je n'ai plus de découpage par ;

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    'Conversion CSV XLS
    Application.DisplayAlerts = False
    Workbooks.OpenText Filename:=ficYearL2csv
    Columns("A:A").Select
        Selection.TextToColumns Destination:=Range("A1"), _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, _
            Semicolon:=True, DataType:=xlDelimited, Local:=True, FieldInfo _
            :=Array(Array(1, xlDMYFormat), Array(2, 1), Array(3, 1), Array(4, 1)), TrailingMinusNumbers:= _
            True
    ActiveWorkbook.SaveAs Filename:= _
            ficYearL2xls, _
            FileFormat:=xlOpenXMLWorkbook, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False
    Application.DisplayAlerts = True
    ActiveWindow.Close
    'Conversion CSV XLS
    Nom : Capture.PNG
Affichages : 569
Taille : 6,7 Ko

    Je pense avoir inséré toutes les infos ?

    EDIT : Après plusieurs tests, ça semble le local:=true qui me supprime le parssage en ;

    Merci d'avance

  4. #4
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Il n'est plus utile de faire un TextToColumns puisque le OpenText peut faire le découpage lui-même. Il suffit d'y mettre les bons paramètres comme je l'ai indiqué.
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  5. #5
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    279
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 279
    Points : 71
    Points
    71
    Par défaut
    Merci pour votre aide ça fonctionne parfaitement voici le code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    'Conversion CSV XLS
    Application.DisplayAlerts = False
    Workbooks.OpenText Filename:=ficYearL2csv, _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, _
            Semicolon:=True, DataType:=xlDelimited, Local:=True, FieldInfo _
            :=Array(Array(1, xlDMYFormat), Array(2, 1), Array(3, 1), Array(4, 1)), TrailingMinusNumbers:= _
            True
    ActiveWorkbook.SaveAs Filename:= _
            ficYearL2xls, _
            FileFormat:=xlOpenXMLWorkbook, Password:="", WriteResPassword:="", _
            ReadOnlyRecommended:=False, CreateBackup:=False
    Application.DisplayAlerts = True
    ActiveWindow.Close
    'Conversion CSV XLS
    En revanche est-il possible de définir le format nombre pour les champs 2, 3 et 4 ?

    Car ce fichier au format XLSX est utilisé comme fichier de liaison avec une autre fichier Excel, sauf que mes deux colonnes de droite n'ont pas le bon format du coup mes calculs fonctionnent pas, pour résoudre le problème je dois cliquer sur la cellule et touche entrée. Pas très pratique

    Nom : Capture1.PNG
Affichages : 523
Taille : 2,0 Ko

  6. #6
    Expert éminent sénior Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Points : 32 866
    Points
    32 866
    Par défaut
    Citation Envoyé par darkman13130 Voir le message
    En revanche est-il possible de définir le format nombre pour les champs 2, 3 et 4 ?
    OpenText ne permet pas d'indiquer un format. Il permet juste d'indiquer la nature de la donnée : nombre, texte, date.
    Si tu veux modifier le format nombre, il faut le faire après le OpenText avec la propriété NumberFormat du Range référençant la colonne.
    Lire ceci : https://msdn.microsoft.com/fr-fr/lib.../ff196401.aspx et ça https://msdn.microsoft.com/fr-fr/lib.../ff840206.aspx
    Par exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Columns(2).NumberFormat = "# ##0"
    Merci de cliquer sur pour chaque message ayant aidé puis sur pour clore cette discussion.

  7. #7
    Membre régulier
    Inscrit en
    Avril 2008
    Messages
    279
    Détails du profil
    Informations forums :
    Inscription : Avril 2008
    Messages : 279
    Points : 71
    Points
    71
    Par défaut
    C'est parfait ça fonctionne merci pour les retours

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. modifier affichage date après conversion csv en json
    Par GUL75 dans le forum Général Python
    Réponses: 2
    Dernier message: 17/11/2016, 09h05
  2. [XL-2010] Problème date après conversion csv
    Par Tiviia dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 23/08/2013, 15h11
  3. Conversion de format de date
    Par decour dans le forum Access
    Réponses: 2
    Dernier message: 03/10/2005, 10h39
  4. Conversion .csv en .xls
    Par Isa31 dans le forum Langage
    Réponses: 4
    Dernier message: 24/05/2005, 13h04
  5. Réponses: 11
    Dernier message: 02/09/2003, 14h20

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo