Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer :
Activer la validation du formulaire
Avec cette nouvelle
astuce VBA Excel , nous allons voir comment activer la validation d'un formulaire, seulement au moment opportun.
Sur l'exemple illustré par la capture, un petit
formulaire d'inscription s'offre à l'utilisateur. Mais le
bouton de validation est désactivé . Pourtant, il doit servir à inscrire les informations renseignées en
base de données . Si l'utilisateur renseigne tous les champs demandés, le
bouton de validation se rend automatiquement
disponible . C'est cette technique de détection au cours de la saisie que nous proposons de mettre en place dans ce nouveau volet.
Classeur Excel à télécharger
Pour développer cette solution, nous proposons d'appuyer l'étude sur un
classeur offrant déjà ce
formulaire .
Nous retrouvons bien le
formulaire de la présentation. Le
bouton de validation est
désactivé et les quatre zones de saisie sont vides. Si vous les remplissez toutes, le
bouton de validation ne réagit pas encore à ce stade. Il reste
indisponible rendant impossible l'inscription des données.
Remarque : Pour une solution plus aboutie, il conviendrait bien sûr d'associer des
règles de validité pour contrôler les saisies de l'utilisateur dans les champs. Mais nous ne revenons pas sur ces notions dans la mesure où il s'agit d'une solution que nous avions apportée à l'occasion de la
formation sur la création du formulaire Excel d'inscription .
Contrôler la saisie
Le premier enjeu de ce développement consiste à être en mesure de
contrôler les informations entrées au
fil de la saisie . Et pour cela,
VBA Excel propose un
événement bien particulier.
Réaliser le raccourci clavier ALT + F11 pour basculer dans l'éditeur VBA Excel ,
Dans l'explorateur de projet sur la gauche, double cliquer sur l'élément Feuil1(Formulaire) ,
Il désigne la
feuille du formulaire à contrôler. Sa feuille de code héberge la procédure associée au bouton de validation. Aucune inscription n'est entreprise en base de données, comme vous pouvez le voir. Mais ici, seule la simulation nous intéresse pour pouvoir rendre ce bouton disponible au moment opportun.
En haut de la feuille de code, déployer la liste déroulante de gauche,
Dans les propositions, choisir l'objet Worksheet ,
Cette action a pour effet de créer la
procédure événementielle Worksheet_SelectionChange . Mais ce n'est pas celle qui nous intéresse. Nous ne souhaitons pas contrôler la saisie au changement de sélection sur la feuille. Nous souhaitons la contrôler quand une
modification est apportée dans une
cellule de la feuille . Et pour cela,
VBA Excel offre l'
événement Change .
En haut de la feuille de code, déployer cette fois la liste déroulante de droite,
Dans les propositions, choisir l'événement Change ,
C'est ainsi que nous créons la
procédure événementielle Worksheet_Change . A ce titre, vous notez le
paramètre Target qui lui est passé en argument. Il désigne la cellule venant d'être modifiée. Nous allons naturellement l'exploiter.
Contrôler la zone d'influence
Pour un développement optimisé, il n'est pas question de déclencher un code VBA dès qu'une cellule de la feuille est modifiée. Seules quatre cellules sont concernées. Nous proposons donc de contrôler une zone restreinte s'étendant de la
cellule C6 Ã la
cellule E9 . Cette plage englobe bien les
quatre champs du formulaire . L'idée consiste à vérifier (If) l'
intersection entre les coordonnées de la cellule modifiée (Target) et cette plage de cellules. Si cette intersection n'est pas vide, nous saurons qu'il s'agit d'une cellule concernée et nous pourrons lancer le traitement. Et pour cela, le
VBA Excel offre la
fonction Intersect . Elle attend en paramètres les plages à recouper.
Dans la procédure Worksheet_Change , ajouter l'instruction conditionnelle suivante :
Private Sub Worksheet_Change(ByVal Target As Range)
If Not Intersect(Target, Range("C6:E9")) Is Nothing Then
End If
End Sub
C'est une double négation (Not Is Nothing) qui rend son verdict. Comprenez : Si l'intersection des deux plages n'est pas vide.
Réactiver le bouton du formulaire
Deux cas de figure se présentent désormais pour enclencher le traitement. Soit tous les champs sont renseignés et le bouton de validation doit être activé. Soit au moins l'un des champs n'est pas renseigné et le bouton doit être désactivé. Les coordonnées des cellules qui représentent ces champs sont respectivement C6, E6, C9 et E9. C'est une quadruple condition que nous devons vérifier. Une nouvelle
instruction conditionnelle est donc de mise.
Dans le bloc If, ajouter la nouvelle instruction conditionnelle suivante :
...
If (Range("C6").Value <> "" And Range("E6").Value <> "" And Range("C9").Value <> "" And Range("E9").Value <> "") Then
valider.Enabled = True
Else
valider.Enabled = False
End If
...
C'est seulement si aucune des cellules du formulaire n'est vide (AND) que nous rendons le
bouton disponible , grâce à sa
propriété Enabled réglée Ã
True . Dans le cas contraire (else), nous le désactivons (False).
Tester la validation du formulaire
Nous pouvons maintenant tester le résultat en réalisant une simulation sur le formulaire.
Enregistrer les modifications (CTRL + S) et basculer sur la feuille du classeur (ALT + Tab),
Sélectionner le premier champ à renseigner en cliquant sur sa cellule C6 ,
Saisir une civilité, par exemple : Monsieur ,
Puis, valider la saisie à l'aide de la touche Tabulation du clavier ,
Vous avez le plaisir de constater que le prochain champ, ici le deuxième en l'occurrence, est automatiquement sélectionné. En effet, toutes les autres cellules de la feuille sont
verrouillées et la
feuille est protégée . En conséquence,
Excel atteint la
prochaine cellule directement
disponible .
Saisir un nom et le valider avec la touche Tabulation,
C'est désormais le champ du prénom qui est actif. Et comme vous pouvez le constater, le bouton Valider est toujours désactivé. Des informations sont en effet encore manquantes.
Saisir un prénom et le valider avec la touche Tab,
Saisir un mail et le valider avec la touche Tab,
Dès lors, cliquer sur le bouton Valider qui s'est automatiquement rendu disponible,
Comme vous pouvez le voir et c'est une confirmation, son code accepte désormais de se déclencher, puisqu'une boîte de message de confirmation apparaît. Mais il suffirait que vous supprimiez l'une des informations de champ pour que le bouton bascule son état et se rende instantanément indisponible.