Petite question sur des dates dans texbox

Bonjour à tous,

Je viens vers vous car j’ai petite question à vous poser dans l’exemple du classeur que je mets à disposition dans mon UserForm j’ai deux textbox.

La première reçoit une date avec le bon format cela fonctionne pas de souci pour exemple si vous mettez la date suivante dans la première textbox :03/05/2020 et dans la seconde vous rentrez la date suivante :01/06/2020

Dans la seconde la date s’efface avec la formule que j’ai mis dedans je voudrais savoir si il était possible que la formule se concentre aussi sur le jour et le mois en plus de l’année.

Car si je rentre plusieurs dates de la même année elle va s’effacer automatiquement hors j’ai besoin de pouvoir rentrer des dates supérieures au premier exemple comme on pourrait rentrer dans la seconde textbox la date suivante :04/05/2020 par contre là où il joue bien le rôle ces si on met une date inférieure exemple 02/05/2020 la elle ne doit pas s’afficher.

Pouvez-vous m’aider s’il vous plaît.
Date_dans_textbox.xlsm (20,3 Ko)

Bonjour au forum,
petite précision message précédent au niveau des dates cela se joue au jour près c’est-à-dire que si la date dans la textbox1 exemple :02/03/2020 quand je vais rentrer une date dans la textbox2 exemples :03/03/2020 elle doit me laisser rentrer cette possibilité par contre si je rentre une date inférieure exemple :01/03/2020 là elle doit effacer la date automatiquement comme je l’ai mis dans le code VBA vous verrai dans le classeur.

Bonjour

Ton fichier adapté

J’ai corrigé cette ligne de code :

If Me.TextBox2.Value < Me.TextBox1.Value Or Me.TextBox2.Value = Me.TextBox1.Value Then

ainsi

If CDate(Me.TextBox2.Value) < CDate(Me.TextBox1.Value) Or CDate(Me.TextBox2.Value) = CDate(Me.TextBox1.Value) Then

J’ai rajouté la condition suivante :

If Me.TextBox2.Value <> «  » And Me.TextBox1.Value <> «  » Then
pour ne pas traiter le cas ou un des 2 textbox n’a pas de valeur car l’instruction Cdate en a horreur (bug)

Petite remarque pas facile du tout la saisie des date avec le caractère « / » qui se met automatiquement
C’est contraire au réflexe
Lorsque l’on saisit une date c’est machinal de saisir les « / »
Donc le contexte de ta saisie demande une forte concentration
Autre remarque le résultat ne s’exécute qu’à la sortie du Textbox2 et non du Textbox1
Peut être la même procédure à la sortie des 2 textbox sinon toujours obligé de rentrer dans le textbox2 et d’en ressortir même si aucune saisie c’est un peu dommage

A toi de voir

Ton fichier ci-après
Testes et dis moi

Date_dans_textbox.xlsm (21,7 Ko)

Bonsoir,

Je te remercie encore une fois de te pencher sur mon problème je n’arrive pas à comprendre ce que tu veux me dire dans la seconde partie de ton message

Lorsque l’on saisit une date c’est machinal de saisir les « / »
Donc le contexte de ta saisie demande une forte concentration
Autre remarque le résultat ne s’exécute qu’à la sortie du Textbox2 et non du Textbox1
Peut être la même procédure à la sortie des 2 textbox sinon toujours obligé de rentrer dans le textbox2 et d’en ressortir même si aucune saisie c’est un peu dommage

Dans le paragraphe précédent c’est ce que tu me mets comme message je comprends l’histoire des / par contre je ne comprends pas l’histoire de la textbox peux tu me faire un exemple de la façon dont tu parles s’il te plaît.

Je te passe le dossier qui concerne cela dans UserForm2 pour les dates si tu peux regarder car la textbox28 j’ai un message d’erreur mais je ne comprends pas pourquoi merci de ton aide.XLD_Dubarre_Gestion_des_Artistes_vBéta2aide.xlsm (717,0 Ko)

Je m’explique

Si je saisis une date en textbox1 puis en textbox2 de telle façon que la textbox2 soit vidée de sa valeur car celle-ci est inférieur à la première l’opération qui consiste à supprimer la date du textbox2 se fait immédiatement à la sortie du textbox2 dernier saisi en tout 2 opérations :

On remplit Textbox1 puis Texbox2 :

image

Puis je sort de Textbox2 celui-ci est vidé :

image

Maintenant si j’ai 2 dates saisi dans les 2 Textbox de telle façon que la date de Texbox2 est supérieur à la date de Textbox1 celle de Textbox2 est maintenue
J’interviens sur la date de Textbox1 pour inverser la situation et rendre Textbox2 inférieur à texbox1
La suppression de la date de Textbox2 ne se fera que lorsque je serais d’abord sortit de Textbox1 entrée dans Textbox2 puis ressortit de textbox2 soit 3 opération :

