OVH Cloud OVH Cloud

Combo sans doublons

32 réponses
Avatar
David
Bonjour à tous


J'utilise ceci pour remplir mes 4 combos.

Comment faire pour remplir sans doublon.
J'ai bien regardé sur le excelabo et autre mais je n'arrive pas à l'adapter
à mon projet

Merci de votre aide

Private Sub Ini()
Dim L, M, N, O As Integer
Dim Plage1, Plage2, Plage3, Plage4 As String
L = Sheets("BD").Range("A65536").End(xlUp).Row
M = Sheets("BD").Range("B65536").End(xlUp).Row
N = Sheets("BD").Range("D65536").End(xlUp).Row
O = Sheets("BD").Range("F65536").End(xlUp).Row
Plage1 = Sheets("BD").Range("A2:A" & L).Address
Plage2 = Sheets("BD").Range("B2:B" & M).Address
Plage3 = Sheets("BD").Range("D2:D" & N).Address
Plage4 = Sheets("BD").Range("F2:F" & O).Address
cmbCaisse.RowSource = "'BD'!" & Plage2
cmbMutuelle.RowSource = "'BD'!" & Plage3
cmbMode.RowSource = "'BD'!" & Plage4
cmbClient.RowSource = "'BD'!" & Plage1
End Sub

10 réponses

1 2 3 4
Avatar
Claude Trouet
Bonjour,
Si je comprends bien les doublons sont dans chacune des 4 plages.
Dans ce cas, si c'est possible, pourquoi ne pas les éliminer avant ?
Sinon, est-il possible de trier chacune de ces plages indépendamment les
unes des autres ?
Auquel cas, il serait possible de remplir chaque combobox avec un boucle
allant du début à la fin de chaque plage
et en n'ajoutant à la combobox la cellule lue que si celle-ci est différente
de la précédente.
Suis-je assez clair ?
CT

"David" <(Pas de Spam) a écrit dans le message
de news:
Bonjour à tous


J'utilise ceci pour remplir mes 4 combos.

Comment faire pour remplir sans doublon.
J'ai bien regardé sur le excelabo et autre mais je n'arrive pas à
l'adapter
à mon projet

Merci de votre aide

Private Sub Ini()
Dim L, M, N, O As Integer
Dim Plage1, Plage2, Plage3, Plage4 As String
L = Sheets("BD").Range("A65536").End(xlUp).Row
M = Sheets("BD").Range("B65536").End(xlUp).Row
N = Sheets("BD").Range("D65536").End(xlUp).Row
O = Sheets("BD").Range("F65536").End(xlUp).Row
Plage1 = Sheets("BD").Range("A2:A" & L).Address
Plage2 = Sheets("BD").Range("B2:B" & M).Address
Plage3 = Sheets("BD").Range("D2:D" & N).Address
Plage4 = Sheets("BD").Range("F2:F" & O).Address
cmbCaisse.RowSource = "'BD'!" & Plage2
cmbMutuelle.RowSource = "'BD'!" & Plage3
cmbMode.RowSource = "'BD'!" & Plage4
cmbClient.RowSource = "'BD'!" & Plage1
End Sub




Avatar
David
Bonjour claude

Dans ce cas, si c'est possible, pourquoi ne pas les éliminer avant ?




Non ne pas éliminer les doublons

Sinon, est-il possible de trier chacune de ces plages indépendamment les
unes des autres ?




Non plus, ne pas trier. Chaque ligne est une "fiche client"

J'aimerais juste récupérer les valeurs uniques

Merci de ton aide



Avatar
AV
Sers toi de cet exemple pour remplir chacune de tes combos

Sub Uniq_Dans_Combo()
Dim Tbl As New Collection
Dim I As Long
Set Plage = Sheets("Feuil1").Range("A1:A" & [A65536].End(3).Row)
On Error Resume Next
For Each C In Plage
Tbl.Add C.Value, CStr(C.Value)
Next C
On Error GoTo 0
With Worksheets("BD").ComboBox1
.Clear
For I = 1 To Tbl.Count
.AddItem Tbl(I)
Next I
.ListIndex = 0
End With
Set Tbl = Nothing
End Sub

