XL 2013 Listbox : > à 10 colonnes

Golfolies

XLDnaute Nouveau
Bonjour à tous,

Ma problématique :
J'ai plus ou moins 14-15 txt à pouvoir visualiser dans une listbox avant de les mettre en tableau.
Malheureusement, uniquement 10 colonnes s'affichent.

Comment visualiser plus de 10 colonnes dans ma listbox ?

Merci pour votre aide.

Olivier
 

Golfolies

XLDnaute Nouveau
Re,
J'ai regardé quelques exemples, mais j'ai dû mal exprimer ma demande ou pas compris ce qu'il fallait faire.

Ci-dessous mon formulaire avec la listbox que je souhaite remplir.
II manque la Colonne C et j'aimerais également rajouté les 3 checks box sous "Disponibilité".
Ce n'est qu'une fois la listbox rempli par Enseigne que les informations iront dans la feuille (en cliquant sur sauvegarder).

Egalement ci-dessous, mon code.



1617979464964.png


Private Sub btnAjouter_Click()

'***********************************************************************
'Procédure d'alimentation de la listbox "listSaveursClient" des produits
'en magasin.
'************************************************************************


'Déclaration des variables
Dim nbControles As Integer 'pour indiquer le nombre de contrôles qu'à le formulaire, txt,etc...
Dim nbItem As Integer 'pas 32000 lignes de commandes d'où "integer"

'Affectation des variables
nbControles = 14 'on compte le nombre de contrôle et on lui indique le nombre de colonne

'On test en premier la "txtSocle" pour qu'elle ne soit pas vide.
'Evite d'enregistrer une ligne vide

If Me.txtSocle.Value = "" Then

MsgBox "Veuillez saisir un nombre de colis svpl.", vbOKOnly + vbInformation, "Validation"
Exit Sub


End If


'Message de validation de l'article à commander

If MsgBox("Confirmez-vous votre Sélection ?", vbYesNo, "Validation") = vbYes Then


End If


Me.listeSaveursClient.AddItem txtGencode 'on lui indique la première colonne "Gencod"
nbItem = Me.listeSaveursClient.ListCount - 1 '-1 car on commence à 0. On compte le nb d'item dans la liste

'On charge les contrôles dans la listbox


Me.listeSaveursClient.List(nbItem, 1) = Me.txtSaveurChoisie 'on charge la désignation
Me.listeSaveursClient.List(nbItem, 2) = Me.txtSocle
Me.listeSaveursClient.List(nbItem, 3) = Me.txtTablette1
Me.listeSaveursClient.List(nbItem, 4) = Me.txtTablette2
Me.listeSaveursClient.List(nbItem, 5) = Me.txtTablette3
Me.listeSaveursClient.List(nbItem, 6) = Me.txtTablette4
Me.listeSaveursClient.List(nbItem, 7) = Me.txtTablette5
Me.listeSaveursClient.List(nbItem, 8) = Me.txtTablette6
Me.listeSaveursClient.List(nbItem, 9) = Me.txtTablette7
Me.listeSaveursClient.List(nbItem, 10) = Me.txtTablette8


MsgBox "Votre choix a été entregistré."




End Sub

La ligne 10 (ou colonne 10) ne s'affiche pas et il y un beug là-dessus. J'ai compris avec Additem pas plus de 10 colonnes;

Merci pour votre retour.
Olivier
 

dysorthographie

XLDnaute Accro
Bonjour,
il faut passer par un objet intermédiaire, ADODB.Recordset pour ma part, pour charger ListBox1 en une seul fois!
notes que ça ne fonctionne que sur Windows!
VB:
Dim Rs As Object 'ADODB.Recordset
Private Sub UserForm_Initialize()
Set Rs = CreateObject("ADODB.Recordset")
Const adChar = 129
For i = 1 To 11
    Rs.Fields.Append "TextBox" & i, adChar, 255
Next
Rs.Open
Me.ListBox1.ColumnCount = 11
End Sub

Private Sub AjouterLigne_Click()
Rs.AddNew
For i = 1 To 11
  Rs("TextBox" & i) = Me.Controls("TextBox" & i).Text
Next
Rs.Update
Rs.MoveFirst
Me.ListBox1.Column = Rs.GetRows
End Sub
 

patricktoulon

XLDnaute Barbatruc
bonjour
il est parfaitement possible d'avoir 15 colonnes dans une listbox et de pouvoir la remplir dans une double boucle (lignes/colonne imbriqué
l'astuce est simple
il suffit delui injecter une plage.value ou une variable tableau et de l'effacer ("clear")

exemple
VB:
Private Sub UserForm_Activate()
    Dim tablo, cw, i&, c&
    ReDim tablo(1, 1 To 15)
    With ListBox1
        .ColumnCount = UBound(tablo, 2)
        .List = tablo
        cw = Application.Rept("70 ", .ColumnCount)
        .ColumnWidths = Replace(Trim(cw), " ", ";")
        .Clear
        For i = 1 To 10
            .AddItem "toto lig" & i & "_" & "col0"
            For c = 1 To 15
                .List(.ListCount - 1, c - 1) = "toto lig" & i & "- col" & c
            Next c
        Next i
    End With

End Sub
petite dedicace pour mon ami robert ;)
a noter que ça fonctionne pour mac aussi
 
Dernière édition:

Golfolies

XLDnaute Nouveau
Bonjour,
il faut passer par un objet intermédiaire, ADODB.Recordset pour ma part, pour charger ListBox1 en une seul fois!
notes que ça ne fonctionne que sur Windows!
VB:
Dim Rs As Object 'ADODB.Recordset
Private Sub UserForm_Initialize()
Set Rs = CreateObject("ADODB.Recordset")
Const adChar = 129
For i = 1 To 11
    Rs.Fields.Append "TextBox" & i, adChar, 255
Next
Rs.Open
Me.ListBox1.ColumnCount = 11
End Sub

Private Sub AjouterLigne_Click()
Rs.AddNew
For i = 1 To 11
  Rs("TextBox" & i) = Me.Controls("TextBox" & i).Text
Next
Rs.Update
Rs.MoveFirst
Me.ListBox1.Column = Rs.GetRows
End Sub
Avec du retard, je suis souvent en déplacement, MERCI.
Ca fonctionne.
Bonne journée,
Olivier
 

Discussions similaires

Statistiques des forums

Discussions
315 093
Messages
2 116 132
Membres
112 667
dernier inscrit
foyoman