situation initiale :

image

Je modifie la date de Texbox1 pour que Textbox2 soit inférieur à Textbox1 (1°opération):

image

je sors de Textbox1 pour entrer dans Textbox2 (2° opération)

image

Toujours pas d’effacement de la date du Textbox2

Je ressort de Textbox2 sans la moindre saisie (3° opération) et la date Textbox2 est effacé

image

Il a fallu 3 opérations pour obtenir l’effacement de la date en Textbox2 car ta procédure qui le réalise n’est que dans la sortie du Textbox2 et non dans celle du Textbox1

Cette procédure :

Private Sub TextBox2_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Me.TextBox2.Value <> «  » And Me.TextBox1.Value <> «  » Then
If CDate(Me.TextBox2.Value) < CDate(Me.TextBox1.Value) Or CDate(Me.TextBox2.Value) = CDate(Me.TextBox1.Value) Then
Me.TextBox2.Value = «  »
End If
End If

End Sub

tu pourrais faire l’équivalent comme ceci :

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Me.TextBox2.Value <> «  » And Me.TextBox1.Value <> «  » Then
If CDate(Me.TextBox2.Value) < CDate(Me.TextBox1.Value) Or CDate(Me.TextBox2.Value) = CDate(Me.TextBox1.Value) Then
Me.TextBox2.Value = «  »
End If
End If

End Sub

Et ainsi évité des aller retour dans les Textbox en fonction de celui qui est saisi ou modifié

C’est qu’une suggestion car avec ce que tu as réalisé on arrive toujours au résultat
Juste un petit confort ni plus ni moins

A ta dispo pour plus de précisions

Bonsoir j’ai compris maintenant ce que tu voulais dire j’ai essayé de mettre en application justement voilà ce que j’ai fait il y a un problème avec la textbox26 quand il y a déjà une date d’inscrites que je fais tab pour aller à la textbox suivante il efface la textbox26 et j’avoue que la je n’arrive pas à trouver d’où ça vient. Peux tu m’aider s’il te plaît

`Private Sub TextBox26_Change()

Dim valeur As Byte

TextBox26.MaxLength = 10 'nb caractères maxi autorisé dans le textbox
valeur = Len(TextBox26)
    If valeur = 2 Or valeur = 5 Then
        TextBox26 = TextBox26 & "/"
    End If

Me.TextBox26.Value = UCase(Me.TextBox26.Value)

If Me.TextBox26.Value <> "" Then   ' si un item est sélectionné (visible)
    Me.TextBox19.Value = "X"            ' incrit le x
Else
    Me.TextBox19.Value = ""             ' sinon supprime le x

'-------------------------------------------------------------------------
'Code permettant de mettre une date au format 00/00/0000 dans une textbox.
'-------------------------------------------------------------------------

End If

End Sub

Private Sub TextBox26_Exit(ByVal Cancel As MSForms.ReturnBoolean)

If Me.TextBox29.Value <> «  » And Me.TextBox26.Value <> «  » Then

If CDate(TextBox29.Value) < CDate(TextBox26.Value) Or CDate(TextBox29.Value) = CDate(TextBox26.Value) Then
TextBox29.Value = «  »
End If
End If

If Me.TextBox26.Value <> «  » And Me.TextBox27.Value <> «  » Then

If CDate(TextBox26.Value) < CDate(TextBox27.Value) Or CDate(TextBox26.Value) = CDate(TextBox27.Value) Then
TextBox26.Value = «  »
End If
End If

If Me.TextBox26.Value <> «  » And Me.TextBox28.Value <> «  » Then

If CDate(TextBox26.Value) < CDate(TextBox28.Value) Or CDate(TextBox26.Value) = CDate(TextBox28.Value) Then
TextBox26.Value = «  »
End If
End If

End Sub

Private Sub TextBox27_Change() ’ idem que la précédente

Dim valeur As Byte
TextBox27.MaxLength = 10 'nb caractères maxi autorisé dans le textbox
valeur = Len(TextBox27)
If valeur = 2 Or valeur = 5 Then
TextBox27 = TextBox27 & « / »
End If
Me.TextBox27.Value = UCase(Me.TextBox27.Value)

If Me.TextBox27.Value <> «  » Then
Me.TextBox20.Value = « X »
Else
Me.TextBox20.Value = «  »
End If

End Sub

Private Sub TextBox27_Exit(ByVal Cancel As MSForms.ReturnBoolean)

If Me.TextBox27.Value <> «  » And Me.TextBox26.Value <> «  » Then

If CDate(TextBox27.Value) < CDate(TextBox26.Value) Or TextBox27.Value = CDate(TextBox26.Value) Then
TextBox27.Value = «  »
End If
End If

End Sub

Private Sub TextBox28_Change() ’ idem que la précédente

Dim valeur As Byte
TextBox28.MaxLength = 10 'nb caractères maxi autorisé dans le textbox
valeur = Len(TextBox28)
If valeur = 2 Or valeur = 5 Then
TextBox28 = TextBox28 & « / »
End If
Me.TextBox28.Value = UCase(Me.TextBox28.Value)

If Me.TextBox28.Value <> «  » Then
Me.TextBox21.Value = « X »
Else
Me.TextBox21.Value = «  »
End If

End Sub

Private Sub TextBox28_Exit(ByVal Cancel As MSForms.ReturnBoolean)

If Me.TextBox28.Value <> «  » And Me.TextBox26.Value <> «  » Then

If CDate(TextBox28.Value) < CDate(TextBox26.Value) Or CDate(TextBox28.Value) = CDate(TextBox26.Value) Then
TextBox28.Value = «  »
End If
End If

If Me.TextBox28.Value <> «  » And Me.TextBox27.Value <> «  » Then

If CDate(TextBox28.Value) < CDate(TextBox27.Value) Or CDate(TextBox28.Value) = CDate(TextBox27.Value) Then
TextBox28.Value = «  »
End If
End If

End Sub

Private Sub TextBox29_Change() ’ idem que la précédente

Dim valeur As Byte
TextBox29.MaxLength = 10 'nb caractères maxi autorisé dans le textbox
valeur = Len(TextBox29)
If valeur = 2 Or valeur = 5 Then
TextBox29 = TextBox29 & « / »
End If
Me.TextBox29.Value = UCase(Me.TextBox29.Value)

If Me.TextBox29.Value <> «  » Then
Me.TextBox22.Value = « X »
Else
Me.TextBox22.Value = «  »
End If

End Sub
`

