[VBA] Liste déroulante se remplissant en continu

Jamba -  
pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   -
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

  1. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 784
     
    Bonjour,

    Au lieu de lévènnement Activate, utilises Initialize :
    Remplace
    Private Sub UserForm_Activate() 
    par
    Private Sub UserForm_Initialize()
    .
    -
    Cordialement
    Patrice
    0
  2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 773
     
    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