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 :

Erreur format date (jour/mois)


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Futur Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    4
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Puy de Dôme (Auvergne)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 4
    Par défaut Erreur format date (jour/mois)
    Bonjour,

    Je fais face à un problème concernant le format d'une date lors d'une saisie dans un textbox.
    Je m'explique... quand je saisis une date type 12/04/1972 dans mon textbox, cela affiche dans mon tableur 04/12/1972. Vous vous doutez bien que c'est problématique.
    Alors je sais que VBA est "paramétré" au format US mais je n'arrive pas à trouver une parade... J'ai beau utiliser CDate ou DateSerial mais je n'y arrive pas.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub txtDateNaissance_Change()
     
       Dim Valeur As Byte
        txtDateNaissance.MaxLength = 10 'nb caractères maxi autorisés dans le textbox
       Valeur = Len(txtDateNaissance)
       If Valeur = 2 Or Valeur = 5 Then txtDateNaissance = txtDateNaissance & "/"
     
       End Sub


    Mais on est bien d'accord qu'avec ce code on inverse pas la saisie. J'ai essayé ce code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Private Sub txtDateNaissance_Initialize()
     
        txtDateNaissance = CDate(txtDateNaissance.Value)
     
    End Sub

    Mais rien ne se passe...

    Voici la suite du code qui me permet d'ajouter un personnel avec la date saisie :

    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
    Private Sub btnAjout_Click()
     
        If txtNom.Value = "" Then
            Else
            Dim Ligne As Integer
            If MsgBox("Confirmez-vous l'ajout des données?", vbYesNo + vbQuestion, "Ajout de personnel") = vbYes Then
                MsgBox "Nouveau personnel ajouté", vbOKOnly + vbInformation, "CONFIRMATION"
                Worksheets("Source").Select
                Ligne = Sheets("Source").Range("A456541").End(xlUp).Row + 1
                Cells(Ligne, 1) = txtNom.Value
                Cells(Ligne, 2) = txtPrénom.Value
                Cells(Ligne, 3) = txtDateNaissance.Value
                Cells(Ligne, 4) = txtLieuNaissance.Value
                Cells(Ligne, 5) = txtSécuritéSociale.Value
                Cells(Ligne, 6) = txtEmbauche.Value
                Cells(Ligne, 7) = cboContrat.Value
                Cells(Ligne, 8) = cboService.Value
                Cells(Ligne, 9) = cboFonction.Value
                Cells(Ligne, 10) = cboCatégorie.Value
                Cells(Ligne, 11) = txtPorteur.Value
                Cells(Ligne, 12) = cboSygid.Value
                Cells(Ligne, 13) = cboFormationRadioprotection.Value
                Cells(Ligne, 14) = cboEtat.Value
                Cells(Ligne, 15) = txtVisiteMédicale.Value
     
     
            Else
            End If
    En vous remerciant par avance

  2. #2
    Membre Expert
    Homme Profil pro
    Ingénieur développement matériel électronique
    Inscrit en
    Septembre 2013
    Messages
    783
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Activité : Ingénieur développement matériel électronique
    Secteur : High Tech - Électronique et micro-électronique

    Informations forums :
    Inscription : Septembre 2013
    Messages : 783
    Par défaut
    Bonjour,

    Vous pouvez regarder ce post: https://www.developpez.net/forums/d9...rmat-date-vba/
    Bonne continuation

  3. #3
    Expert confirmé
    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

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    bonjour
    prends un fichier vierge et teste ca et essaie de comprendre la difference quand on injiecte le string d'une date ou une date dans une cellule
    Injection en date
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub test1()
    'on injecte une date sous forme de date
    'Columns("C:D").NumberFormat = "dd/mm/yyyy;"
    [c2] = CDate("02/05/2018")
    [D2] = CDate("12/05/2018")
    [c3] = CDate("08/12/2018")
    [D3] = CDate("15/06/2018")
    End Sub
    Injection en string
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub test2()
    'on injecte une date sous forme de string
    'Columns("C:D").NumberFormat = "mm/dd/yyyy;"
    [c2] = ("02/05/2018")
    [D2] = ("12/05/2018")
    [c3] = ("08/12/2018")
    [D3] = ("15/06/2018")
    End Sub
    teste les deux et regarde le resultat
    maintenant debloque les ligne 3 des deux code et reteste
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Membre Expert
    Inscrit en
    Octobre 2010
    Messages
    1 401
    Détails du profil
    Informations forums :
    Inscription : Octobre 2010
    Messages : 1 401
    Par défaut
    Bonjour.

    Lorsqu'on ecrit une date dans une cellule a partir de VBA,
    il faut porter une attention particuliere a la propriete Numberformat de la cellule.
    A la ligne 3 on voit que si la date ecrite est de type String, le resultat est correct uniquement dans la cellule dont la propriete Numberformet est Texte.
    A la ligne 5 on voit que si la date ecrite est de type Date, le resultat est correct uniquement dans les cellules dont la propriete Numberformet est Date ou numerique.

    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
    37
    38
    39
    40
    41
    42
    Sub main()
     
    Range("A1:E5").Clear
     Dim v1 As String
     ligne = 3
     Call EcrireDates(ligne, v1)
     Stop
     
     Dim v2 As Date
     ligne = 5
     Call EcrireDates(ligne, v2)
     Stop
     
    End Sub
    Sub EcrireDates(ligne, valeur)
     
    valeur = "12/05/2017"
     
    Cells(1, "a") = CLng(CDate(valeur))
    Cells(ligne, "b") = TypeName(valeur)
    Cells(ligne, "a") = "'" & valeur
     
    Cells(ligne, "e").NumberFormat = "0.00"
    Cells(ligne, "c").NumberFormat = "@"
    Cells(ligne, "d").NumberFormat = "dd/mm/yyyy"
     
    Cells(1, "C") = "'" & Cells(ligne, "C").NumberFormat
    Cells(1, "D") = "'" & Cells(ligne, "D").NumberFormat
    Cells(1, "e") = "'" & Cells(ligne, "e").NumberFormat
     
     ReDim t(1 To 3)
     t(1) = valeur
     t(2) = valeur
     t(3) = valeur
     
     'Range(Cells(ligne, "C"), Cells(ligne, "E")).Value = t
     
    Cells(ligne, "C").Value = t(1)
    Cells(ligne, "D").Value = t(2)
    Cells(ligne, "e").Value = t(3)
     
    End Sub

  6. #6
    Expert confirmé Avatar de hyperion13
    Homme Profil pro
    Webplanneur
    Inscrit en
    Octobre 2007
    Messages
    4 290
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Réunion

    Informations professionnelles :
    Activité : Webplanneur

    Informations forums :
    Inscription : Octobre 2007
    Messages : 4 290
    Par défaut
    Salut Jeremy253,
    J'ai déjà rencontré ce problème avec les formats dates US quand on saisie une date jj/mm/aaaa dans une TextBox
    Je l'ai contourné en passant par
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    CDate(DateBox.Text) au lieu de CDate(DateBox.Value)
    et ça fonctionne.
    Et pourquoi dans la 1ère proc contrôler
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    txtDateNaissance.MaxLength = 10
    ? La propriété existe dans les propriétés de la TextBox !

Discussions similaires

  1. Format date jour du mois en lettres
    Par Mykhell dans le forum SQL
    Réponses: 8
    Dernier message: 08/04/2009, 12h29
  2. [Dates] Formater un jour, mois, année en date
    Par piotrr dans le forum Langage
    Réponses: 7
    Dernier message: 16/10/2007, 13h49
  3. [MySQL] Tri sur champ au format date - uniquement mois/année
    Par skippy86 dans le forum PHP & Base de données
    Réponses: 5
    Dernier message: 04/01/2007, 11h27
  4. [Dates] jour, mois d'une date en Français
    Par Ismail dans le forum Langage
    Réponses: 1
    Dernier message: 01/12/2006, 22h30
  5. [Dates] Jour Mois anné, heure minute et seconde...
    Par SangKou dans le forum Langage
    Réponses: 4
    Dernier message: 29/11/2005, 08h34

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