Microsoft 365 Contrôle sur date

  • Initiateur de la discussion Initiateur de la discussion ADS95
  • Date de début Date de début

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 !

ADS95

XLDnaute Nouveau
Bonjour à tous,

Malgré mes nombreuses recherches et temps passé, je rencontre un problème sur contrôle date d'un UserForm.
En effet, dans un projet il y a des saisies sur textbox date pour lequel j'ai adapté des contrôles nécessaires.
Toutefois, quand le curseur clignotant se trouve sur date et que l'on souhaite quitter la saisie par bouton "Quitter", le controle de "Exit(ByVal c As MSForms.ReturnBoolean)" se lance avec le message de MsgBox et il faut cliquer une deuxième fois pour sortir.
Pour plus de détail, j'ai résumé sur un fichier joint.
Merci pour votre précieuse aide.
Bon week-end à tous.
 

Pièces jointes

Hello
pas bien compris.
mais pour vérifier que tu as saisi une date
dans le textbox_exit

VB:
Private Sub TextBox_Date_Exit(ByVal c As MSForms.ReturnBoolean) 'Teste date In
 
Dim Valeur As Byte
 If Not IsDate(Me.TextBox_Date) Then
    MsgBox "Veuillez entrer une date valide."

    TextBox_Date.Value = ""
    Exit Sub
End If

End Sub
 
Hello
pas bien compris.
mais pour vérifier que tu as saisi une date
dans le textbox_exit

VB:
Private Sub TextBox_Date_Exit(ByVal c As MSForms.ReturnBoolean) 'Teste date In
 
Dim Valeur As Byte
 If Not IsDate(Me.TextBox_Date) Then
    MsgBox "Veuillez entrer une date valide."

    TextBox_Date.Value = ""
    Exit Sub
End If

End Sub

Merci vgendro,

Pour être plus explicite copie écran si dessous.
Aussi, quand curseur clignote sur "DATE" et que l'on veut quitter par bouton "Quitter", j'ai le message du controle exit qui apparait et je dois cliquer à nouveau sur "Quitter" pour fermer UserForm1.
J'ai bien essayé avec la valeur du bouton "Quitter" mais sans succès.
Merci encore





1737132612960.png




1737132648379.png
 
à mon avis, il y en a un peu partout...
le control de saisie.. il faut choisir à quel moment tu le fais: soit pendant la saisie (pour autoriser seulement des chiffres et ajouter les / au fur et à mesure) ==> donc dans l'évènement _change, soit juste à la sortie
regarde dans les ressources du forum, il y a des infos sur les masques de saisie, et controles d'entrée, des trucs tout faits qui fonctionnent bien
 
à mon avis, il y en a un peu partout...
le control de saisie.. il faut choisir à quel moment tu le fais: soit pendant la saisie (pour autoriser seulement des chiffres et ajouter les / au fur et à mesure) ==> donc dans l'évènement _change, soit juste à la sortie
regarde dans les ressources du forum, il y a des infos sur les masques de saisie, et controles d'entrée, des trucs tout faits qui fonctionnent bien
Avant toute demande sur le forum je regarde les ressources déjà existantes et d'ailleurs cela m'aide bien à construire mes projets en adaptant mes propres contraintes.
Malheureusement sur ce point précis je n'ai rien trouvé.
Merci encore pour le temps passé.
 
Avant toute demande sur le forum je regarde les ressources déjà existantes et d'ailleurs cela m'aide bien à construire mes projets en adaptant mes propres contraintes.
Malheureusement sur ce point précis je n'ai rien trouvé.
Merci encore pour le temps passé.
Comme quoi la persévérance et l'échange qui stimule nous aident à nous améliorer.
Un changement de = en <> et de Or en And dans contrôle valeur et cela fonctionne.
Fichier joint pour ceux qui rencontre le même problème.
Bon week-end à tous.
 

Pièces jointes

bonsoir
juste en passant
VB:
Private Sub CommandButton1_Click()
    If TextBox_Date = "" Then Exit Sub
    Range("C6") = CDate(Me.TextBox_Date)
    Range("C7") = Year(CDate(Me.TextBox_Date)) & "/" & Month(CDate(Me.TextBox_Date)) & "/" & 1

End Sub

Private Sub TextBox_Date_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If TextBox_Date <> "" Then If Len(TextBox_Date) < 10 Then Cancel = True: MsgBox "tête d'ail regarde ce que tu fait!!"
End Sub

Private Sub TextBox_Date_KeyDown(ByVal KeyCode As MSForms.ReturnInteger, ByVal Shift As Integer)
    datebox TextBox_Date, KeyCode
End Sub


Public Sub datebox(tbx, ByVal KeyCode As MSForms.ReturnInteger)
   Dim V$
   With tbx
        V = .Value
        If Len(V) = 2 Or Len(V) = 5 Then V = V & "/"
        Select Case KeyCode
            Case 96 To 105
                V = V & Chr(KeyCode - 48)
                If Len(V) = 2 Or Len(V) = 5 Then V = V & "/"
                If Val(V) > 31 Then V = ""
                If Len(V) >= 5 Then
                    If Val(Mid(V, 4, 2)) > 12 Then V = Mid(V, 1, 3): Beep
                    If Len(V) = 5 Then If Not IsDate(Left(V, 5) & "/2000") Then V = Left(V, 3): Beep
                    If Len(V) = 10 Then If Not IsDate(V) Then V = Left(V, 6): Beep
                End If
                If Len(V) = 2 Or Len(V) = 5 Then V = V & "/"
               .Value = Mid(V, 1, 10)
                KeyCode = 0
            Case 46, 8, 13, 9
            Case Else: Exit Sub
        End Select
    End With
End Sub
 
Dernière édition:
- 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

Retour