combobox et doublons

jammy17

XLDnaute Occasionnel
bonsoir le forum

je cherche a remplir le combobox 'nation' de mon userform se trouvant dans le fichier joint sans doublons.
est ce possible et comment? [file name=essais_20060103212912.zip size=17765]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/essais_20060103212912.zip[/file]
 

Pièces jointes

  • essais_20060103212912.zip
    17.3 KB · Affichages: 20

jammy17

XLDnaute Occasionnel
MERCI BEAUCOUP MICHEL, j'ai lu quasiment tous tes fil....mais

j'ai inseré le code dans mon fichier mais cela ne semble pas le prendre en compte,du fait que ma premiere combobox se remplie en fonction de la deuxieme....

voila le bout de code qui me sert a repmlir la combobox que je n'arrive pas dedoublonner.
je pense que le probleme vient de al mais je bloque.
Private Sub contr2_Change()
Me.contr1.Clear

Dim Derligne%
With Sheets('Feuil1')
Derligne = .Range('C65536').End(xlUp).Row
For I = 6 To Derligne
If .Range('C' & I) = Me.contr2 Then
Me.contr1.AddItem .Range('A' & I)
End If
Next
End With

Message édité par: jammy17, à: 03/01/2006 21:42
 

MichelXld

XLDnaute Barbatruc
rebonsoir

dans le premier message ce n'etait qu'un exemple : je n'avais pas ouvert ton classeur

par contre je ne comprends pas ta question , car dans ton classeur tu avais déja une methode pour alimenter le ComboBox contr2 sans doublon ...


tu peux tester cette adaptation pour alimenter le Combobox contr1

Private Sub contr2_Change()
Dim Derligne%
Dim Plg As Range, Cel As Range
Dim colA As New Collection

Me.contr1.Clear
Derligne = Sheets('Feuil1').Range('C65536').End(xlUp).Row
Set Plg = Sheets('Feuil1').Range('C6:C' & Derligne)

For Each Cel In Plg
If Cel.Value = contr2 Then
On Error Resume Next
colA.Add Cel.Offset(0, -2).Value, CStr(Cel.Offset(0, -2).Value)
End If
Next Cel

For Each it In colA
contr1.AddItem colA(it)
Next it

End Sub



bonne soiree
MichelXld
 

jammy17

XLDnaute Occasionnel
REBONSOIR MICHEL


Oui, merci beaucoup encore une fois, c'est exactement ce que je voulais....

je n'arrive pas bien a comprendre les methode du type/colA.Add Cel.Offset(0, -2).Value, CStr(Cel.Offset(0, -2).Value)

soit les new collection quoi....mais je vais apprendre. :unsure:

de meme a quoi correspond exactement la variable 'it' dans le code que tu m'as joint:
For Each it In colA
contr1.AddItem colA(it)
Next it

je te remercie encore.....
 

MichelXld

XLDnaute Barbatruc
rebonsoir

j'espere que ces annotations pourront t'aider

Me.contr1.Clear 'suppression des données existantes dans dans le Combobox

'recuperation du numero de la derniere ligne vide
'dans la colonne C
Derligne = Sheets('Feuil1').Range('C65536').End(xlUp).Row

'definition d'une plage de cellules dans la colonne C
Set Plg = Sheets('Feuil1').Range('C6:C' & Derligne)

For Each Cel In Plg 'boucle sur toutes les cellules de la plage

'si la cellule est identique au contenu du Combobox contr2
If Cel.Value = contr2 Then
On Error Resume Next
'ajout de l'element dans la collection (sans doublons )
'L'objet Collection permet de créer un jeu d'elements uniques (voir l'aide en ligne Excel )
colA.Add Cel.Offset(0, -2).Value, CStr(Cel.Offset(0, -2).Value)
End If
Next Cel

'boucle sur tous les elements de la collection pour alimenter la combobox contr1
For Each it In colA
contr1.AddItem colA(it)
Next it



bonne soiree
MichelXld
 

Discussions similaires

Réponses
13
Affichages
413

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz