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 :

Probleme de conversion de dates [XL-2000]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 60
    Par défaut Probleme de conversion de dates
    Bonjour,

    J'ai un probleme de conversion de date. Je recois un fichier d'un logiciel exterieur dont une colonne est constituée de dates.

    Je fais ceci pour la conversion

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(7 + dI, 1) = Format(Cells(7 + dI, 1), "jj/mm/aaaa hh:mm:ss")
    La date à convertir est de ce type

    Mais le résultat me donne des resultats de ce style

    Par contre pour aout ça marche tres bien, de ceci

    je passe bien en

    Pourquoi cela ne marche t'il pas avec septembre au niveau des jours et des années !???

    Merci

  2. #2
    Expert confirmé Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 52
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Par défaut
    Bonjour,

    en VBA les formats sont en anglais (il me semble)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(7 + dI, 1) = Format(Cells(7 + dI, 1), "dd/mm/yyyy hh:mm:ss")

  3. #3
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    Normalement, dans le VBA, il faut mettre les format en anglais, donc dd/MM/yyyy. Mais je suis étonné que ça marche pour le mois d'août.

    Le fichier que tu reçois est un fichier texte ?

    Le mieux serait déjà de passer par une variable date intermédiaire pour être sûr qu'il la parse correctement. Ce sera plus simple ensuite pour l'affichage.

  4. #4
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 60
    Par défaut
    Merci pour vos réponses mais j'ai déja tenté le format anglais

    de là

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    01/Sep/2011 12:57:40
    01/Sep/2011 12:58:40
    01/Sep/2011 12:59:40
    01/Sep/2011 13:00:40
    01/Sep/2011 13:01:40
    ça donne ça


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    09/01/2011 12:57
    09/01/2011 12:58
    09/01/2011 12:59
    09/01/2011 13:00
    09/01/2011 13:01

    il a inversé jour et mois car dans excel quand je clique sur "format de cellule", "nombre" pour le remettre dans d'autres formats de dates pour voir, il me met le 9 janvier 2011 au lieu du 1er septembre et si ça avait marché, j'aurais eu mes courbes mais elles ne sont pas là, je les vois quand je met 0 dans les abcisses donc problemes de dates

    le format de données est de ce type, sauf qu'il y a bien plus de colonnes et de lignes...les colonnes correspondent à des mesures de capteurs sur un satellite et il y a un paquet de lignes car mesures sur 1 journée voir plus...et le but est d'afficher les courbes de ces données, il s'agit d'une macro dont je reprends le code, je n'en suis pas l'auteur. La conversion de la première colonne de dates ne se passe pas bien...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Origine	R1939 APS	R1940 APS	R1941 APS	R1942 APS
    Libellé	z=1	z=1	z=1	z=1
    NoPhase	ACQ	ACQ	ACQ	ACQ
    NomPhase	HC2	HC2	HC2	HC2
    NoTC				
    LabelTC	A003	A034	A035	A036
    Voie	2302	2332	2333	2334
    01/Sep/2011 12:57:40	-21,68541527	-20,24226379	-18,59415245	-17,80001068
    01/Sep/2011 12:58:40	-21,57033348	-20,2321701	-18,55813217	-17,78228569
    01/Sep/2011 12:59:40	-21,52745056	-20,23110771	-18,56025124	-17,77196693
    01/Sep/2011 13:00:40	-21,49123001	-20,22818565	-18,56554794	-17,77752304

  5. #5
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    Ce qu'il faut bien comprendre, c'est qu'à priori ta donnée initiale est du texte. Excel ne sait pas que c'est une date. Ensuite, quand tu lui demandes de le formater dans un format de date personnalisé, il attend une date en entrée pour appliquer ce format. Là j'ai envie de dire, on s'en fout du format que tu veux appliquer, le gros problème va être au niveau de la conversion du texte en date. Et là Excel part d'abord du principe que c'est en anglais et ne prendra un format français que si ça ne marche pas, c'est à dire, si le jour est supérieur à 12.
    Je pense qu'il faut faire une conversion personnalisée pour être sûr de n'avior aucun problème.

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 60
    Par défaut
    En tentant la fonction CDate, ça semble passer

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(15, 1) = CDate(Cells(15, 1))
    ceci
    devient ça, ce qui me va
    bizarre car la fonction CDate est la fonction de base que j'avais déja tenté sur d'autres fichiers et ça me générait un bug style incompatibilité de type...je vais voir à moyen terme si ça fonctionne dans tous les cas de figure...

    Bon weekend.

  7. #7
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    Vérifie quand même que c'est bon en faisant par exemple MOIS(A1) quelque part. Pour être sûr qu'il a vraiment la bonne date, car même si c'est bon à l'affichage, il ne faudrait pas qu'il y ait une erreur si tu fais des calculs sur les dates par exemple.

  8. #8
    Expert confirmé
    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
    Par défaut
    Bonjour,

    Les dates sous Excel, c'est comme les styles et les listes à puces dans Word, soit on consacre 2 heures à comprendre comment ça marche, soit on souffre de nombreuses heures entières à tenter, sans espoir, de résoudre le foutoir induit par un léger changement
    Pour les dates, ça ne résous pas tout, mais ça met sur la piste la plus rapide des test à faire pour analyser le comportement contextuel du pouvoir d'interprétation d'Excel.

    Citation Envoyé par ZebreLoup
    .../... Mais je suis étonné que ça marche pour le mois d'août.
    non, ça ne marche pas pour le mois d'août, il suffit se tester avec

    ça marche avec cette syntaxe :

    car voir le tableau dans le tutoriel sur les dates, ce mois exprimé en lettres et en abrégé ne laisse pas de doutes à l'interpréteur d'Excel.

    il n'en n'est pas de même pour tous, malheureusement comme va le montrer l'image des tableaux à suivre, mais encore une fois au niveau du pouvoir d'interprétation d'Excel, vu le nombre de langues sous lequel il est porté, on peut comprendre que la tâche n'est pas simple

    Nom : OrmonthData1-2012.jpg
