Ajouter et supprimer des données dans une zone de liste modifiable (ComboBox) dans un formulaire personnalisé ou Userform, Excel VBA

Considérons une application simple dans laquelle il est possible d’ajouter de nouveaux éléments, différents des éléments déjà dans la liste, via le champ de saisie de ComboBox. Ainsi, il n’est pas permis de saisir un élément qui correspond à l’un des éléments de la liste. C’est ainsi que la méthode de saisie des données considérée diffère de la méthode discutée dans la section précédente. De plus, vous pouvez supprimer les éléments sélectionnés de la liste et effacer toute la liste. Au départ, la liste est remplie de données provenant d’une plage de cellules. Si un nouvel élément est entré via le champ de saisie de liste, il sera également entré dans la plage sur la base de laquelle la liste a été remplie. Lorsque vous supprimez un élément de la liste, il est également supprimé de la plage. Dans les deux cas, cette plage est redimensionnée, car telle ou telle ligne est ajoutée ou supprimée. Par conséquent, vous devez constamment redéfinir la plage en fonction de laquelle la liste est remplie.

Nous allons créer un formulaire avec une zone de liste modifiable et trois boutons. Définissez les valeurs de la propriété Name du formulaire et des contrôles à l’aide de la fenêtre Propriétés, comme indiqué dans le tableau suivant.
Tableau. Valeurs de propriété définies dans la fenêtre Propriétés

Élément de contrôle Nom de la valeur de la propriété
Zone de liste modifiable CboNom
Bouton de commande CmdAjouter
Bouton de commande CmdSupprimer
Bouton de commande CmdEffacer

La liste sera remplie de données, par exemple les noms de famille, de la plage située dans la même colonne avec la cellule supérieure A1. Appuyez sur le bouton Ajouter pour ajouter un nouvel élément à la liste à partir du champ d’entrée de la liste, appuyez sur le bouton Supprimer pour supprimer l’élément sélectionné de la liste et appuyez sur le bouton Effacer pour effacer la liste.
Figure: Remplir la liste sans répéter

Private Sub UserForm_Initialize()

   Me.Caption = "Ajouter et supprimer des données"

   cmdAjouter.Caption = "Ajouter"

   cmdSupprimer.Caption = "Supprimer"

   cmdEffacer.Caption = "Effacer "

   cboNom.RowSource = Range("A1").CurrentRegion.Address

   cboNom.ListIndex = 0

End Sub

Private Sub cmdAjouter_Click()

   Dim el As String

   Dim n As Integer

   el = cboNom.Text

   If el = Empty Then Exit Sub

   If Range("A1").Value = Empty Then

        Range("A1").Value = el

   ElseIf Not cboNames.MatchFound Then

        n = Range("A1").CurrentRegion.Rows.Count

        Cells(n + 1, 1).Value = el

   Else

        MsgBox cboNom.Text & "plus dans la liste"

        Exit Sub

   End If

   cboNom.RowSource = Range("A1").CurrentRegion.Address

End Sub

Private Sub cmdSupprimer_Click()

   Dim n As Integer

   n = cboNom.ListIndex

   If n = -1 Or (n = 0 And cboNom.Text = Empty) Then

      Exit Sub

   End If

   Cells(n + 1, 1).EntireRow.Delete

   cboNom.RowSource = Range("A1").CurrentRegion.Address

End Sub

Private Sub cmdNettoyer_Click()

   Range("A1").CurrentRegion.Clear

   cboNom.Text = Empty

End Sub

 

S’abonner
Notifier de
0 Commentaires
Inline Feedbacks
Voir tous les commentaires

Initiation à Excel

Fonctions Excel

Excel VBA

Macros VBA Utiles

Plus d'outils

Sur Facebook

Sur YouTube

0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x