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 de date


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Morbihan (Bretagne)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 123
    Par défaut Format de date
    le forum!


    Nouveau petit souci, j'ai constaté que l'une de mes macros me modifiait le format d'une date. Donc, j'ai par conséquent forcé le format de cette date comme suit : dd/mm/yyyy. Et rien n'y fait

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Encours.Sheets("EncoursAtelier").Range("D" & NumLigneOF & "") = Format(DateLivraison, "DD/MM/YYYY")
    Quoi faire d'autre????

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut Jeanvaljean44 et le forum
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Encours.Sheets("EncoursAtelier").Range("D" & NumLigneOF & "") .NumberFormat = "ddd/mmmm/yyyy"
    C'est le format de la cellule qu'il faut définir, pas celui de la date (quoique ça ne mange pas de pain
    A+

  3. #3
    Membre Expert
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Par défaut
    bonsoir ,

    Jeanvaljean44

    je suis pas sur que la solution à Gorfael, résolve ton probléme alors au cas où une question, déjà de quelle maniére sont modifiée tes dates ? et dans ton code quelles sont les opérations effectuées sur ces dates ?

  4. #4
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Morbihan (Bretagne)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 123
    Par défaut
    Salut Gorfae!

    Pour ce qui est du format de cellule, pas de soucis j'ai bien pris la précaution de le mette au format date souhaité c'est à dire dd/mm/yyyy.

    Salut JackOuYA!

    En fait ma date est récupérée à l'origine via un calendar renseignant une textBox située dans une Frame.
    Ensuite j'associe la valeur de la textbox à ma variable datelivraison définit dans mes options explicit.
    Et c'est seulement quand je souhaite copier datelivraison dans une cellule d'un calsseur EXCEL qui m'inverse le jour et le moi, seulement et seulement si le moi =< 12.

    Or en forçant mon format volontairement à mm/dd/yyyy il me met ma date au bon format : dd/mm/yyyy. mais c'est pas carré tout ça!!!!

    De plus mes paramètres régionaux de mon PC sont OK

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

    Informations forums :
    Inscription : Mai 2008
    Messages : 38
    Par défaut
    J'ai pas de solution à ton problème, mais juste une alternative...
    Regardez le topic "problème avec mon calendar"...j'ai exactement le même souci.
    Ma solution, mettre tout en version US et insérer le code suivant afin d'inverser les dd et mm:
    (pensez à changer la feuille et les colonne...)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
     'pour convertir en format francais
    Application.ScreenUpdating = False
    Dim Cellule_en_Cours
     
    For Each Cellule_en_Cours In Feuil3.Range("G2:I3000")
    If Not (Cellule_en_Cours.FormulaR1C1 = "") Then
    With Cellule_en_Cours
    .Value = DateValue(Mid(.Value, 1, 2) & "/" & Mid(.Value, 4, 2) & "/" & Mid(.Value, 7, 4))
    .NumberFormat = "dd/mm/yyyy"
    End With
    End If
    Next Cellule_en_Cours
    Range("I" & i).Select
    Application.ScreenUpdating = True

  6. #6
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut Jeanvaljean44 et le forum
    Ton Excel est bien Français, ainsi que tes options régionales ?
    Une fois que ta copie est "mauvaise", quel est le type de format de la cellule ?
    A+

  7. #7
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Morbihan (Bretagne)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 123
    Par défaut
    Bonsoir Gorfael!

    J'ai bien unbe version EXCEL en Français, mes paramètres régionaux OK!

    et mon format de cellue reste bien : dd/mm/yyyy....

  8. #8
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    tout celà est étrange... sauf si ....

    Je voudrais simplement que tu lances ton appli, entres une date, fasses un copier de ce que tu as dans ta textbox et nous montres ici le résultat (par coller), en nous précisant la date choisie au départ.

  9. #9
    Membre Expert
    Avatar de JackOuYA
    Inscrit en
    Juin 2008
    Messages
    1 040
    Détails du profil
    Informations forums :
    Inscription : Juin 2008
    Messages : 1 040
    Par défaut
    Bonsoir,


    jean..

    je comprends pas tout dans tes explication cela veut dire quoi :
    Ensuite j'associe la valeur de la textbox à ma variable datelivraison définit dans mes options explicit.
    ta variable datelivraison, est t'elle de type date ?

  10. #10
    Membre averti
    Profil pro
    Inscrit en
    Juillet 2008
    Messages
    16
    Détails du profil
    Informations personnelles :
    Âge : 51
    Localisation : France

    Informations forums :
    Inscription : Juillet 2008
    Messages : 16
    Par défaut
    Bonsoir,

    essaie de remplacer

    Par

    dans ta macro

    J'ai moi aussi rencontré ce problème d'inversion mois/jours avec le format "dd/mm/yyyy" et je l'ai résolu avec le format que je te propose et qui m'affiche bien jj/mm/aaaa dans ma cellule.

    Nat

  11. #11
    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
    A toutes fins utiles, sachez que la fonction CDate() utilise le format Local.

    Autrement dit, une String au format "dd/mm/yyyy", sur un PC en français, sera convertie en une date correcte pouvant être placée telle quelle dans une cellule Excel.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Encours.Sheets("EncoursAtelier").Range("D" & NumLigneOF & "") = CDate(DateLivraison)
    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!

  12. #12
    Rédacteur/Modérateur


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 125
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 125
    Billets dans le blog
    131
    Par défaut
    Bonjour

    Il faut noter que
    renvoie une chaine de caractères...

    Personnellement, si je dois gérer un cas pareil sur base d'une saisie dans un textbox, je vais faire en sorte que la valeur récupérée du textbox soit d'abord convertie en date, puis je la placerai dans ma cellule, quel que soit le format de celle-ci.

    Si la date du textbox est saisie sous la forme jj/mm/aa, j'aurai
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
        Dim MaDate As Date
     
        MaDate = DateSerial(Right(TextBox1.Value, 2), Mid(TextBox1.Value, 4, 2), Left(TextBox1.Value, 2))
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  13. #13
    Membre confirmé
    Homme Profil pro
    Inscrit en
    Décembre 2007
    Messages
    123
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 48
    Localisation : France, Morbihan (Bretagne)

    Informations forums :
    Inscription : Décembre 2007
    Messages : 123
    Par défaut
    Bonjour à tous....

    Je tiens déjà à vous remercier pour votre collaboration...car ça m'a permis d'avancer énormément sur le sujet....

    Après tous les idées propsées une fonctionne très bien à savoir :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Encours.Sheets("EncoursAtelier").Range("D" & NumLigneOF & "") = CDate(DateLivraison
    Encore merci AlainTech...

    @+

    Jeanvaljean44

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

Discussions similaires

  1. Format de date
    Par royrremi dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 01/06/2004, 17h32
  2. Détecter le format de date au démarrage
    Par stigma dans le forum Access
    Réponses: 2
    Dernier message: 20/02/2004, 11h04
  3. Réponses: 11
    Dernier message: 02/09/2003, 14h20
  4. Problème de Format de date
    Par titititi007 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/06/2003, 08h19
  5. Réponses: 3
    Dernier message: 06/05/2002, 18h24

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