ListBox sur feuille Excel

  • Initiateur de la discussion Initiateur de la discussion Fanfan68
  • Date de début Date de début

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 !

F

Fanfan68

Guest
Bonjour,

Malgré que le sujet sur les listesBox ont été énormément abordé, je n'ai pas trouvé un exemple se rapprochant de mon souci.

Je voudrai créer directement sur ma feuille, une listeBox comportant 3 colonnes.

Le problème c'est que les données qui devront s'y mettre se trouvent sur une autre feuille(MATERIALS) dans les rangées A, B et C.

Le second problème c'est que je connais ma cellule de départ pour chaque colonne(A3, B3, C3) mais pas la dernière cellule, j'ai donc créé pour chaque colonne des noms.
Par exemple 'TOTO' pour la rangée A3:A25, ainsi si une ligne est insérée entre ma rangée 'TOTO' s'actualisera.

Donc en gros pour simplifier, les rowsources de ma listeBox se trouvant sur ma feuille 1 devrait être, pour ma première colonne :
sheets('MATERIALS').range('TOTO')
sheets('MATERIALS').range('TATA') représentant B3:B25 pour la seconde
Et sheets('MATERIALS').range('TITI') représentant C3:C25 pour la seconde.

Mais je sais pas comment faire.

J'espère avoir été assez claire, j'avoue que même moi, j'ai du mal à me relir.....
 
Bonjour fanfan

Une proposition en pièce jointe.


le code :


Private Sub ListBox1_GotFocus()
Dim i As Byte
Dim j As Integer, x As Integer
With ListBox1
        .Clear
        .ColumnCount = 3
        .ColumnWidths = '25;25;25'
End With
With Sheets('feuil2')
       
For i = 1 To 3
                x = 0
               
For j = 3 To .Cells(65536, i).End(xlUp).Row
                        ListBox1.AddItem
                        ListBox1.List(x, i - 1) = .Cells(j, i)
                        x = x + 1
               
Next j
       
Next i
End With
End Sub

salut
[file name=Classeur8.zip size=12533]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Classeur8.zip[/file]
 

Pièces jointes

Merci Hervé,

c'est exactement ce qu'il me fallait, néanmoins, il y a un petit hic, en effet, pour la première et troisième colonne, pas de soucis, par contre sur la deuxième, j'ai une cellule renseignée (montant HT) qui ne doit pas apparaitre dans ma liste, cette cellule sera toujours la dernière cellule renseignée de la colonne.

C'est pourquoi, je pensais qu'il fallait mieux travailler sur des Noms, en supposant que dans ma deuxième colonne je définisse comme Nom 'Libellé' en référence aux cellules B3:B25, sachant comme je l'ai déja dis, que ma plage 'libellé' s'actualisera si on insère des lignes entre, n'est-il pas possible de remplacer dans ton code :

For j = 3 To .Cells(65536, i).End(xlUp).Row

Par un for each cell in range('Libellé').....quelque chose comme ça mais peut-être n'est-ce pas possible.

Merci
 
Re-bonjour Hervé,

Au risque d'exagérer, j'ai vu que dans les propriétés, il était possible d'afficher des en-têtes de colonnes en mettant la propriété 'ColumnHeads' à true.

Ma question est la suivante : est-il possible, pour ces en-têtes de colonnes, de définir une cellule en particulier, exemple les A2, B2 et C2 de ma feuille source

Merci
 
Bonjour fanfan.


ce que tu demande peut etre réalisé par la méthode listfillrange :

Utilises ce code en lieu et place de celui précédent :


Private Sub ListBox1_GotFocus()
With ListBox1
        .ListFillRange = ''
'vide la listbox
        .ColumnCount = 3
'nombre de colonne
        .ColumnWidths = '30;30;30'
'taille de chacune des colonnes
        .ColumnHeads =
True 'entete (oui ou non)
        .ListFillRange = 'Feuil2!toto'
'données
End With
End Sub

La plage nommée toto correspond à tes données en feuille 2, les entetes correspondent aux entetes de tes colonnes. celles-ci ne doivent pas être incluses dans la plage nommée.

salut
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Réponses
4
Affichages
795
Retour