XL 2016 Remplir listbox avec 11 colonnes

KTM

XLDnaute Occasionnel
Bonjour cher Forum
J'aimerais afficher les données de ma table dans mon listbox mais la 11e colonne pause problème
Comment m'y prendre ?
 

Fichiers joints

KTM

XLDnaute Occasionnel
Merci Job 75
Un petit detail :
Je voudrais que Le format des dates ( Mois et Echeance ) soit le meme que sur la table
Encore merci
 

Fichiers joints

herve62

XLDnaute Barbatruc
Bonjour
Pour avoir eu le Pb , il me semble qu'on m'avait répondu que le Nbre max de colonnes était limité à 10 ( de 0 à9 ) car ensuite le"additem" ne fonctionne pas
sinon il fallait passer par "listview"
 

job75

XLDnaute Barbatruc
Bonjour KTM, JB, Bruno, herve62,
Je voudrais que Le format des dates ( Mois et Echeance ) soit le meme que sur la table
Je m'en suis aperçu c'est pourquoi j'ai supprimé mon 1er message qui utilisait la méthode List..

Il faut alors utiliser en effet la méthode RowSource :
VB:
Private Sub UserForm_Initialize()
With [A1].CurrentRegion
    ListBox2.ColumnCount = .Columns.Count
    If .Rows.Count > 1 Then ListBox2.RowSource = .Rows(2).Resize(.Rows.Count - 1).Address
End With
End Sub
Bon dimanche.
 

KTM

XLDnaute Occasionnel
Bonjour KTM, JB, Bruno, herve62,

Je m'en suis aperçu c'est pourquoi j'ai supprimé mon 1er message qui utilisait la méthode List..

Il faut alors utiliser en effet la méthode RowSource :
VB:
Private Sub UserForm_Initialize()
With [A1].CurrentRegion
    ListBox2.ColumnCount = .Columns.Count
    If .Rows.Count > 1 Then ListBox2.RowSource = .Rows(2).Resize(.Rows.Count - 1).Address
End With
End Sub
Bon dimanche.
INFINIMENT MERCI
 

Hervé

XLDnaute Barbatruc
bonjour :)

on pourrait aussi imaginer passer par un tablo ?

VB:
Private Sub UserForm_Initialize()
Dim tablo
With [A1].CurrentRegion
ListBox2.ColumnCount = .Columns.Count
tablo = .Rows(2).Resize(.Rows.Count - 1)
ListBox2.list = tablo
End With
End Sub
a plus
 

job75

XLDnaute Barbatruc
Bonjour Hervé,
on pourrait aussi imaginer passer par un tablo ?
Oui c'est la méthode List, une des 3 méthodes pour remplir une ListBox.

Mais comme je le disais elle ne permet pas de conserver les formats des dates du tableau source, alors que la méthode RowSource le permet.

A+
 

herve62

XLDnaute Barbatruc
Là en parcourant les autres forums > truc et astuces , je viens de voir un sujet de Patricktoulon avec sa démo
peut être a en tirer profit ? apparemment c'est du rowsource aussi
 

patricktoulon

XLDnaute Accro
re
bonjour a tous
plus-de-10-colonnes-dans-une-listebox-sans-utiliser-la-propriete-rowsource

peut être a en tirer profit ? apparemment c'est du rowsource aussi
@herve62 non ben justement ça n'est pas du rowsource il ne faut pas lire en diagonale ;)
d'ailleurs le titre est assez révélateur de l'intention ;)

apres si il s'agit de mettre simplement une plage dans un listbox

VB:
set plage=range(xx:yy)

with listbox1

  .columncount =plage.columns.count

  .value=plage.value

end with
maintenant si tu dois trier avant de mettre dans la listebox et donc te servir de additem la oui l'astuce te sera utile
 
Dernière édition:

VIARD

XLDnaute Occasionnel
Bonjour à tous

Pour ma part j'ai ceci avec 25 colonnes.

VB:
For i = 1 To 4
    With ListBox4
        .Font = "tahoma"
        .ColumnHeads = False
        .TextColumn = -1
        .RowSource = "C3:AA" & i + 2
        .MultiSelect = fmMultiSelectMulti
        .ColumnCount = 25
        .ColumnWidths = "23;23;23;23;23;23;23;23;23;23;23;23;23;23;23;23;23;23;23;23;23;23;23;23;23"
        .Height = 42
        .Width = 580
    End With
Next i
juste pour l'exemple.
les autres approches intéressantes.

A+ Jean-Paul
 

job75

XLDnaute Barbatruc
Bonsoir VIARD,

Pas compris où vous voulez en venir, pourquoi ne pas initialiser les propriétés à la main une fois pour toutes ?

A+
 

patricktoulon

XLDnaute Accro
bonsoir @VIARD , @job75
je pige pas non plus la boucle
ni l'utilisation de rowssource par vba
d'autant plus que le header est false

VB:
Set f = Sheets("tartampion")
    With ListBox4
       ' .Font .name= "tahoma"'????? ca l'est pas deja a l'origine????
         '.TextColumn = -1'??????
        .List = f.[C3:AA6].Value
        .MultiSelect = fmMultiSelectMulti
        .ColumnCount = f.[C3:AA6].Columns.Count
        .ColumnWidths = String(f.[C3:AA6].Columns.Count, "23;" & "0")
        .Height = 42
        .Width = 580
    End With
 

VIARD

XLDnaute Occasionnel
Bonsoir @patrick @job75

Ce prog. tourne depuis une dizaine d'année. pas de souci.
Erreur de jeunesse pour ces défauts.
Toutefois vos remarques sont fondées et corrections ok.
juste pour montrer que l'on dépasse les 10 colonnes.

Salutation à tous et bonne nuit
Jean-Paul
 
Haut Bas