AV
Avatar
Claude Trouet
Re bonjour,
A tout hasard en utilisant un filtre élaboré comme ceci :
Adapter en fonction des plages et noms des combobox

Private Sub UserForm_Initialize()
Dim données As String
For i = 1 To 4
Columns(i).Select
données = Selection.Address
Cells(1, i).Select
Selection.Copy
Range("G1,G4").Select
ActiveSheet.Paste
Range(données).AdvancedFilter Action:=xlFilterCopy, _
CriteriaRange:=Range("G1:G2"), CopyToRange:=Range("G4"), _
Unique:=True
'parcourir le résultat
Range("G5").Select
Controls("combobox" & i).Clear
Do While ActiveCell.Value <> ""
Controls("combobox" & i).AddItem ActiveCell.Value
ActiveCell.Offset(1, 0).Select
Loop
Next i
'effacer la colonne G
Columns("G:G").ClearContents
End Sub

Est-ce que cela convient ?
CT

"David" <(Pas de Spam) a écrit dans le message
de news: %
Bonjour claude

Dans ce cas, si c'est possible, pourquoi ne pas les éliminer avant ?




Non ne pas éliminer les doublons

Sinon, est-il possible de trier chacune de ces plages indépendamment
les
unes des autres ?




Non plus, ne pas trier. Chaque ligne est une "fiche client"

J'aimerais juste récupérer les valeurs uniques

Merci de ton aide









Avatar
Starwing
Bonjour AV,
Encore une chance qu'il ne t'as pas demandé de les trier en plus... ;0)

Petite question:
Set Plage = Sheets("Feuil1").Range("A1:A" & [A65536].End(3).Row)


Que veux bien dire le 3 dans " .End(3).Row " ?

Starwing

Avatar
Daniel.M

Que veux bien dire le 3 dans " .End(3).Row " ?


C'est la même chose que .End(xlUp).Row

Tu vois, AV tient à demeurer incompris et nous n'y pouvons absolument rien. :-)

Salutations,

Daniel M. (secrétaire à l'éradication de l'ambiguité, SPA).

Avatar
Starwing
Je vois...Je vois...mieux maintenant,

Il tient vraiment à demeurer incompris et mystérieux ...

Je divine donc que .End(2).Row ou .End(1).Row
veut sûrement dire xldown ou autres gadgets du genre...

Merci Daniel du renseignement, AV pour rester mystérieux n'aurait peut-être
pas répondu.
Merci pour tout, exégète de AV et (secrétaire à l'éradication de
l'ambiguité, SPA).

Starwing
Avatar
David
Bonjour AV

Merci pour ce code mais je le mets ou ? En remplacement du miens ?

Sinon j'ai essayé ceci

Private Sub Ini()
Val_Uniq_Dans_cmbCaisse
End Sub

Sub Val_Uniq_Dans_cmbCaisse()
Dim Tbl As New Collection
Dim I As Long
Set Plage = Sheets("BDEnvoi").Range("E1:E" & [A65536].End(3).Row)
On Error Resume Next
For Each C In Plage
Tbl.Add C.Value, CStr(C.Value)
Next C
On Error GoTo 0
With Worksheets("BDEnvoi").cmbCaisse
.Clear
For I = 1 To Tbl.Count
.AddItem Tbl(I)
Next I
.ListIndex = 0
End With
Set Tbl = Nothing
End Sub

mais
Variable non définie " Plage = "

alors j'ai rajouté Dim Plage As String

alors "objet requis"

Merci de ton aide
Avatar
David
Bonjour à tous

Et pourquoi pas ????

Merci de l'idée !!! Je vais la soumettre à AV

Salutations
Avatar
David
Bonjour et merci Claude

Si je comprend,

Faire un copier, coller vers une autre colonne (G) et exécuter un filtre
dessus puis effacer la colonne.

L'idée est bonne.

Délicat avec 4 (voir plus) combos dans le même User.

Je vais voir ce que AV me propose si cela ne te dérange pas.

Merci quand même pour ton aide.

David
1 2 3 4