Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

saisie date dans combobox et affichage d'un userform

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

missaudrey

XLDnaute Nouveau
Bonjour à tous par cette belle journée ensoleillée!!!

je rencontre depuis ce matin 2 petits pbs en vba, et j n'y trouve pas de solutions:
le premier Pb: je veux forcer dans un textbox de mon userform, l'écriture de la date au format jj/mm/aaaa et faire un message d'erreur pour les dates éronnées: pour l'instant, j'ai ceci:
Private Sub txtDatePrev_Change() 'Forcer la saisie en format jj/mm/aa
Dim Valeur As Byte
txtDatePrev.MaxLength = 10 'nb caracteres maxi dans textbox

Valeur = Len(txtDatePrev)
If Valeur = 2 Or Valeur = 5 Then txtDatePrev = txtDatePrev & "/"


Qui n eprend pas en compte les mauvaises dates du styles (32/25/3000). j'ai utlisé un msgbox avec "if not Isdate", mais ca ne marche pas.. quelqu'un pourrait-il me depanner,

2e pb: j'ai un userform avec des combobox que j'ai rempli avec les données contenus dans une feuille ("base de données") de mon fichier excel. Je voudrais afficher le userform mais dans une autre feuille ("mode opératoire"). . Quand je fais:userform.show, il s'affiche toujours dans l'onglet "Base de données ". Est ce possible? Y'auraittil une propriété de userform qui le ferait?

Merci d'avance à tous et bon aprem:!!!!!!
 
Re : saisie date dans combobox et affichage d'un userform

Bonsoir Bruno
Dans ton code, c'est quoi la variable Z, elle n'est pas déclarée, et cjez moi ca bugge? une idée!!


merci déjà pour ton ficheir, ca colle effectivement aux attentes!
 
Re : saisie date dans combobox et affichage d'un userform

Re,
Oui,
Rajoute en rouge
Pense à rectifier le nom du textbox et pour la 2ème question
si la date est ok tu peux mettre Sheets("nom de l'Onglet").select

Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim z As String
If TextBox1 = "" Then TextBox1 = "--/--/----": k = 0: tx = "": TextBox1.SelStart = 0: Exit Sub

Bruno
 
Re : saisie date dans combobox et affichage d'un userform

bonsoir bruno,

ca marche mais pas comme le tien. déjà, quand j'ouvre mon userform. j'ai testé et quen que saisis un chiffre, le cursuer se met va à la fin. ca ne va pas au chiffre suivant comme dans le tient. mais je ne sais pas à quoi celà est du.
J'ai une autre question. Dans ton fichier, sur la feuil1, tu as crée un bouton,"commandbutton1", comment l'as tu fais? c'est un private sub, et je pense qu'e ca peut répondre à ma 2e question. j'ai esayé avec le select, mais ca ne marche pas.
merci d'être aussi patient!
 
Re : saisie date dans combobox et affichage d'un userform

Pour insèrer un bouton sur une feuille rien de plus facile.
Attention il existe les boutons formulaire et aussi les boutons VBA.
J'ai utilisé un bouton VBA, et pour écrire son code, en mode création tu double click dessus.
Je pense que tu n'as pas écrit le code en entier sur ton classeur le voici en intégral.
Bruno
Code:
Public tx As String
Public k As Integer

Private Sub CommandButton1_Click()
If Not IsDate(TextBox1) Then
MsgBox "date invalide"
TextBox1.SetFocus
TextBox1.SelStart = 10
Else
MsgBox "Date Valide"
End If
End Sub

Private Sub TextBox1_KeyUp(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
Dim z As String
If TextBox1 = "" Then TextBox1 = "--/--/----": k = 0: tx = "": TextBox1.SelStart = 0: Exit Sub
If KeyCode = 8 Then
If k <= 1 Then TextBox1 = "--/--/----": TextBox1.SelStart = 0: k = 0: tx = "": Exit Sub
k = k - 1
tx = Left(tx, k)
z = Right("--/--/----", 10 - k)
If Len(tx) = 3 Then tx = Left(tx, 2): k = 2: z = "/--/----"
If Len(tx) = 6 Then tx = Left(tx, 5): k = 5: z = "/----"
TextBox1 = tx & z
TextBox1.SelStart = k
Exit Sub
End If
If k >= 10 Then TextBox1 = Left(TextBox1, 10): Exit Sub
k = k + 1
tx = tx & Mid(TextBox1, k, 1)
z = Right("--/--/----", 10 - Len(tx))
If Len(tx) = 6 Then tx = Left(tx, 5) & "/" & Right(tx, 1): z = "-": k = k + 1
If Len(tx) = 5 Then tx = tx & "/": z = "----": k = k + 1
If Len(tx) = 3 Then tx = Left(tx, 2) & "/" & Right(tx, 1): z = "-/----": k = k + 1
If Len(tx) = 2 Then tx = tx & "/": z = "--/----": k = k + 1
TextBox1 = tx & z
TextBox1.SelStart = k
End Sub

Private Sub UserForm_Activate()
TextBox1 = "--/--/----"
TextBox1.SelStart = 0
End Sub
 
Re : saisie date dans combobox et affichage d'un userform

J'avais mis tout le code, mais j'ai une erreur sur cette ligne:

End If
If Not IsDate(txtDateFin) Then
MsgBox "date invalide"
txtDateFin.SetFocus
txtDateFin.SelStart = 10
Else
MsgBox "Date Valide"
End If

j'ai bidouillé dans tous les sens mais rien
 
Re : saisie date dans combobox et affichage d'un userform

Audrey,
ici c'est le nom de ton textbox
je pense qu'il faut mettre
txtDatePrev à la place de txtDateFin
Si la vérification de la date ne s'efféctue pas à partir de l'userform if faut . . .
UserForm1.txtDateFin ou UserForm1.txtDatePrev
Le .setfocus c'est pour remettre le curseur sur le textbox donc celui-ci doit être visible.
Bruno
 
Re : saisie date dans combobox et affichage d'un userform

Bonsoir bruno,

ca marche pour les dates,e ncore merci beaucoup.

Mais je n'ai toujours pas trouvé de réponses pour afficher un userform sur une feuille particulière de mon fichier excel.

Merci d'avance si tu as une idée( ni le select, activate , ou encore le bouton VBA ne marche). Voilà, bonne soirée à tous!
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
489
Réponses
3
Affichages
599
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…