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 date: Inversion jour et mois dans cellule de résultat


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 2
    Points : 1
    Points
    1
    Par défaut Problème de date: Inversion jour et mois dans cellule de résultat
    Bonjour,

    J'ai le problème suivant sur Excel:

    J'ai à la base 3 colonnes, une correspondant au jour, une deuxième au mois et une troisième à l'année.
    Je souhaite regrouper ces 3 colonnes dans une quatrième afin qu'elle contienne la date complete du type JJ/MM/AAAA.

    J'utilise la ligne de macro suivante:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("J" & i).Value = Range("B" & i) & "/" & Range("H" & i) & "/" & Range("I" & i)
    Problème: Pour certaines cellules, le jour et le mois sont inversés... Au lieu d'avoir JJ/MM/AAAA je vois MM/JJ/AAAA.

    Pourtant toutes les cellules de la colonnes finale sont au même format de date: *14/03/2001, et en français...

    Pour faire un test, j'ai inclus le résultat de la concatenation des 3 cellules dans une variable, puis je l'affiche via Msgbox, il n'y a pas d'erreur d'inversion à ce niveau.
    Donc le problème apparaitrait au moment de l'insertion des données dans les cellules finales...

    Pouvez vous m'aider? J'ai tourné le problème dans tous les sens et je ne vois plus trop d'ou ça peut venir... Ca me semble plus très logique... Quelqu'un a une idée?

    (J'utilise Office 2007)

  2. #2
    Membre averti
    Homme Profil pro
    Inscrit en
    Mars 2010
    Messages
    211
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Mars 2010
    Messages : 211
    Points : 300
    Points
    300
    Par défaut
    Bonjour,

    As tu possibilité de faire un fichier "exemple" que tu nous upload et qu'on puisse regarder ?

    Car de visu comme ça avec ton poste j'ai pas d'idée.. surtout si ton format de cellule est bon et que ton résultat en sortie (mgbox) est ok..

    Cdt
    Benoit

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    389
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 389
    Points : 437
    Points
    437
    Par défaut
    Bonjour,

    Essayez
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Range("J" & i).Value = CDate(Range("B" & i) & "/" & Range("H" & i) & "/" & Range("I" & i))

  4. #4
    Nouveau Candidat au Club
    Inscrit en
    Octobre 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 2
    Points : 1
    Points
    1
    Par défaut
    Bonjour,

    ça marche très bien avec la fonction CDate(Range...

    Merci!

  5. #5
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    389
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 389
    Points : 437
    Points
    437
    Par défaut
    Bonjour,

    Quand c'est résolu merci de le signaler, ça évite de revenir sur les mêmes messages

  6. #6
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Il faut être prudent avec CDate car il peut inverser le jour et le mois parce qu'il accepte autant jj/mm/aaaa que mm/jj/aaaa
    Exemple :
    donne 01/05/2010

    donne 13/05/2010

    Tu peux détecter l'erreur ainsi:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    d = CDate(Range("B" & i) & "/" & Range("H" & i) & "/" & Range("I" & i))
     
     If Month(d) <> CLng(Range("H" & i)) Then
      MsgBox d & " Erreur de mois en " & Range("H" & i).Address
     End If

  7. #7
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Citation Envoyé par Docmarti Voir le message
    Il faut être prudent avec CDate car il peut inverser le jour et le mois parce qu'il accepte autant jj/mm/aaaa que mm/jj/aaaa
    Petite nuance:
    CDate va utiliser les Options régionales.
    Donc, sur les ordinateurs configurés en francophonie européenne, CDate prendra toujours l'ordre jj/mm/aaaa.

  8. #8
    Membre émérite
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Points : 2 684
    Points
    2 684
    Par défaut
    Citation Envoyé par AlainTech Voir le message
    Petite nuance:
    CDate va utiliser les Options régionales.
    Donc, sur les ordinateurs configurés en francophonie européenne, CDate prendra toujours l'ordre jj/mm/aaaa.
    On devrait plutôt dire que CDate prendra toujours en priorité l'ordre du Format de date courte tel que défini dans les options régionales, mais qu'il acceptera, hélas, un ordre différent s'il rencontre une valeur supérieure à 12 attribuée à MM (le mois).

    Ainsi, avec un format de date Courte jj/MM/aaaa ,
    05/13/2010 sera interprété comme étant le 13 mai
    alors que 05/12/2010 donnera le 5 décembre.

  9. #9
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 70
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Points : 24 327
    Points
    24 327
    Par défaut
    Ok, j'aurais dû présiser: "si on lui donne une date conforme aux options régionales".

  10. #10
    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,

    tic59, regardes aussi dans les tutoriels :


    Comprendre et gérer les dates sous Excel et en VBA


    cordialement,

    Didier

Discussions similaires

  1. [XL-2010] Problème de date inversion jour/mois
    Par gigalia dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 25/10/2013, 11h31
  2. Probleme date : inversion jour et mois
    Par amelyfred dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 04/07/2011, 11h41
  3. [Dates] Inversion jour et mois
    Par Kephuro dans le forum Requêtes et SQL.
    Réponses: 5
    Dernier message: 02/08/2008, 18h51
  4. [Dates] Afficher les jours du mois dans un formulaire
    Par Jimmy Monkey dans le forum Langage
    Réponses: 7
    Dernier message: 30/12/2007, 11h27
  5. Réponses: 2
    Dernier message: 26/12/2006, 12h49

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