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
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)direction-ternoise@wanadoo.fr> a écrit dans le message
de news: u65OpczwEHA.3024@TK2MSFTNGP14.phx.gbl...
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
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
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
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"
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
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
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
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
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
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)direction-ternoise@wanadoo.fr> a écrit dans le message
de news: %23ChwfD0wEHA.1308@TK2MSFTNGP09.phx.gbl...
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"
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
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
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)
Tu vois, AV tient à demeurer incompris et nous n'y pouvons absolument rien. :-)
Salutations,
Daniel M. (secrétaire à l'éradication de l'ambiguité, SPA).
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
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).
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
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
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
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