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 Barbatruc
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 Impliqué
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 Barbatruc
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 Impliqué
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
 

VIARD

XLDnaute Impliqué
Bonjour à toutes et tous

En fait j'ai continué mes manips sur la ListBox, la largeur des colonnes posaient problème.
et puis 25 colonnes ça fait long, donc l'idée que beaucoup ont eu sur le site et ailleurs,
c'est de récupérer la largeur de la colonne "Feuil" pour l'appliquer à la ListBox, ainsi peu importe la largeur
de la colonne feuil elle sera recopiée moyennant d'ajuster un coefficient (1,1 à 1,2).

VB:
Sub Affichage_Couple_Final()
Dim i%, f As Worksheet, cw$

Set f = Sheets("Feuil7")
    With ListBox4
        cw = ""
        .RowSource = "C3:AA6" '
        .MultiSelect = fmMultiSelectMulti
        .ColumnCount = f.[C3:AA6].Columns.Count '25
'---- récupère la largeur des colonnes Feuil pour l'appliquer aux colonnes ListBox -----
        For i = 1 To f.[C3:AA6].Columns.Count
            cw = cw & f.[C3:AA6].Columns(i).Width * 1.18 & ";"
        Next i
        .ColumnWidths = cw
        .Height = 42
        .Width = 580
    End With
End Sub
Et merci à l'intervention de @job75 et @patrick
A+ Jean-Paul
 

patricktoulon

XLDnaute Barbatruc
Bonjour
c'est 1.25 et non 1.18 et tu verra que ce nombre ressort beaucoup en vba excel
et puis par pitié

.list=[C3:AA6]

utiliser rowsource en vba est absurde selon moi
 

job75

XLDnaute Barbatruc
Bonjour VIARD, patricktoulon,
c'est 1.25 et non 1.18 et tu verra que ce nombre ressort beaucoup en vba excel
et puis par pitié

.list="C3:AA6"
Avec ça on aura à tout coup un bug mais on a pitié.

Edit : .list=[C3:AA6] ne va pas non plus il faut évidemment .list=[C3:AA6].Value

Pour ce qui est de l'utilisation de RowSource mes posts #7 et #10 sont clairs.

A+
 
Dernière édition:

VIARD

XLDnaute Impliqué
Re Job, Patrick

Désolé, mais le coefficient à 1.2 ça ne marche pas chez moi.

Et puis le RowSource qu'a t'il de moche ...

A+
 

Créez un compte ou connectez vous pour répondre

Vous devez être membre afin de pouvoir répondre ici

Créer un compte

Créez un compte Excel Downloads. C'est simple!

Connexion

Vous avez déjà un compte? Connectez vous ici.

Haut Bas