Microsoft 365 Listbox avec plus de 10 colonnes

Excellearning

XLDnaute Nouveau
Bonsoir chers tous;
Je rencontre des soucis avec une listbox de 11 colonnes.
Lorsque j'essais d'insérer des données, je rencontre l'erreur 380 à la 11 onzième colonnes.
Je demande votre aide pour résoudre ce problème si possible.
Merci.
Ci-joint le code:
Private Sub UserForm_Activate()
Dim SheetUser As String​
Dim i As Long​
Dim j As Long​
Dim p As Long​
Dim nbr As Long​
Dim user As String​
'Dim Reexecute As PageSetup​
Dim Resp As VbMsgBoxResult​
Dim Resp2 As VbMsgBoxResult​
user = Application.UserName​
SheetUser = "Temp_" & Split(Trim(user), " ")(0)​
nbr = NbrLineTable(SheetUser, SheetUser)​
'MsgBox SheetExist(SheetUser)​
If SheetExist(SheetUser) And nbr > 0 Then​
If MsgBox("Voulez-vous charger le brouillon?", vbQuestion + vbYesNo, "Upload") = vbYes Then​
Reexecute:​
SocietyList.Show​
'Society = SocietyList.BSelectSociety.Value​
'MsgBox SocietyNameValue & " sç " & SocietyList.BSelectSociety.Value​
'Exit Sub​
If SocietyNameValue = "" Then​
Resp = MsgBox("Vous n'avez pas selectionner une société." & vbCrLf & "Voulez-vous réessayer?", vbQuestion + vbRetryCancel + vbSystemModal, "Upload")​
If Resp = vbRetry Then GoTo Reexecute Else Exit Sub​
ElseIf FindValueRow(TableArea(SheetUser, SheetUser, 1), SocietyNameValue) = 0 Then​
Resp2 = MsgBox("La société " & SocietyNameValue & " n'a pas de données en brouillon." & vbCrLf & "Voulez-vous choisir une autre société?", vbQuestion + vbRetryCancel + vbSystemModal, "Upload")​
If Resp2 = vbRetry Then GoTo Reexecute Else Exit Sub​
End If​
'MsgBox "Societ" & Me.RecordBody.ListCount​
With Me.SelectSocietyBox: .Value = SocietyNameValue: .Enabled = False: End With​
'MsgBox Me.RecordBody.ColumnCount​
p = 0​
Do While i < nbr​
If GetCells(i + 1, 1, SheetUser, SheetUser).Value = SocietyNameValue Then​
With Me.RecordBody​
.AddItem 'GetCells(i + 1, j + 2, SheetUser, SheetUser).Value​
'On Error Resume Next​
For j = 0 To 10​
If IsNumeric(GetCells(i + 1, j + 2, SheetUser, SheetUser).Value) Then​
.List(p, j) = Format(GetCells(i + 1, j + 2, SheetUser, SheetUser).Value, "#,##0.000")​
Else​
.List(p, j) = GetCells(i + 1, j + 2, SheetUser, SheetUser).Value​
End If​
'GetCells(i + 1, 12, SheetUser, SheetUser).Value = "Up"​
Next​
'MsgBox .List(p, 10)​
End With​
p = p + 1​
End If​
i = i + 1​
Loop​
'MsgBox Me.RecordBody.ListCount​
'MsgBox "Societ" & Me.RecordBody.ListCount​
NbLigne = nbr​
Me.DebitBalance.Caption = Format(Round(CDbl(CalculateSum()(1)), 0), "#,##0")​
Me.CreditBalance.Caption = Format(Round(-CDbl(CalculateSum()(2)), 0), "#,##0")​
Balance = CalculateSum()(1) + CalculateSum()(2)​
Me.Bltext.Caption = Format(Round(CDbl(Balance), 0), "#,##0")​
MsgBox "Le brouillon a été chargé avec succès.", vbOKOnly + vbSystemModal, "Upload"​
End If​
End If​
End Sub
 

jurassic pork

