formateur informatique

Formulaire d'insertion sur plusieurs colonnes VBA Excel

Accueil  >  Bureautique  >  Excel  >  Excel VBA  >  Formulaire d'insertion sur plusieurs colonnes VBA Excel
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 :


Formulaire VBA d'insertion

Dans ce nouveau volet, nous proposons de créer un formulaire de saisie plutôt intelligent. Selon la nature des informations entrées, il doit être capable de choisir la bonne colonne à renseigner sur la feuille Excel.

Classeur Excel à télécharger
Pour développer cet outil, nous suggérons d'appuyer l'étude sur un classeur offrant une table à deux entrées et abritant un formulaire de saisie, déjà construit. Nous découvrons un tableau de personnes à noter sur des évaluations à passer.

Tableau Excel à remplir avec un formulaire VBA

Les deux dernières colonnes sont vides. La première des deux attend l'information numérique sur la note obtenue tandis que la seconde attend l'information textuelle sur l'évaluation.

Bouton VBA Excel pour afficher le formulaire de saisie

Si vous cliquez sur le bouton placé à droite du tableau, vous déclenchez l'affichage d'un formulaire de saisie. Il est doté de six zones de texte à renseigner. Et précisément, les deux colonnes à enrichir sur la feuille, attendent respectivement six informations. C'est en fonction de la nature des données entrées (nombres ou textes) que le formulaire doit choisir d'implémenter la colonne des scores ou celle intitulée Eval.

La procédure d'ajout
Pour débuter la conception, nous devons déclencher un code VBA au clic sur le bouton Ajouter du formulaire. Si ce dernier est ouvert, il convient de le fermer en cliquant sur le bouton Fermer.
  • Réaliser le raccourci clavier ALT + F11 pour basculer dans l'éditeur VBA Excel,
  • Dans l'explorateur sur la gauche, déployer l'affichage du dossier nommé feuilles,
  • Dès lors, double cliquer sur l'élément fAjout,
C'est ainsi que nous affichons le formulaire au centre de l'écran, dans sa vue en conception.
  • Sur le formulaire, double cliquer sur le bouton Ajouter,
Nous basculons ainsi dans la feuille de code, entre les bornes de la procédure événementielle ajouter_Click. Son code se déclenchera au clic sur le bouton Ajouter. Vous notez de même la présence d'une autre procédure nommée fermer_Click. Elle se charge simplement de fermer le formulaire au clic sur le second bouton.

Les variables
Nous devons maintenant passer à la phase de déclaration et d'affectation des variables.
  • Dans les bornes de la procédure, ajouter les déclarations et affectations suivantes :
...
Dim controle As Control
Dim plage1 As Range: Dim plage2 As Range
Dim i As Integer

Set plage1 = Range("D4:D9")
Set plage2 = Range("E4:E9")
...


Nous le verrons, nous n'avons pas besoin de connaître les noms des contrôles en place sur le formulaire. Nous allons créer une boucle pour les parcourir tous dans la chronologie de leur implantation. C'est la raison pour laquelle, nous déclarons un objet représentant un contrôle au sens large. Nous déclarons ensuite deux objets de plages de cellules que nous fixons alors (Set) sur les deux colonnes respectives du tableau. Puis, pour établir la correspondance dans la boucle, entre la zone de texte du formulaire et la cellule de la feuille à renseigner, nous déclarons une variable de boucle (i).

Parcourir les contrôles du formulaire
Il est temps d'enclencher la boucle capable d'analyser le contenu de chaque contrôle du formulaire. Mais attention, seules les zones de texte nous intéressent. Les étiquettes et les boutons doivent être ignorés. C'est la raison pour laquelle, nous allons émettre une condition dans ce traitement récursif. ...
For Each controle In Me.Controls
If TypeOf controle Is MSForms.TextBox Then
i = i + 1

End If
Next
...


C'est ainsi que nous passons en revue tous les contrôles, tour à tour. Mais grâce à l'instruction conditionnelle exploitant l'opérateur VBA TypeOf, nous vérifions que celui en cours d'analyse est bien une zone de texte (MSForms.TextBox). C'est ainsi que nous allons pouvoir ignorer les étiquettes et les boutons. Pour chaque nouvelle zone de texte, nous n'oublions pas d'incrémenter notre variable de boucle (i = i + 1) qui était implicitement initialisée à zéro.

Adapter la colonne de l'insertion
Maintenant c'est la nature de la donnée contenue dans le contrôle en cours d'analyse qui doit être évaluée. S'il s'agit d'une information numérique, l'inscription doit avoir lieu dans la première plage, à l'indice en cours de lecture (i). S'il s'agit d' une information textuelle, l'inscription doit avoir lieu dans la seconde plage, bien sûr toujours pour l'indice en cours.
  • Dans les bornes de l'instruction conditionnelle, ajouter les lignes VBA suivantes :
...
If TypeOf controle Is MSForms.TextBox Then
i = i + 1
If IsNumeric(Trim(controle.Text)) Then
plage1.Item(i).Value = CDbl(Trim(controle.Text))
Else
plage2.Item(i).Value = Trim(controle.Text)
End If

End If
...


Avec la fonction IsNumeric, nous vérifions si le contenu de la zone de texte, purgée de ses potentiels espaces (Trim), est bien un nombre. Dans ce cas (Then), à l'emplacement correspondant à la progression de l'analyse dans la plage des scores (plage1.Item(i)), nous insérons la valeur étudiée. Dans le cas contraire (Else), toujours pour l'indice en cours (plage2.Item(i)), nous réalisons cette insertion dans la plage intitulée Eval.

Décharger les objets
Pour finir, il ne nous reste plus qu'à fermer le formulaire automatiquement pour rendre la vue à la feuille ainsi enrichie et à décharger les objets de la mémoire.
  • Après la boucle, ajouter les instructions VBA suivantes :
...
Unload Me

Set plage1 = Nothing
Set plage2 = Nothing
Set controle = Nothing
...


Nous pouvons maintenant tester le fonctionnement de ce formulaire d'ajout de données.
  • Enregistrer les modifications (CTRL + S) et basculer sur la feuille Excel (ALT + Tab),
  • Cliquer sur le bouton Remplir pour afficher le formulaire,
  • Dans les six zones de texte, taper des nombres puis cliquer sur le bouton Ajouter,
Comme vous pouvez l'apprécier, les inscriptions se réalisent chronologiquement dans la première plage vide, celle des scores.

Remplir automatiquement un tableau Excel avec un formulaire d-ajout VBA

Maintenant si vous réaffichez le formulaire et que vous entrez des textes, comme des lettres de l'alphabet pour les évaluations, à validation, vous constatez que les inscriptions basculent automatiquement sur la seconde colonne vierge. Toutes les cellules sont ainsi parfaitement renseignées grâce à un formulaire d'ajout intelligent.

 
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