Peux tu me transmettre ce fichier pour que je l étudie
Merci

Bonjour voici le classeur concerné il y a deux UserForm qui doivent recevoir ses dates j’ai mis le même code dans les deux cela fonctionne dans l’UserForm2 pas dans le premier pouvez-vous jeter un œil s’il vous plaît en vous remerciant. XLD_Dubarre_Gestion_des_Artistes_vBéta2aide.xlsm (683,8 Ko)

Bonjour

Je ne vois pas le souci
J’ai réalisé une saisie jusqu’à la Textbox26 (1° date à saisir) pour laquelle j’ai renseigné une date puis tabulé le curseur s’est intégré dans la Textbox27 (2° date à saisir) sans supprimer la date saisie en Textbox26
Je ne vois pas le défaut que tu constates
Que fais tu exactement pour l’avoir
Merci de me dire

image

Bonjour désolé je n’ai pas précisé correctement les choses en faite quand on va sur la date membre associée que l’on rentrait dates inférieures à celle au-dessus il ne l’efface pas par contre ça fonctionne avec la date membre et je n’arrive pas avoir d’où vient problème excusait-moi pour cet oubli!
Alors que ça fonctionne correctement sur le UserForm2
Capture|494x222

Je n’ai rien touché à ce que j’ai fait sur le UserForm2 ça fonctionnait et ça ne veut plus fonctionner c’est à perdre son latin pourrait tu vérifier ce UserForm2 de désolé du dérangement cordialement

En regardant la procédure qui réagit à la sortie du Textbox27 :

Private Sub TextBox27_Exit(ByVal Cancel As MSForms.ReturnBoolean)

If Me.TextBox26.Value <> «  » And Me.TextBox27.Value <> «  » And Me.TextBox28.Value <> «  » Then

If CDate(Me.TextBox27.Value) < CDate(Me.TextBox26.Value) Or CDate(Me.TextBox27.Value) = CDate(Me.TextBox26.Value) Or _
CDate(Me.TextBox28.Value) < CDate(Me.TextBox27.Value) Or CDate(Me.TextBox28.Value) = CDate(Me.TextBox27.Value) Then
’ CDate(TextBox29.Value) < CDate(TextBox28.Value) Or CDate(TextBox29.Value) = CDate(TextBox28.Value)
'TextBox26.Value = «  »
TextBox27.Value = «  »
'TextBox28.Value = «  »
'TextBox29.Value = «  »
End If
End If