XLDnaute Occasionnel
Hello,
sur ce problème voici ce que réponds l' I.A du navigateur Brave :
La limitation de 10 colonnes dans une listbox VBA est due à la propriété List qui ne peut accepter qu’un seul index. Cette propriété est utilisée pour stocker les valeurs dans la listbox. Si vous essayez d’ajouter plus de 10 éléments à la listbox, la propriété List sera remplacée et les éléments précédemment ajoutés seront perdus.

Pour contourner ce problème, vous pouvez utiliser un tableau pour stocker vos données et puis les ajouter à la listbox en utilisant la méthode AddItem. Voici un exemple de code pour ajouter 20 éléments à une listbox :

VB:
Dim myList As New ListBox
Dim myTable As Variant
myTable = Range("A1:E20").Value ' Stockez vos données dans un tableau

For i = 1 To UBound(myTable, 2)
    myList.AddItem myTable(1, i)
Next i

Il est important de noter que la propriété List est remplacée par la méthode AddItem pour ajouter des éléments à la listbox.

Je vous recommande également de vérifier si vos données sont bien stockées dans un tableau avant de les ajouter à la listbox. Vous pouvez utiliser la méthode UBound pour déterminer le nombre de colonnes dans votre tableau.

J’espère que cela vous aidera à résoudre votre problème. Si vous avez d’autres questions ou avez besoin de plus d’aide, n’hésitez pas à me demander !
Attention ! je n'ai pas vérifié ce que raconte l'I.A 🤫

Ami calmant, J.P
 
Dernière édition:

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir à tous :),

Cette ligne VBA affecte plus de 10 colonnes à une ListBox (12 colonnes) :
VB:
ReDim t(1 To 1, 1 To 12): ListBox1.List = t: ListBox1.ColumnCount = UBound(t, 2): ListBox1.RemoveItem 0

Dans le classeur joint, un exemple de ListBox à 12 colonnes (procédure UserForm_Initialize) et aussi un exemple pour ajouter une ligne dans la ListBox à partir de 12 TextBox (juste pour illustrer).

nota : une fois la ListBox configurée à 12 colonnes, on pourrait aussi directement lui assigner des valeurs via sa propriété List : ListBox1.List= range("A2:L10").Value

Le code dans Userform1 :
VB:
Private Sub UserForm_Initialize()
Dim j&, s
   ' Listbox1 avec 12 colonnes
   ReDim t(1 To 1, 1 To 12): ListBox1.List = t: ListBox1.ColumnCount = UBound(t, 2): ListBox1.RemoveItem 0
 
   For j = 1 To UBound(t, 2): s = s & ";" & 35: Next  ' réduire la largeur des colonnes par défaut
   ListBox1.ColumnWidths = Mid(s, 2)
End Sub

Private Sub CommandButton1_Click()
Dim j&, s
   For j = 1 To ListBox1.ColumnCount: s = s & Controls("textbox" & j): Next
   If s <> "" Then
      ListBox1.AddItem TextBox1
      For j = 2 To ListBox1.ColumnCount
         ListBox1.List(ListBox1.ListCount - 1, j - 1) = Controls("textbox" & j)
      Next j
   End If
End Sub
 

Pièces jointes

  • Excellearning-Listbox sup 10 col- v1.xlsm
    22.5 KB · Affichages: 6
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
bonsoir
 

Excellearning

XLDnaute Nouveau
Hello,
sur ce problème voici ce que réponds l' I.A du navigateur Brave :


VB:
Dim myList As New ListBox
Dim myTable As Variant
myTable = Range("A1:E20").Value ' Stockez vos données dans un tableau

For i = 1 To UBound(myTable, 2)
    myList.AddItem myTable(1, i)
Next i


Attention ! je n'ai pas vérifié ce que raconte l'I.A 🤫

Ami calmant, J.P
J'ai essayé mais je reçois toujours le même message d'erreur.
Finalement, j'ai dû déclarer un tableau à deux dimensions pour charger les données.
Et après à ListBox.list le tableau obtenu.
Merci beaucoup pour votre réaction.
 

Discussions similaires

Réponses
4
Affichages
394

Statistiques des forums

Discussions
314 422
Messages
2 109 447
Membres
110 482
dernier inscrit
ilyxxxh