creation dynamique de la liste d'une combobox

  • Initiateur de la discussion treza88
  • Date de début
T

treza88

Guest
Bonjour à tous

Je voudrais savoir comment crèer dynamiquement la liste d'une combobox qui est situé sur une userform.

c'est a dire qu'a chaque valeur renter par le clavier dans une combobox cette valeur s'ajoute à la liste de la combobox. Cette liste ne doit comprendre que 10 valeurs et donc les 10 dernieres rentrer au clavier dans la combobox.
En plus cette liste devra etre mémorisé meme apres avoir quitté le fichier puis réouvert.(je suis peut etre trop exigeant)

Je voudrais bien vous proposer un debut de code mais desolé je n'en ai pas pour l'instant.

Merci pour toute information qui pourait m'aider.
 

Hervé

XLDnaute Barbatruc
bonsoir treza

un exemple de code pouvant t'aider.

matériel nécessaire :

- un classeur avec une feuille 2 nommé feuil2
- un userform comprenant un combobox et un commandbutton

principe :

-a l'ouverture du userform on remplit la combobox avec les données se trouvant en colonne A de la feuille 2

- on saisit une donnée dans la combobox et on appuie sur le bouton, la donnée est ajouté aux éléments de la combobox et on supprime derniers éléments, afin de n'avoir que 10 items dans la combobox

- à la fermeture de l'userform on renvoit les données dans la colonne1 de la feuille 2


Private Sub CommandButton1_Click()
Dim i As Byte

With ComboBox1
       
'ajoute l'élément saisie dans la combobox
        .AddItem ComboBox1, 0
        .ListIndex = -1
       
       
'supprime les items au-dela du 10ème
       
For i = 0 To .ListCount - 1
               
If i > 9 Then .RemoveItem (i)
       
Next i
End With
End Sub
'_____________________________________
Private Sub UserForm_Initialize()
Dim c As Range

'initialise combobox1 avant les données de la feuille 2
For Each c In Sheets('feuil2').Range('a1:a10')
       
If Not c = '' Then ComboBox1.AddItem c
Next c

End Sub
'_____________________________________
Private Sub UserForm_Terminate()
Dim i As Byte

With Sheets('feuil2')
       
For i = 0 To ComboBox1.ListCount - 1
                .Cells(i + 1, 1) = ComboBox1.List(i)
       
Next i
End With
End Sub


si je peux me permettre, une combobox permet de choisir un item parmis une liste, il vaudrait mieux que tu passes par une textbox pour alimenter ta combobox.

salut

PS perso : commence à me gonfler dure l'impossibilité de joindre des fichiers.
 

treza88

XLDnaute Occasionnel
Merci Hervé

J'ai choisi une combobox car je veux egalement selectionner dans la liste mais sans la modifier et creer des doublons.

Par contre apparement le suivant:

Code:
Private Sub ComboBox1_Click()
Dim i As Byte

With ComboBox1
        'ajoute l'élément saisie dans la combobox
        .AddItem ComboBox1, 0
        .ListIndex = -1
        
        'supprime les items au-dela du 10ème
        For i = 0 To .ListCount - 1
                If i > 9 Then .RemoveItem (i)
        Next i
End With
End Sub

N'ajoute pas l'element saisie dans la feuil2

J'ai essayer de chercher mais jusque j'ai pas trouvé pourquoi.

Message édité par: treza88, à: 25/06/2006 22:05
 

treza88

XLDnaute Occasionnel
Je te remercie hervé

Apparemment j'ai trouvé quelque chose qui fonctionne.

Voici le code:

Code:
Private Sub ComboBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim i As Byte

With ComboBox1
        'ajoute l'élément saisie dans la combobox
        .AddItem ComboBox1, 0
        .ListIndex = 0
        
        'supprime les items au-dela du 10ème
        For i = 0 To .ListCount - 1
                If i > 9 Then .RemoveItem (i)
        Next i
End With
End Sub

Si tu as une objection a ce que j'ai fait fait moi en part.

Par contre j'ai pas tout compris sur l'utilité du code:

Code:
Private Sub UserForm_Terminate()
Dim i As Byte

With Sheets('feuil2')
        For i = 0 To ComboBox1.ListCount - 1
                .Cells(i + 1, 1) = ComboBox1.List(i)
        Next i
End With
End Sub

Si tu peux m'en dire plus.

Merci

Message édité par: treza88, à: 25/06/2006 22:31
 

Hervé

XLDnaute Barbatruc
bonjour treza

dans ta demande initiale tu demandais à ce que la liste de la combobox soit sauvegardé, c'est ce que fait ce code.

A la fermeture du userform la liste de la combobox est renvoyé dans la feuille 2 du classeur (qui peut etre masqué).

voilà.

salut
 

Discussions similaires

Statistiques des forums

Discussions
312 177
Messages
2 085 972
Membres
103 073
dernier inscrit
MSCHOE16