cette condition vérifie pour que la suite du traitement se réalise et donc l’effacement de la date dans ce Textbox que :
La Texbox26 soit avec une donnée
La Texbox27 soit avec une donnée
La Texbox28 soit avec une donnée

If Me.TextBox26.Value <> «  » And Me.TextBox27.Value <> «  » And Me.TextBox28.Value <> «  » Then

Dans ta copie d’écran transmise seuls les 2 premières Textbox ont une données pas la 3°

Normal donc que rien ne se passe

Si tu mets une date dans la Texbox28 puis tu mets la date dans la Textbox27 inférieur à celle de la Texbox26 la Textbox27 se vide comme attendu

Si tu souhaites prendre en compte l’état des Textbox 2 à 2 il faut mettre comme ceci :

If Me.TextBox26.Value <> «  » And Me.TextBox27.Value <> «  » Then
If CDate(Me.TextBox27.Value) < CDate(Me.TextBox26.Value) Or CDate(Me.TextBox27.Value) = CDate(Me.TextBox26.Value) Then
TextBox27.Value = «  »
End If
End If
If Me.TextBox27.Value <> «  » And Me.TextBox28.Value <> «  » Then
If CDate(Me.TextBox28.Value) < CDate(Me.TextBox27.Value) Or CDate(Me.TextBox28.Value) = CDate(Me.TextBox27.Value) Then
TextBox27.Value = «  »
End If
End If

Ci-joint ton fichier adapté ainsi

XLD_Dubarre_Gestion_des_Artistes_vBéta2aide2.xlsm (690,2 Ko)

Même souci

Ton fichier corrigé pour le Userform2
Testes et dis moi

XLD_Dubarre_Gestion_des_Artistes_vBéta2aide2.xlsm (683,2 Ko)

Je suis désolé je vais encore embêter dans la situation suivante si on met une date dans boursier et date dans membre inférieur sans qu’il y ait rien dans membre associé ça ne prend pas en charge j’ai essayé de regarder par rapport à ce que tu m’as expliqué mais je suis désolé je n’arrive pas avoir démens peut-être que j’ai trop les yeux dessus à force je n’arrive pas à trouver. Pour ne plus te embêter je m’étais vraiment expliqué comment ça fonctionne je fais parti d’une association et en faite elle existe depuis 1956 donc ils doivent rentrer des artistes ultérieures donc par exemple dans les premières années il n’y avait pas de boursier les artistes les artistes étaient directement membres ensuite ils ont été membres associés et par exemple certains ne sont pas passés membre est décédé avant ensuite il y a les boursiers qui ont été créés donc il y a des personnes qui ont été boursier et son décédé ou alors boursier membre associé et son décédé les trois et son décédés voilà les possibilités que doit prendre le code je suis vraiment désolé de ce dérangement cela marche pour le UserForm1 mais aussi pour le UserForm2

Je voulais apporter une précision malheureusement le décès peut arriver n’importe quand donc le décès doit prendre compte des trois autres dates sachant comme je l’ai dit précédemment dans le paragraphe au-dessus au début de l’association les gens étaient membres ensuite membres associés et membre et par la suite boursier membre associé et membre.

en te remerciant énormément de ta patience.Capture Capture2

Ci-joint ton fichier remis d’aplomb et testé
Pour moi tout fonctionne au niveau des dates
Celles-ci pour être maintenues doivent être de la 1° date à la dernière (de haut en bas) dans une progression ascendante (la 1° inférieur à la 2° elle même inférieur à la 3° elle même inférieur à la 4°)
Si l’une d’entre elle ne respecte pas cette progression la dernière saisie qui en est à l’origine est supprimée
Cette disposition est en place pour les 2 Userform (1 et 2)
Fais des tests
Si anomalie merci de me la mettre en copie d’écran pour que je puisse la reproduire
Donnes moi des nouvelles

XLD_Dubarre_Gestion_des_Artistes_vBéta2aide2.xlsm (699,4 Ko)

Je regarde et je fais déteste et je te tiens au courant mais à première vue salaire de vouloir fonctionner comme je le souhaite je te tiens au courant très rapidement encore merci de ta patience.

Je tenais à m’excuser pour l’orthographe de certains mon étant donné que je dicte à l’ordinateur c’est un peu compliqué car je suis une personne en situation de handicap simplement pour te prévenir cordialement

Pas de souci moi même je fais des fautes ou de frappe ou d’étourderie
L’essentiel c’est de se comprendre
J’attends donc ton verdict

Concernant les dates cela fonctionne correctement et comme je le souhaite merci beaucoup de ton aide je suis désolé je vais te solliciter sur autre chose je vais créer une nouvelle question est expliqué le problème en tout cas merci pour ton aide sur sur les dates.