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

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Inscrit en
    Octobre 2010
    Messages
    2
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 2
    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 expérimenté
    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
    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 chevronné
    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
    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
    Par défaut
    Bonjour,

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

    Merci!

  5. #5
    Membre chevronné
    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
    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 Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    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 : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    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.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

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