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 :

Format date : La date affichée n'as rien à voir avec la valeur indiquée


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2009
    Messages
    21
    Détails du profil
    Informations forums :
    Inscription : Mars 2009
    Messages : 21
    Points : 20
    Points
    20
    Par défaut Format date : La date affichée n'as rien à voir avec la valeur indiquée
    J'utilise le code suivant pour ajouter un format à des cellules :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ThisWorkbook.Worksheets("Feuil1").Range("A1:A5").Select
    Selection.NumberFormatLocal = "jj/mm/aaaa"
    Si je met dans une cellule : "02022009" je veux obtenir "02/02/2009"
    Or j'obtiens : 26/01/7436

    donc la je bloque..
    Merci de votre aide =)

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour

    Essayes cela

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.NumberFormat = "dd/mm/yyyy"
    Il faut penser US lorsque l'on est en vba.

    Philippe

  3. #3
    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 toukii Voir le message
    Si je met dans une cellule : "02022009" je veux obtenir "02/02/2009"
    Or j'obtiens : 26/01/7436
    Comment veux-tu qu'Excel devine que tu lui donnes une date alors que tu introduis un nombre?

    Le nombre que tu lui donnes, il le traduit correctement car le 26/01/7436 est bien le 2 022 008 ième jour après le 1/01/1900.

    Si c'est une question de ne pas devoir taper de séparateur, il faudra passer soit par un UserForm, soit par une procédure événementielle dans la feuille.

    Le jeu en vaut-il la chandelle?
    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!

  4. #4
    Membre actif Avatar de babybell
    Homme Profil pro
    Retraité Bancaire
    Inscrit en
    Septembre 2008
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Retraité Bancaire
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2008
    Messages : 495
    Points : 265
    Points
    265
    Par défaut
    Bonjour toukii, le forum

    S'il est vrai que les "/" posent problème, tu peux toujours mettre cela.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Selection.NumberFormat = "00-00-0000"
    , c'est pas ce que tu veux, mais c'est mieux que rien.

  5. #5
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Le problème ne vient pas de la c'est simplement que si tu donne un entier Npour ensuite le convertir en date excel te donne gentillement la date du Nème jour à partir du 1/01/1900.
    si tu met 32 il te donne 01/02/1900
    366 devient 01/01/1901

    Comme l'a justement dit AlainTech il faut une macro evènementiel

    Ou alors je croie que cela suffirait
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
     
    Dim cel As Range
    For Each cel In Range("A1:A5")
       cel = Left(cel, 2) & "/" & Right(cel, Len(cel) - 2)
       cel = Left(cel, 5) & "/" & Right(cel, Len(cel) - 5)
       cel.NumberFormatLocal = "jj/mm/aaaa"
    Next cel
    Après il fau bien que ta valeur commence par un 0

    Edit :Corection du code précédent et ajout de
    si ce n'est pas le cas il va te faloir un peu modifier ca

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Dim cel As Range, i As Integer
     
    For Each cel In Range("A1:A5")
        i = 8 - Len(cel)
       cel = Left(cel, 2 - i) & "/" & Right(cel, Len(cel) - 2 + i)
       cel = Left(cel, 5 - i) & "/" & Right(cel, Len(cel) - 5 + i)
       cel.NumberFormatLocal = "jj/mm/aaaa"
    Next cel
    « Il n'y a pas de recette miracle qui permet aux gens d’écrire des programmes corrects sans avoir à réfléchir. Il faut apprendre aux gens comment réfléchir »

  6. #6
    Membre actif Avatar de babybell
    Homme Profil pro
    Retraité Bancaire
    Inscrit en
    Septembre 2008
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Retraité Bancaire
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2008
    Messages : 495
    Points : 265
    Points
    265
    Par défaut
    Bonjour Krovax

    J'ai essayé, cela fonctionne bien, mais seulement pour le 02/02/2009 car si on met 03022009, il en ressort : 02/03/2009, à l'anglaise

  7. #7
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    Visiblement (selon la faq) il faut donner la date en format mm/dd/aaa le format francais et uniquement a l'affichage donc voilail suffit d'inverser les 2 premiers chiffres avec les deux suivant


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim cel As Range, i As Integer
    '
    For Each cel In Range("A1:A2")
        i = 8 - Len(cel)
       cel = Mid(cel, 2 - i + 1, 2) & "/" & Left(cel, 2 - i) & "/" & Right(cel, 4)
       cel.NumberFormatLocal = "jj/mm/aaaa"
     
    Next cel
    « Il n'y a pas de recette miracle qui permet aux gens d’écrire des programmes corrects sans avoir à réfléchir. Il faut apprendre aux gens comment réfléchir »

  8. #8
    Membre actif Avatar de babybell
    Homme Profil pro
    Retraité Bancaire
    Inscrit en
    Septembre 2008
    Messages
    495
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 69
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Retraité Bancaire
    Secteur : Associations - ONG

    Informations forums :
    Inscription : Septembre 2008
    Messages : 495
    Points : 265
    Points
    265
    Par défaut
    Effectivement, cela fonctionne, mais avec :Bonne journée

  9. #9
    Membre chevronné Avatar de Krovax
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    1 888
    Détails du profil
    Informations personnelles :
    Âge : 38
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 1 888
    Points : 2 168
    Points
    2 168
    Par défaut
    j'aivai commencé a utilisé un variable texte mais c'était des lignes inutiles, merci de m'avoir corrigé
    J'édite le code
    « Il n'y a pas de recette miracle qui permet aux gens d’écrire des programmes corrects sans avoir à réfléchir. Il faut apprendre aux gens comment réfléchir »

Discussions similaires

  1. Date qui s'affiche au format (00:00:00 CET 2011)
    Par Aymanus dans le forum JSF
    Réponses: 8
    Dernier message: 21/11/2011, 11h42
  2. [Dates] Format de la date affichée
    Par jfrsm dans le forum Langage
    Réponses: 8
    Dernier message: 27/08/2007, 17h43
  3. La date ne s'affiche pas sous le bon format
    Par Subkill dans le forum IHM
    Réponses: 4
    Dernier message: 21/03/2007, 18h06

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