[VBA] Liste déroulante se remplissant en continu
Jamba
-
pijaku Messages postés 13513 Statut Modérateur -
pijaku Messages postés 13513 Statut Modérateur -
Bonjour à tous !
Je rencontre un petit problème sur une liste déroulante :
J'ai créé une liste déroulante dans un Userform à partir de cellules d'une feuille
Il y a donc 5 valeurs qui rentrent dans la liste.
Mais quand j'utilise cette liste, à chaque fois que je rouvre l'Userform, la liste se répète. Je me retrouve donc avec 10 items, puis 15 items etc ..
Est-ce que quelqu'un aurait la solution à mon problème s'il vous plait ?
Merci beaucoup et bonne journée à vous.
Je rencontre un petit problème sur une liste déroulante :
J'ai créé une liste déroulante dans un Userform à partir de cellules d'une feuille
Private Sub UserForm_Activate()
Dim i As Integer
For i = 0 To 4
PaletteCb.AddItem Sheets("Userform").Cells(4 + i, 4)
Next i
End Sub
Il y a donc 5 valeurs qui rentrent dans la liste.
Mais quand j'utilise cette liste, à chaque fois que je rouvre l'Userform, la liste se répète. Je me retrouve donc avec 10 items, puis 15 items etc ..
Est-ce que quelqu'un aurait la solution à mon problème s'il vous plait ?
Merci beaucoup et bonne journée à vous.
A voir également:
- [VBA] Liste déroulante se remplissant en continu
- Liste déroulante excel - Guide
- Liste déroulante en cascade - Guide
- Liste code ascii - Guide
- Liste déroulante google sheet - Accueil - Guide bureautique
- Site dangereux liste - Guide
2 réponses
Bonjour,
Au lieu de lévènnement Activate, utilises Initialize :
Remplace
-
Cordialement
Patrice
Au lieu de lévènnement Activate, utilises Initialize :
Remplace
Private Sub UserForm_Activate()par
Private Sub UserForm_Initialize().
-
Cordialement
Patrice
Bonjour,
Salut Patrice33740,
En complément de la réponse de Patrice, peut être "fermes" tu l'Userform par ce code :
Seconde possibilité, et de loin la plus simple et la plus efficace : vider la liste à chaque utilisation :
Note : Clear fonctionne car le remplissage se fait avec AddItem.
Cordialement,
Franck
Salut Patrice33740,
En complément de la réponse de Patrice, peut être "fermes" tu l'Userform par ce code :
UserForm1.Hide. Dans ce cas, il n'est pas "déchargé" de la mémoire, mais simplement masqué. Tu peux utiliser
UnLoad UserForm1.
Seconde possibilité, et de loin la plus simple et la plus efficace : vider la liste à chaque utilisation :
Private Sub UserForm_Activate()
Dim i As Integer
PaletteCb.Clear
For i = 0 To 4
PaletteCb.AddItem Sheets("Userform").Cells(4 + i, 4)
Next i
End Sub
Note : Clear fonctionne car le remplissage se fait avec AddItem.
Cordialement,
Franck