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 :

Macro et Date au format anglosaxon [Toutes versions]


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau membre du Club
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Juillet 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2014
    Messages : 46
    Points : 29
    Points
    29
    Par défaut Macro et Date au format anglosaxon
    Bonjour,
    J'ai un petit pépin,
    j'utilise un code qui me demande une date via inputbox, et qui la renvoi dans une cellule. Le probleme c'est que soudainement, il retranscrit la date en inversant le mois et les jours. Ex si je tape 11/09/2015 il écrit dans la cellule 9 Novembre 2015 !

    Voici le code que j'utilise:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    Demande_Confirmation = MsgBox("Livraison pour le:" & Chr(10) & Chr(10) & _
        Worksheets("Aide a la commande").Range("C3").Value & "?" & Chr(10) & Chr(10) & Chr(10) & Chr(10) _
        , vbQuestion + vbYesNo + vbDefaultButton1, "Confirmer ?")
     
    ' si la date est OK continuer 
        If (Demande_Confirmation) = vbYes Then GoTo Suite
     
     
    ' si la date est incorrecte entrer une nouvelle date
    saisie_date:
     
        Date_Liv = InputBox(Chr(13) & Chr(10) & Chr(13) & Chr(10) & "      Saisissez la date de livraison", _
                "Date de livraison")
     
     
            If Not IsDate(Date_Liv) Then
                MsgBox "Format de date saisie incorrect !"
                GoTo saisie_date
                End If
     
     
            If CDate(Date_Liv) < Date Then
                MsgBox "La date doit être supérieure à la date d'aujourd'hui !"
                GoTo saisie_date
                End If
     
     
            If Date_Liv <> Format(Date_Liv, "dd/mm/yyyy") And Date_Liv <> Format(Date_Liv, "dddd dd/mm") And Date_Liv <> Format(Date_Liv, "dd/mm/yy") _
                Then
                MsgBox "le format doit être jj/mm/aaaa !"
                GoTo saisie_date
                End If
     
            Range("C3").Select
            Range("C3") = Date_Liv
            Range("C3") = Format(ActiveCell.Value, "dddd dd mmm")
    Une idée?

  2. #2
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
     
    do
        Date_Liv = InputBox(vbcrlf & vbcrlf & "      Saisissez la date de livraison",  "Date de livraison")
        if Date_Liv <>"" then
          If CDate(format(Date_Liv,"yyyy-mm-dd")) >= Date Then exit do
       end if
       MsgBox "La date doit être supérieure à la date d'aujourd'hui !"
    loop
     
     
           ' If Date_Liv <> Format(Date_Liv, "dd/mm/yyyy") And Date_Liv <> Format(Date_Liv, "dddd dd/mm") And Date_Liv <> Format(Date_Liv, "dd/mm/yy") _
            '    Then
           '     MsgBox "le format doit être jj/mm/aaaa !"
           '     GoTo saisie_date
          '      End If
     
           ' Range("C3").Select
            Range("C3") = Format(Date_Liv,"yyyy-mm-dd")
           ' Range("C3") = Format(ActiveCell.Value, "dddd dd mmm")
    Dernière modification par Invité ; 11/09/2015 à 10h18.

  3. #3
    Nouveau membre du Club
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Juillet 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2014
    Messages : 46
    Points : 29
    Points
    29
    Par défaut
    Merci pour ta réponse rapide.

    Mais ca ne fonctionne pas. Le seul cas ou la date est dans le bon ordre, c'est quand les jours sont supérieurs à 12 (ex 13/09/2015)

  4. #4
    Invité
    Invité(e)
    Par défaut
    fais ce teste la pour accéder à la fenêtre d’exécution raccourci clavier [Ctrl] + [G]
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Test()
    Date_Liv="1/2/15"
    debug.print Format(Date_Liv,"yyyy-mm-dd")
    debug.print cdate(Format(Date_Liv,"yyyy-mm-dd"))
    end sub

  5. #5
    Nouveau membre du Club
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Juillet 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2014
    Messages : 46
    Points : 29
    Points
    29
    Par défaut
    J'ai pas bien compris ce que je doit faire de ce code? Je le mets où?

  6. #6
    Invité
    Invité(e)
    Par défaut
    tu colle ce code dans un module
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Test()
    Date_Liv="1/2/15"
    debug.print Format(Date_Liv,"yyyy-mm-dd")
    debug.print cdate(Format(Date_Liv,"yyyy-mm-dd"))
    end sub
    tu l’exécute touche [F5]

    et tu regarde le résultat dans la fenêtre d’exécution touche clavier [Ctrl] + [g]

  7. #7
    Nouveau membre du Club
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Juillet 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2014
    Messages : 46
    Points : 29
    Points
    29
    Par défaut
    Voici le résultat:

    2015-02-01
    01/02/2015

  8. #8
    Invité
    Invité(e)
    Par défaut
    donc le format international fonctionne "yyyy-mm-dd"! il n'y a pas d'inversion "mm/jj"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Range("C3").NumberFormat = "General"
     Range("C3") = Format(Date_Liv,"yyyy-mm-dd")

  9. #9
    Nouveau membre du Club
    Homme Profil pro
    Directeur commercial
    Inscrit en
    Juillet 2014
    Messages
    46
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Directeur commercial
    Secteur : Alimentation

    Informations forums :
    Inscription : Juillet 2014
    Messages : 46
    Points : 29
    Points
    29
    Par défaut
    Oufff ca fonctionne.

    J'ai pas bien compris pourquoi mais c'est parfait !

    Merci beaucoup

  10. #10
    Expert éminent sénior
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Points : 11 274
    Points
    11 274

  11. #11
    Invité
    Invité(e)
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Range("C3").NumberFormat = "General" 'ici tu suprime ton format à la [C] [O] [N] en le passant à standard!
    Range("C3") = Format(Date_Liv,"yyyy-mm-dd")'ici tu passe ta date au format internationale et tu laisse Excel interpréter le format de cellule!
    là tu fais une boucle tant que la date n'est pas valide car un goto c'est pas joli et à proscrire!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    do
        Date_Liv = InputBox(vbcrlf & vbcrlf & "      Saisissez la date de livraison",  "Date de livraison")
        if Date_Liv <>"" then
          If CDate(format(Date_Liv,"yyyy-mm-dd")) >= Date Then exit do
       end if
       MsgBox "La date doit être supérieure à la date d'aujourd'hui !"
    loop
    un informaticien c'est un fainéant et je sais de quoi je parle; évite le code inutile!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    if MsgBox("Livraison pour le:" & Chr(10) & Chr(10)  &    Worksheets("Aide a la commande").Range("C3").Value & "?" & Chr(10) &   
    Chr(10) & Chr(10) & Chr(10)   , vbQuestion + vbYesNo + vbDefaultButton1, "Confirmer ?") = vbNo then exit sub
    ton code doit être tassé pour le visualiser d'un seule regard! supprime les retours chariots et indente ton code!

    bien sur ce code n'est pas le bon c'est pour l'exemple!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    Demande_Confirmation = MsgBox("Livraison pour le:" & Chr(10) & Chr(10) & _
    Worksheets("Aide a la commande").Range("C3").Value & "?" & Chr(10) & Chr(10) & Chr(10) & Chr(10) _
    , vbQuestion + vbYesNo + vbDefaultButton1, "Confirmer ?")
    ' si la date est OK continuer
    If (Demande_Confirmation) = vbYes Then GoTo Suite
    ' si la date est incorrecte entrer une nouvelle date
    saisie_date:
    Date_Liv = InputBox(Chr(13) & Chr(10) & Chr(13) & Chr(10) & "      Saisissez la date de livraison", _
    "Date de livraison")
    If Not IsDate(Date_Liv) Then
        MsgBox "Format de date saisie incorrect !"
        GoTo saisie_date
    End If
    If CDate(Date_Liv) < Date Then
        MsgBox "La date doit être supérieure à la date d'aujourd'hui !"
        GoTo saisie_date
    End If
    If Date_Liv <> Format(Date_Liv, "dd/mm/yyyy") And Date_Liv <> Format(Date_Liv, "dddd dd/mm") And Date_Liv <> Format(Date_Liv, "dd/mm/yy") _
    Then
        MsgBox "le format doit être jj/mm/aaaa !"
        GoTo saisie_date
    End If
    Range("C3").Select
    Range("C3") = Date_Liv
    Range("C3") = Format(ActiveCell.Value, "dddd dd mmm")
    un code aéré est incompréhensible!

    autant que faire ce peu on placera le commentaire en fin de ligne et on tentera de réduire la taille du code!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    Demande_Confirmation = MsgBox("Livraison pour le:" & Chr(10) & Chr(10) & _
    Worksheets("Aide a la commande").Range("C3").Value & "?" & Chr(10) & Chr(10) & Chr(10) & Chr(10) _
    , vbQuestion + vbYesNo + vbDefaultButton1, "Confirmer ?")
    If (Demande_Confirmation) = vbYes Then GoTo Suite ' si la date est OK continuer
    saisie_date:
    Date_Liv = InputBox(Chr(13) & Chr(10) & Chr(13) & Chr(10) & "      Saisissez la date de livraison", _
    "Date de livraison") ' si la date est incorrecte entrer une nouvelle date
    If Not IsDate(Date_Liv) Then MsgBox "Format de date saisie incorrect !":         GoTo saisie_date
    If CDate(Date_Liv) < Date Then MsgBox "La date doit être supérieure à la date d'aujourd'hui !":        GoTo saisie_date
    End If
    If Date_Liv <> Format(Date_Liv, "dd/mm/yyyy") And Date_Liv <> Format(Date_Liv, "dddd dd/mm") And Date_Liv <> Format(Date_Liv, "dd/mm/yy") Then _
        MsgBox "le format doit être jj/mm/aaaa !": GoTo saisie_date
    Range("C3").Select
    Range("C3") = Date_Liv
    Range("C3") = Format(ActiveCell.Value, "dddd dd mmm")
    si il faut utiliser la barre de défilement pour lire la totalité du la sub ça veut dire qu'il faut découper le code!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    if a=false then
           call subAfalse(argument)
    else
          call SubAtrue(argument)
    end if
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    If MsgBox("Livraison pour le:" & Chr(10) & Chr(10) & Worksheets("Aide a la commande").Range("C3").Value & "?" & Chr(10) & _
    Chr(10) & Chr(10) & Chr(10), vbQuestion + vbYesNo + vbDefaultButton1, "Confirmer ?") = vbNo Then Exit Sub 'On demande à l 'utilisateur si il veut exécuter l'action !
    Do 'Ici on saisie une date de livraison et on boucle tant que ce n'est pas une date valide !
        Date_Liv = InputBox(vbCrLf & vbCrLf & "      Saisissez la date de livraison", "Date de livraison")
        If Date_Liv <> "" Then
          If CDate(Format(Date_Liv, "yyyy-mm-dd")) >= Date Then Exit Do
       End If
       MsgBox "La date doit être supérieure à la date d'aujourd'hui !"
    Loop
    Range("C3").NumberFormat = "General" 'ici tu suprime ton format à la [C] [O] [N] en le passant à standard!
    Range("C3") = Format(Date_Liv, "yyyy-mm-dd") 'ici tu passe ta date au format internationale et tu laisse Excel interpréter le format de cellule!
    Dernière modification par Invité ; 11/09/2015 à 12h54.

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

Discussions similaires

  1. [AC-2000] macro pour changer le format d'une date
    Par zandeparis dans le forum VBA Access
    Réponses: 3
    Dernier message: 04/11/2009, 12h13
  2. Réponses: 1
    Dernier message: 07/06/2005, 14h00
  3. Tri dans une DBGrid sur un champ date au format jj/mm
    Par Jeankiki dans le forum Bases de données
    Réponses: 10
    Dernier message: 31/10/2004, 12h32
  4. [Date] Comparer des dates au format mySQL "date
    Par Marc_P dans le forum Collection et Stream
    Réponses: 3
    Dernier message: 25/10/2004, 15h15
  5. Convertir une date au format excel en datetime SQL server
    Par ALLB dans le forum MS SQL Server
    Réponses: 8
    Dernier message: 20/07/2004, 11h28

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