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

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 Junior
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
 
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: 1
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
bonsoir
 

Excellearning

XLDnaute Nouveau
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.
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…