vba Excel afficher une liste triée dans une combobox

echarlotte

XLDnaute Nouveau
Bonjour à Tous,
Si quelqu'un peu m'aider, car je me prends la tête depuis un petit moment !! :mad:
L'objectif de mon programme est de pouvoir afficher une liste triée dans une combobox en fonction d'une checkbox.
Je m'explique : j'ai 2 checkbox (une pour les entrées froides l'autre pour les entrées chaudes) et en fonction de celle qui est cochée ma combobox m'affiche les entrées correspondantes. Avec un tri au préalable car toutes les entrées sont dans la même colonne (colonneD), donc je réalise un tri pour avoir que les entrées (froides ou chaudes) selectionnées.
Mon souci, c'est que quelque soit le choix des entrées, il ne m'affiche que la 1ère entrée.
Donc si vous pouvez m'aider à résoudre ce souci cela serait sympa.

Je vous mets mon petit bout de code.
Merci par avance. ;)
Sub plat()

Dim i, L As Integer
Dim Cell As Range


If Feuil10.CheckBox4.Value = True Then 'je souhaite une entrée froide
Feuil8.Range("$A$1:$I$237").AutoFilter Field:=5, Criteria1:="OUI"
For Each Cel In Feuil8.Range("D2:D" & [D65000].End(xlUp).Row).SpecialCells(xlCellTypeVisible)
Feuil10.ComboBox1.AddItem Cel
Next Cel
Else
Feuil8.Range("$A$1:$I$237").AutoFilter Field:=5, Criteria1:="NON"
Feuil10.ComboBox1.Clear
For Each Cel In Feuil8.Range("D2:D" & [D65000].End(xlUp).Row).SpecialCells(xlCellTypeVisible)
Feuil10.ComboBox1.AddItem Cel
Next Cel
End If

End Sub
 

Papou-net

XLDnaute Barbatruc
Re : vba Excel afficher une liste triée dans une combobox

Bonsoir echarlotte, et bienvenue sur ce forum,

A première vue, la lecture de ton code ne révèle pas d'anomalie flagrante.
Toutefois, si tu réussissais à remplir ton combobox, tu y découvrirais des doublons. Je m'explique :

Puisque tu utilises la méthode AddItem, il ne faut pas oublier de vider la liste auparavant, car les données s'ajoutent à la suite de celles déjà présentes.

Pour ce faire :
Code:
Feuil10.ComboBox1.Clear

Pour le reste, peux-tu joindre ton fichier car au vu des données, je ne pense pas qu'il soit de nature très confidentielle ? Et cela permettrait de cerner le problème de façon plus efficace.

A te lire.

Cordialement.
 

Bebere

XLDnaute Barbatruc
Re : vba Excel afficher une liste triée dans une combobox

bonjour Echarlotte,Papounet
ajout de :D
Feuil8.Range("D2:D" & [D65000].End(xlUp).Row).SpecialCells(xlCellTypeVisible)
Feuil10.ComboBox1.list=Feuil8.Range("D2:D" & [D65000].End(xlUp).Row).SpecialCells(xlCellTypeVisible).value
à bientôt
 

Bebere

XLDnaute Barbatruc
Re : vba Excel afficher une liste triée dans une combobox

re
une réponse plus complète

Sub plat()
Dim i, L As Integer
Dim Cell As Range, Rng As Range, Crit As String
Dim Tbl As Variant
If Feuil10.CheckBox4.Value = True Then
Crit = "OUI"
Else
Crit = "NON"
End If


With Feuil8
.Activate
Set Rng = .Range("D2", [D64000].End(xlUp))

If Not .AutoFilterMode Then
.Range("A1").AutoFilter
End If
.Range("A1").AutoFilter Field:=5, Criteria1:=Crit
Set Rng = Rng.SpecialCells(xlCellTypeVisible)
End With
ReDim Tbl(0 To Rng.Count - 1)

For Each Cell In Rng
Tbl(i) = Cell.Value
i = i + 1
Next

'Feuil10.ComboBox1.Clear
Feuil10.ComboBox1.List = Tbl

If ActiveSheet.FilterMode Then
ActiveSheet.ShowAllData
End If

End Sub

à bientôt
 

echarlotte

XLDnaute Nouveau
Re : vba Excel afficher une liste triée dans une combobox

Bonjour à tous,

Béber, je te remercie encore pour ton bout de code. J'essaie maintenant de l'adapter suivant plusieurs critères (c'est à dire plusieurs checkbox). Ca fonctionne bien, le seul hic est que la liste qu'il m'affiche dans ma combobox est entre coupée de 2 lignes, c'est à dire qu'il me crée des lignes blanches.

Pouvez-vous me dire où se situe mon erreur SVP?
Je joins mon fichier si jamais cela peut aider.
Merci encore.

Voici mon bout de code
Sub plat()
Dim i, L As Integer
Dim Cell As Range, Rng As Range, Crit As String
Dim Tbl As Variant

If Feuil10.CheckBox5.Value = True Then
Crit = "légume"
End If
'
If Feuil10.CheckBox6.Value = True Then
Crit = "poisson"
End If
'
If Feuil10.CheckBox7.Value = True Then
Crit = "viande"
End If
'
If Feuil10.CheckBox1.Value = True Then
Crit = "autre"
End If

With Feuil8
.Activate
Set Rng = Feuil8.Range("F2", [D64000].End(xlUp))

If Not Feuil8.AutoFilterMode Then
Feuil8.Range("A1").AutoFilter
End If
Feuil8.Range("A1").AutoFilter Field:=7, Criteria1:=Crit
Set Rng = Rng.SpecialCells(xlCellTypeVisible)
End With
ReDim Tbl(0 To Rng.Count - 1)

For Each Cell In Rng
Tbl(i) = Cell.Value
i = i + 1
Next


Feuil10.ComboBox2.Clear
Feuil10.ComboBox2.List = Tbl


If ActiveSheet.FilterMode Then
ActiveSheet.ShowAllData 'supprime le filtrage
End If

Feuil10.Select

End Sub
 

Bebere

XLDnaute Barbatruc
Re : vba Excel afficher une liste triée dans une combobox

bonjour Echarlotte
une solution
remplace cette ligne
Feuil10.ComboBox2.List = Tbl
par

for l=0 to ubound(tbl)
if tbl(l)<>"" then Feuil10.ComboBox2.additem tbl(l)
next

à bientôt
 

Discussions similaires

Réponses
2
Affichages
694
Réponses
22
Affichages
2 K

Statistiques des forums

Discussions
312 364
Messages
2 087 624
Membres
103 624
dernier inscrit
PhilduMorvan