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

Autres vérification données avant validation sur userfom

samia89

XLDnaute Nouveau
bonjour tt le monde j'ai besoin d'aide svp

j'ai un UserForm avec "TextBox, ComboBox" et une "ListBox1"

j’utilise se code qui me permit de vérifier l’existence d'un nom Quand je clic sur le bouton valider et de m'informer que se nom existe déjà et je ce que la le code fonction très bien
VB:
Private Sub TextBox16_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)

Dim rg As Range
If TextBox16.Text = "" Then Exit Sub
Set rg = Sheets("Article").Range("C:C").Find(TextBox16.Text)
If Not rg Is Nothing Then
    MsgBox "le Nom Existant Déjà"
    Cancel = True

End If
End Sub

le problème si que quand je clic sur une ligne de ma ""ListBox1" pour remplir mes "TextBox et ComboBox" pour les modification je reçois toujours le message "le Nom Existant Déjà"

merci et excellente journée
 

Dudu2

XLDnaute Barbatruc
Bonjour,
Pourquoi n'utilises-tu pas l'évènement Exit() du Control pour faire le contrôle de contenu ?
VB:
Private Sub TextBox16_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    Dim Rng As Range
   
    If Not Me.Visible Then Exit Sub 'Userform fermé CloseMode 0 (X fenêtre)
    If TextBox16.Text = "" Then Exit Sub
   
    Set Rng = Sheets("Article").Range("C:C").Find(TextBox16.Text)
    If Not Rng Is Nothing Then
        MsgBox "Cee Nom Existant Déjà"
        Cancel = True
    End If
End Sub
 

Dudu2

XLDnaute Barbatruc
Le seul inconvénient est que l'évènement Exit() est prioritaire sur tout autre évènement sauf la fermeture de la fenêtre par le 'X' de la barre de menu du UserForm.

Donc si tu prévois de forcer la sortie par un bouton <Annuler/Quitter/Abandonner> alors que le focus est toujours dans le Control à cause d'une erreur, tu ne pourras pas le faire sans préalablement régler la situation d'erreur. Car à aucun moment le code d'aucun évènement du bouton <Annuler/Quitter/Abandonner> (à part le _MouseMove() qui n'a pas d'intérêt) n'aura pu être exécuté, l'Exit() étant prioritaire.
 
Dernière édition:

samia89

XLDnaute Nouveau
Bonjour Dudu2 merci pour ton aide et je vous informe que j'ai trouve le problème il suffit juste modifier la ligne
Cancel = True 'par
Cancel = False 'pour éviter d'afficher le message "Cee Nom Existant Déjà" qaund je clic sur une ligne de ma ""ListBox1"

Merci encor une fois
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…