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 :

Problème de conversion - Données de type DATE


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2014
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 35
    Par défaut Problème de conversion - Données de type DATE
    Bonjour,

    Je fais appelle à vous car j'ai un petit problème de conversion dans l'une de mes macros.

    --> Dans mon export de base, j'ai une colonne dans laquelle apparaissent des dates OU la mention "non concerné", donc je pense que tout est considéré comme du texte lorsque que ma macro ouvre l'export.
    --> Quand je dis à Excel de convertir les données, certaines cellules ne sont pas traitées (cf capture d'écran ci-dessous)

    Nom : 2017-06-01 11_42_11-Export_GLOBAL.xlsx - Excel.png
Affichages : 1306
Taille : 9,2 Ko

    PI: Voici la ligne de code que j'utilise

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Columns("O:O").Select
        Selection.TextToColumns Destination:=Range("O1"), DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
            Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 1), TrailingMinusNumbers:=True
    Quelqu'un saurait-il d'où peut venir le problème ? merci d'avance

  2. #2
    Membre Expert
    Femme Profil pro
    Ingénieur
    Inscrit en
    Octobre 2016
    Messages
    1 706
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Âge : 30
    Localisation : France, Indre et Loire (Centre)

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

    Informations forums :
    Inscription : Octobre 2016
    Messages : 1 706
    Par défaut
    Bonjour,
    Je ne peux pas corriger ta ligne de code, car je ne connais pas cette formule, mais je peux te dire quelle est l'origine du problème. Ca vient du fait que VBA lit les dates en anglais (4 décembre 2017 est 12/04/2017), alors que ton Excel est sûrement en français et lit donc les dates en français (4 décembre 2017 est 04/12/2017).

  3. #3
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 578
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 578
    Par défaut
    Bonjour

    En complément de la remarque de riaolle, il faudrait déjà voir comment sont exportées les données.

    Dans nombre de cas Excel fait une conversion à l'ouverture du fichier :
    certaines passent mais ne sont pas forcément importées correctement le 4/5/2017 au format US est le 5 avril mais peut être interprété comme le 4 mai.
    d'autres sont considérées comme texte car ne pouvant être ainsi interverties. Ton exemple semble bien confirmer cela.

    Il convient donc de régler le problème en amont, en paramétrant l'import, pas en le triturant à posteriori

  4. #4
    Membre averti
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2014
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 35
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("O:O").TextToColumns DataType:=xlDelimited, FieldInfo:=Array(1, 4)
    En ne gardant que ces arguments, cela fonctionne ! Je ne sais toujours pas pourquoi mais bon....

    Pour obtenir ça, je suis passé par l'enregistreur de macro et j'ai utilisé le menu convertir en passant bien les 3 étapes. C'est l'argument "Fieldinfo" qui a changé mais je ne sais pas trop à quel niveau ça intervient.

  5. #5
    Membre averti
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2014
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 35
    Par défaut
    Merci pour ta réponse Chris !

    Effectivement tu as tout compris, l'export Excel est issu d'un logiciel interne à la société et le paramétrage devrait être fait par mon Service IT qui a malheureusement ses limites... donc je suis obligé de bidouiller un peu les données avant de les faire apparaitre dans mon rapport.

    Je peux comprendre la complexité de l'exercice pour le développeur car il y a 3 cas de figure dans ce champ.
    - laisser vide en attendant d'avoir l'infos
    - "Non concerné" apparait automatiquement dans certains cas si une autre case est cochée dans le logiciel (le projet n'est pas concerné par la signature d'un contrat)
    - Date saisie dans le champs car l'utilisateur a l'infos

  6. #6
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Selection.TextToColumns Destination:=Range(dest1), DataType:=xlDelimited, _
            TextQualifier:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=True, _
            Semicolon:=False, Comma:=False, Space:=False, Other:=False, FieldInfo _
            :=Array(1, typeArray), TrailingMinusNumbers:=True
    Dans la commande ci-dessus, le parametre :=Array(1, typeArray) doit decrire correctement le format des dates.

    Il y a 2 possibilites: ou la date dans la cellule est de type String, ou elle est de type Date.
    EDIT:
    Si elle est de type Date, il faut toujours mettre xlGeneralFormat ou xlMDYFormat (le format date americain mois/jour/annee).
    Si elle est de type String, il faut mettre le format de date affiche dans la cellule (soit xlDMYFormat si la valeur de la cellule est au format DMY jour/mois/annee, xlYMDFormat si le format est annee/mois/jour, etc...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    typeArray = xlMDYFormat 'MDY   si valeur est de type Date OK
    typeArray = xlDMYFormat 'DMY   si valeur est de type String OK
    typeArray = xlGeneralFormat 'General

  7. #7
    Membre averti
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2014
    Messages
    35
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2014
    Messages : 35
    Par défaut
    Est-ce que cela veut dire que 4 = xlDMYformat ?
    =Array(1, 4)

  8. #8
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 578
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 578
    Par défaut
    Re
    Citation Envoyé par Tiblar92 Voir le message
    Effectivement tu as tout compris, l'export Excel est issu d'un logiciel interne à la société ...
    L'important est le format d'export : si CSV
    • soit remplacer l'extension csv par txt pour pouvoir paramétrer l'import et réglet le bon format de date,
    • soit passer par données externes pour l'import mais ne pas simplement ouvrit un fichier csv pour éviter les automatismes non prévus pour nous nous mais pour les normes américaines.


    Dans tout les cas précise le format et la façon dont tu récupère dans Excel

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

Discussions similaires

  1. Conversion de données de type Date
    Par WIN76 dans le forum Servlets/JSP
    Réponses: 18
    Dernier message: 08/12/2015, 22h55
  2. [Débutant] Problème de modification de données de type date
    Par hugnka dans le forum VB.NET
    Réponses: 11
    Dernier message: 11/05/2012, 09h20
  3. Problème données de type date lors de l'insertion
    Par NarbOni dans le forum Administration
    Réponses: 1
    Dernier message: 12/04/2011, 11h28
  4. Réponses: 13
    Dernier message: 30/11/2006, 15h00
  5. Réponses: 11
    Dernier message: 02/09/2003, 15h20

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