[VBA] Liste déroulante se remplissant en continu

Fermé
Jamba - Modifié par Jamba le 5/08/2014 à 14:19
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 - 5 août 2014 à 15:41
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


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.

2 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 779
5 août 2014 à 14:31
Bonjour,

Au lieu de lévènnement Activate, utilises Initialize :
Remplace
Private Sub UserForm_Activate() 
par
Private Sub UserForm_Initialize()
.
-
Cordialement
Patrice
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 751
Modifié par pijaku le 5/08/2014 à 15:41
Bonjour,

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
0