Griser le bouton "valider" si un textbox n'est pas remplie

Bonjour à tous,

Voila j'ai un formulaire avec 3 textbox intitulé textbox1, Textbox2, Textbox3. Je voudrais que si un champ n'est pas remplis que le bouton se grisaille afin que l'utilisateur ne puisse pas valider la sélection.

Ci joint mon fichier.

Merci à tous pour votre aide,

lolo92

150test1.xlsm (17.09 Ko)
97test1.xlsm (17.09 Ko)

Bonjour,

Mettre la propriété Enabled du bouton à False par défaut.

Procédure pour tester si les 3 TextBox sont servis, qui met Enabled à True si c'est le cas, à False sinon.

Procédure lancée sur l'évènement Exit ou AfterUpdate de chaque TextBox.

Cordialement.

Bonjour MFerrand

Mettre la propriété Enabled du bouton à False par défaut.

Rep : Ok ca jusque là j'ai trouvé

Procédure pour tester si les 3 TextBox sont servis, qui met Enabled à True si c'est le cas, à False sinon.

Procédure lancée sur l'évènement Exit ou AfterUpdate de chaque TextBox.

Rep : Je ne comprend pas, qu'appel tu par évènement Exit ou AfterUpdate de chaque textbox ?

Merci encore

Cordialement.

Ce que tu programmes le plus couramment dans un Userform, ce sont les évènements qui affectent les différents contrôles : Change, Click, etc. Regarde les noms de tes procédures Private Sub... mis automatiquement par VBA : lors de la sélection d'un contrôle dans la liste déroulante de gauche du module (ça c'est l'évènement par défaut), puis lors de la sélection d'un évènement autre pour ledit contrôle dans la liste déroulante de droite).

Tu fais par exemple une proc. :

Sub BoutonActif()
    Dim i%
    For i = 1 To 3
        If Controls("TextBox" & i).Value = "" Then
            CommandButton1.Enabled = False
            Exit Sub
        End If
    Next  i
    CommandButton1.Enabled = True
End Sub

qui se place en tête de module dans la zone "General".

Et pour chaque TextBox :

Private Sub TextBox1_AfterUpdate()
    BoutonActif
End Sub

Cordialement.

Re,

Plusieurs erreur se produise : tout d'abord, j'ai un message d'erreur me disant : BoutonActif -> Le membre existe déjà dans un module objet dont le présent module est dérivé.

Deuxièmement en changeant le nom, il me met une erreur sur l'instruction suivante et bloque sur boutonActif

Private Sub TextBox1_AfterUpdate()
BoutonActif
End Sub

Merci encore,

Ci joint le fichier en piece jointe

321copie-de-test1.xlsm (18.65 Ko)

Plusieurs erreur se produise : tout d'abord, j'ai un message d'erreur me disant : BoutonActif -> Le membre existe déjà dans un module objet dont le présent module est dérivé.

Je n'ai pas regardé ton fichier, mais si le nom de procédure existe déjà, tu le changes !

Et si tu le changes, tu le changes partout !


Après avoir jeté un oeil sur ton fichier...

Je suppose que c'est toi qui a nommé ton bouton : BoutonActif... Comme il s'agit du seul contrôle renommé, j'en déduis que c'est à la suite de ma proposition, ce qui n'est pas du tout malin !

Et en laissant CommandButton1 dans la procédure !!!!! Tu penses à quoi donc !

Pour voir comment cela fonctionne rétablis le nom initial du bouton !

Et supprime les ajouts tout à fait inadéquats que tu as fait à la procédure !

Moyennant quoi, cela fonctionnera !

Bonjour à vous,

J'ai le même problème.

Hélas je n'ai aucune notion de ce que veut dire un événement sur Excel VBA, un AfterUpdate ou un Exit...

Pourriez-vous éclairer ma lanterne je vous prie.

L'objectif est comme suit :

J'aimerai bloquer le bouton OK si le champ du texte est vide, mais dès que je saisisse un caractère, il redevient alors possible de cliquer dessus.

Seul bémol, j'ai quelques restrictions : les caractères ":","/","\","?" et "*" sont interdits et dans mon code, je dois rebloquer le bouton OK s'il trouve que les caractères sont présents sur le champ du TextBox, mais doit redevenir Actif lorsque je les supprime.

Merci de m'aider !

Veuillez trouver mon fichier en jointure.

Le code de MFerrand fonctionne parfaitement, la seule chose qui m'ennuie un peu pour mon usage c'est qu'il faut cliquer quelque part ailleurs une fois la dernière textbox remplie pour que le code qui réalise le test de remplissage soit exécuté.

Si l'utilisateur reste sur la derniere textbox sans faire autre que rentrer quelquechose dans la textbox , le bouton ne se dégrise pas.

Y a t-il un moyen de contourner ce problème ?

Bonjour le forum

Bonjour le fil

@lcn : il faut éviter de "déterrer" les anciens posts et donc il est préférable d'en créer un nouveau.

Essaie avec l'évènement change.

23classeur1.xlsm (22.45 Ko)

Hello le fil,

Je pense avoir compris ce que tu cherches @Icn, voici une proposition simple et efficace.

120classeur1-1.xlsm (21.35 Ko)
Rechercher des sujets similaires à "griser bouton valider textbox pas remplie"