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 lors de l'importation d'une date dans un fichier


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 611
    Points : 359
    Points
    359
    Par défaut Problème lors de l'importation d'une date dans un fichier
    Je cherche à importer un fichier ASCII sous Excel 2000 en utilisant une macro VBA.

    Il y a un champ à importer qui correspond à une date en format JJ/MM/AA.
    Après importation, cette date apparaît dans mon fichier sous la forme JJ/MM/SSAA.

    J'ai bien compris que cela était dû à mes paramètres régionaux. Je les ai modifié et cela fonctionne. Cette réponse ne me satisfait guère.
    N'y a t-il pas un moyen de forcer le formattage lors de la valorisation de la cellule ?
    Quelque chose du genre Str(MaDate;"JJ/MM/AA") ?

    Merci d'avance.

    Bonnes fêtes.

  2. #2
    Membre éclairé
    Inscrit en
    Décembre 2006
    Messages
    891
    Détails du profil
    Informations forums :
    Inscription : Décembre 2006
    Messages : 891
    Points : 831
    Points
    831
    Par défaut
    la fonction similaire à la proposition est :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Format(MaDate;"dd/mm/yy") ?
    Bonne soirée.

    ESVBA

  3. #3
    Membre averti
    Homme Profil pro
    Inscrit en
    Novembre 2008
    Messages
    611
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations forums :
    Inscription : Novembre 2008
    Messages : 611
    Points : 359
    Points
    359
    Par défaut
    Merci beaucoup, c'est la fonction que je recherchai.

    Il me reste un dernier problème.

    Si j'ai une date au 01/02/96, Excel le traduit en 02/01/96, un peu comme si j'avais un format américain.

    Que puis-je faire sans changer mes paramètres régionaux, rien qu'en le formattant ?

    Question subsidiaire: qu'est-ce qui est le plus rapide: formatter chaque cellule ou modifier toute la colonne par un
    Selection.NumberFormat = "dd/mm/yy" après importation de toutes les lignes du fichier ?

    Je pense que le selection.number doit être plus rapide.

    Merci d'avance.

    Julien.

  4. #4
    Membre actif Avatar de Duddy
    Homme Profil pro
    Agent de maitrise
    Inscrit en
    Novembre 2007
    Messages
    257
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : France

    Informations professionnelles :
    Activité : Agent de maitrise
    Secteur : Service public

    Informations forums :
    Inscription : Novembre 2007
    Messages : 257
    Points : 237
    Points
    237
    Par défaut
    Bonjour le forum et meilleur voeux à tous,

    Le seul moyen que j'ai trouvé, c'est de transformé la valeur de ma variable en format TEXTE par :
    Ensuite je l'insère dans un cellule qui est déjà au format TEXTE.

    Si ensuite, j'ai de nouveau besoin de la valeur de ma cellule, je la repasse au format DATE par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Macellule=Cdate(Macellule)
    Bon courage à toi.

  5. #5
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 699
    Points
    6 699
    Par défaut
    Bonjour,

    Si tu passes par une variable VBA, as-tu essayé de typer ta variable :
    Dim Madate As Date, si à la base tu récupères un format texte ou que tu transformes en texte, ça doit suffire, si c’est un format date, il doit avoir y conversion.

    Une bonne solution pour éviter les « interprétébugs » est d’être le plus explicite possible, vu que dans ce contexte on est face à un interpréteur VBA qui est en US et un feuille en format national.
    Tous les jours inférieurs à 12 seront interprétés par VBA en mois dans une saisie non explicite ce qui se passe dans l’import…

    La solution serait d’utiliser un format que fait appel aux mois en clair, c'est-à-dire par leurs noms…
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Dim Madate As Date
    Madate = Format(Madate, "dd/mmm/yy")
    Format te retourne un Variant / String sans ambiguïté et MaDate passe en Date OK.

    Si MaDate n’est pas typée, il faudrait passer par :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Madate = CDate(Format(Madate4, "dd/mmm/yy"))
    à voir...

    cordialement,

    Didier
    Didier Gonard

    Dernier tutoriel :
    Le VBA qu'est ce que c'est ?
    Tutoriels : Voir la liste de mes tutoriels Excel & VBA et mon site pro sur ma Page DVP
    Cours et tutoriels pour apprendre Excel
    N'oubliez pas de mettre : ..quand c'est le cas !

Discussions similaires

  1. Réponses: 1
    Dernier message: 19/01/2015, 21h59
  2. Réponses: 7
    Dernier message: 20/08/2012, 08h11
  3. Probléme lors de l'importation d'une table
    Par mavean dans le forum Modélisation
    Réponses: 1
    Dernier message: 15/01/2008, 14h49
  4. Problème lors de l'import d'une dll native.
    Par -Jolan- dans le forum C++/CLI
    Réponses: 4
    Dernier message: 21/02/2007, 12h18
  5. Problème lors d'un Update sur une date
    Par Nany dans le forum ASP
    Réponses: 3
    Dernier message: 19/05/2004, 22h37

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