Récupérer une liste dans un CombBox

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Re : Récupérer une liste dans un CombBox

Hola néné06,

Jacquou ??? Ah oui !
J'ai eu l'occasion de le rencontrer plusieurs fois à la Punta del Este où il se fit bâtir une maison qu'il baptisa "Isla Santiago" (= "Île Jacques"). N'en déplaise à certains, c'était un type franchement très sympatique et intéressant.

Merci pour ton aide. C'est presque parfait.
J'ai fait quelques modifications. Je joins le classeur où j'y ai mis mes questions.

Bonne soirée.
 

Pièces jointes

Re : Récupérer une liste dans un CombBox

Bonjour,

J'ai résolu le problème des lignes vacantes dans le 2ème ComboBox quand on choisissait le dernier item du 1er ComboBox.
En revanche, je ne parviens toujours pas, quand le 2ème ComboBox s'actualise, à faire en sorte que le 1er item de sa liste soit sélectionné par défaut.

Quelqu'un aurait-il une idée ?

Merci d'avance pour toute suggestion.
 

Pièces jointes

Re : Récupérer une liste dans un CombBox

Bonjour Magic_Doctor, néné06, Laetitia 🙂

Pourquoi faire simple quand on peut faire compliqué :

Code:
Private Sub ComboBox1_Change()
Dim n As Byte, i As Byte, h As Byte
n = ComboBox1.ListIndex + 1
ComboBox2.Clear 'RAZ
If n = 0 Then Exit Sub
With Sheets("Hoja2").[B3:B42]
  i = Application.Match(n, .Cells, 0)
  h = Application.CountIf(.Cells, n)
  ComboBox2.List = .Cells(i, 2).Resize(h).Value
  ComboBox2.ListIndex = 0
End With
End Sub
Inutile d'utiliser la cellule E6.

Fichier joint.

A+
 

Pièces jointes

Re : Récupérer une liste dans un CombBox

Re,

La macro beuguait pour "Divers" car la propriété List nécessite au moins 2 éléments.

Alors créons 2 colonnes avec Resize :

Code:
Private Sub ComboBox1_Change()
Dim n As Byte, i As Byte, h As Byte
n = ComboBox1.ListIndex + 1
ComboBox2.Clear 'RAZ
If n = 0 Then Exit Sub
With Sheets("Hoja2").[B3:B42]
  i = Application.Match(n, .Cells, 0)
  h = Application.CountIf(.Cells, n)
  ComboBox2.List = .Cells(i, 2).Resize(h, 2).Value '2 colonnes
  ComboBox2.ListIndex = 0
End With
End Sub
Bien sûr une seule colonne s'affiche.

Fichier (2).

A+
 

Pièces jointes

Dernière édition:
Re : Récupérer une liste dans un CombBox

Re,

On aura bien vu qu'à l'ouverture du fichier la liste de ComboBox2 est vide.

Pour l'éviter on peut utiliser la propriété ListFillRange :

Code:
Private Sub ComboBox1_Change()
Dim n As Byte, i As Byte, h As Byte
n = ComboBox1.ListIndex + 1
ComboBox2 = "": ComboBox2.ListFillRange = "" 'RAZ
If n = 0 Then Exit Sub
With Hoja2.[B3:B42] 'CodeName de la feuille
  i = Application.Match(n, .Cells, 0)
  h = Application.CountIf(.Cells, n)
  With .Cells(i, 2).Resize(h)
    ComboBox2.ListFillRange = "'" & .Parent.Name & "'!" & .Address
  End With
  ComboBox2.ListIndex = 0
End With
End Sub
Si l'on voulait toujours utiliser la propriété List il faudrait une macro Workbook_Open.

Fichier (3).

Edit : il faut mettre le nom de la feuille entre 'quotes' au cas où il y aurait des espaces.

A+
 

Pièces jointes

Dernière édition:
Re : Récupérer une liste dans un CombBox

Bonjour à tous,

Merci pour vos réponses.
Décidément, le minimalisme de job me fait comprendre que le chemin du VBA est encore long...
J'ai fait quelques modifications mineures, d'abord en nommant la plage [B3:B42], mais surtout il se trouve que quand on choisissait le dernier item ("Inclassés") du ComboBox1, dans le ComboBox2 apparaissait des lignes inutilement vides.
Je ne sais pas si le moyen que j'ai choisi pour résoudre ce problème est le plus orthodoxe, mais ça semble marcher.
J'ai bien lu ta macro, mais j'avoue que :

VB:
ComboBox2.ListFillRange = "'" & .Parent.Name & "'!" & .Address

me laisse perplexe.

Encore une chose qui n'a rien à voir avec ce fil, mais que j'ai fréquemment rencontrée, en l'occurrence au cours de ce fil.
J'envoie une feuille avec des cellules colorées.
On me renvoie la feuille et la couleur des cellules n'est plus forcément la même.
À quoi est dû ce phénomène ?

Je joins un exemple.

Encore merci et bonne après-midi à tous.
 

Pièces jointes

Dernière édition:
Re : Récupérer une liste dans un CombBox

Re Magic_Doctor,

1) OK pour éviter les lignes vides mais plutôt qu'une nouvelle fonction autant utiliser CountA :

Code:
nblgn = Application.CountA([ListeItems3]) 'renvoie le nombre de lignes non vides du tableau "ListeItems3"
Fichier (4).

2) La propriété ListFillRange doit être renseignée soit par le nom donné à la plage soit par son adresse.

Dans ce dernier cas il faut indiquer le nom de la feuille (.Parent.Name), sans oublier les 'quotes' s'il y a des espaces.

3) Quant aux couleurs il y a souvent de la perte en ligne quand on passe d'un fichier .xlsm à un fichier .xls...

A+
 

Pièces jointes

Re : Récupérer une liste dans un CombBox

Merci job,

J'avais complètement oublié "CountA" ; autant pour moi !

En revanche, ne comprenant toujours pas "'" et "'!", j'ai tenté de chercher dans l'aide au sujet de "ListFillRange", sur ma version d'Excel il n'y a rien.

Mais encore merci.
 
Re : Récupérer une liste dans un CombBox

Malheureusement je reviens sur le sujet.
Le classeur que j'avais posté est évidemment une version simplifiée de celui où je travaille.
Les différences ne sont pas notables (ComboBox nommés, feuilles nommées (là serait peut-être le problème), le tableau "ListeItems3" comportant en fait 2 colonnes).
Je pense avoir bien fait les rectifications nécessaires, mais je ne comprends pas pourquoi ça plante.
 

Pièces jointes

Re : Récupérer une liste dans un CombBox

Re,

Dis on ne va quand même pas passer des heures à triturer tes fiéfées ComboBoxes 🙄

Code:
Set plage = [ListeItems3].Columns(1) '1ère colonne du tableau "ListeItems3"
'------------------
With plage.Resize(nblgn).Offset(, -1) 'CodeName de la feuille
'------------------
A+
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Liste de choix...
Réponses
8
Affichages
323
Retour