Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2019 En-tête fixe ListBox

  • Initiateur de la discussion Initiateur de la discussion ARaul
  • 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 !

ARaul

XLDnaute Nouveau
Bonjour chers experts à divers niveaux

J'ai une préoccupation à mon niveau à propos de ma ListBox à laquelle je veux fixer l'en-tête (une première expérience) mais qui ne répond pas. Je sollicite votre expertise pour y parvenir.

VB:
Function show_data_in_listbox1()
ListBox3.ColumnCount = 10
ListBox3.ColumnWidths = "40;60;40;60;70;70;30;70;70;60"
Dim LastRow As Long
LastRow = Cells(Rows.Count, "A").End(xlUp).Row
ListBox3.RowSource = "COURIERS_RECUS!A3:J" & LastRow
ListBox3.ColumnHeads = True
End Function
 

Pièces jointes

  • Message d'erreur.jpg
    10.1 KB · Affichages: 18
Solution
Salut,
et pourquoi pas utiliser une ListView :
on peut changer le nom des colonnes. Les colonnes sont redimensionnables. On peut avoir des lignes pour séparer les éléments. Pas de limitation sur le nombre de colonnes.
Avec la fonction magique FillLV2D tout se simplifie :
VB:
Public Function FillLV2D(myLv, coln, colw, arr) As Boolean
'Fill ListView with array 2D, coln = name of columns, colw = width of columns, arr = Data 2D
Dim i As Integer, j As Integer
myLv.ListItems.Clear
myLv.ColumnHeaders.Clear
For i = LBound(coln) To UBound(coln)  ' Fill Column Headers
    myLv.ColumnHeaders.Add , , coln(i), colw(i - LBound(coln))
Next i
For i = LBound(arr, 1) To UBound(arr, 1)  ' Fill Data
    myLv.ListItems.Add , , arr(i, 1)
    For j =...
Bonjour tout le monde,

Personnellement, je préfère utiliser ".List" pour prendre aussi le cas du nombre de colonnes supérieur à 10.
J'utilise un tableau structuré pour simplifier le codage et j'ajoute une listbox dédiée aux titres de colonnes.
Je ne dis pas que c'est la meilleure solution. Je propose tout simple ce que je fais dans mes fichiers.

Ci-joint le fichier de @mapomme 😉, sur lequel j'ai ajouté un formulaire avec ma proposition.

Bonne journée.
 

Pièces jointes

Bonjour
pour répondre à la question de toofatboy

Méthode Rowsource
bien pratique l'orsque l'on fait une liste fixe
une liste que ne changera pas
on ne peut pas ajouter, supprimer des items
option entête de colonne

Méthode Additem
mieux pour une liste qui peut évoluer
on peut ajouter, supprimer des items
pas d'entête de colonne
 
J'ai étudié les ListBox cette nuit, et maintenant je comprends pourquoi le camarade vgendron n'a pas répondu à la question que je lui posais :
quel pourrait bien être l'intérêt d'utiliser AddItem si on utilise RowSource ?
Et n'est-il pas justement plus simple et plus rapide d'utiliser RowSource que de faire des boucles avec AddItem ?

En fait il y avait la réponse dans la question : il n'y aurait bien effectivement aucun intérêt à utiliser AddItem lorsqu'on utilise le RowSource. Et en plus, comme il l'a dit, dans ce cas AddItem n'existe tout simplement pas.

Je pensais qu'utiliser le RowSource simplifiait énormément le code VBA pour ajouter, ou supprimer, une ligne à une ListBox, mais en fait la simplfication n'est que légère.
Et pareil pour modifier un élément d'une ligne.
Et si on veut afficher une ListBox "filtrée", ça devient bien compliqué. 😕
 
Dernière édition:
petit cadeau en passant: ma petite base "boite à outils" pour les listbox
 

Pièces jointes

Super. Merci
 
- 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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…