formateur informatique

Activer automatiquement la validation d'un formulaire

Accueil  >  Bureautique  >  Excel  >  Excel VBA  >  Activer automatiquement la validation d'un formulaire
Livres à télécharger


Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :


Inscription Newsletter    Abonner à Youtube    Vidéos astuces Instagram
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.

Formulaire inscription Excel avec bouton de validation désactivé

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,
Contrôler la saisie en VBA Excel

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,
Valider la saisie d-un formulaire d-inscription en VBA Excel

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.

 
Sur Facebook
Sur Youtube
Les livres
Contact
Mentions légales



Abonnement à la chaîne Youtube
Partager la formation
Partager sur Facebook
Partager sur Twitter
Partager sur LinkedIn