Affichages : 1313
Taille : 435,8 Ko

    On peut constater, dans le 2éme tableau, que si on saisit la date en lettres et en entier tout est OK.


    Citation Envoyé par soccersoft
    .../... il a inversé jour et mois car dans excel quand je clique sur "format de cellule", "nombre" pour le remettre dans d'autres formats de dates pour voir, il me met le 9 janvier 2011 au lieu du 1er septembre
    vois pourquoi ici dans le tutoriel

    PS : à noter que les dates sont des nombres pour Excel et qu'à ce titre alignées à droite dans les cellules par défaut, un alignement à gauche indiquera toujours une saisie en format texte !

    Cordialement,

    Ps : si le côté technique de la réponse = OK ou pas => pensez à cliquer sur les pouces et quand question résolue à la taguer résolue, et chaque action vous rapporte des points

    Didier

  9. #9
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 60
    Par défaut
    Effectivement, c'est un truc de fou, j'ai testé du coup avec le mois d'aout et plantage alors que ça marchait pour septembre !

    Incompatibilité 13 je crois, probleme de type alors que ça marche sur d'autres mois...et en regardant le tableau, ça fait peur de voir les interprétations d'excel...

    Plantage sur cette ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(7 + dI, 1) = CDate(Cells(7 + dI, 1))
    je vais regarder ça mais si ça continue comme ça, je vais pas m'embeter, je vais mettre un switch pour tous les mois sur les 3 premieres lettres et remplacer leur valeur par le nombre correspondant...ça m'évitera peut être des fonctionnements aléatoires...

    Je m'y remets...

  10. #10
    Membre Expert Avatar de ZebreLoup
    Homme Profil pro
    Ingénieur Financier
    Inscrit en
    Mars 2010
    Messages
    994
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 47
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur Financier
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2010
    Messages : 994
    Par défaut
    Oui, c'est ce que je te conseillais au début, écrire toi même ta fonction de parsing...

  11. #11
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2002
    Messages
    60
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2002
    Messages : 60
    Par défaut
    L'inconvenient, c'est que ça rajoute du temps de traitement et vu le nombre de lignes à traiter, j'ai un peu peur du résultat, je vais voir si c'est beaucoup plus lent ou non...

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

Discussions similaires

  1. Probleme de conversion String -> Date avec SimpleDateFormat.parse(String)
    Par jeanlouis_lecodeur dans le forum Collection et Stream
    Réponses: 4
    Dernier message: 02/07/2007, 10h18
  2. Réponses: 2
    Dernier message: 16/02/2007, 22h34
  3. [MySQL] Probleme de conversion de date en format francophone
    Par bilou95 dans le forum PHP & Base de données
    Réponses: 7
    Dernier message: 21/11/2006, 12h40
  4. [debutant]probleme de conversion de date
    Par julien31009 dans le forum Langage
    Réponses: 6
    Dernier message: 22/10/2006, 16h56
  5. Probleme de conversion de dates
    Par manu00 dans le forum Langage
    Réponses: 4
    Dernier message: 29/05/2005, 01h00

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