Bonjour à tous,
Je suis actuellement en train de travailler sur un projet en VBA Excel où j'utilise une ListBox pour afficher des données à partir d'une feuille de calcul. J'ai réussi à récupérer les données et à les afficher dans la ListBox, cependant, j'ai un problème d'organisation des colonnes.
Mon ListBox comporte 7 colonnes, mais les données s'affichent de manière désordonnée. Les colonnes semblent être inversées, et les données de chaque ligne sont décalées. J'aimerais organiser les colonnes de manière à ce que les données correspondent aux bonnes colonnes, et qu'elles s'affichent correctement.
J'ai essayé de définir les largeurs des colonnes à l'aide de la propriété ColumnWidths, mais cela n'a pas fonctionné comme prévu. Les données continuent de s'afficher de manière désordonnée.
Je poste ici une partie de mon code pour référence :
Je vous remercie d'avance pour toute aide ou suggestion que vous pourriez me fournir pour résoudre ce problème d'organisation des colonnes dans ma ListBox en VBA Excel. Si vous avez besoin de plus de détails ou de code supplémentaire, n'hésitez pas à me le demander.
Cordialement,
Je suis actuellement en train de travailler sur un projet en VBA Excel où j'utilise une ListBox pour afficher des données à partir d'une feuille de calcul. J'ai réussi à récupérer les données et à les afficher dans la ListBox, cependant, j'ai un problème d'organisation des colonnes.
Mon ListBox comporte 7 colonnes, mais les données s'affichent de manière désordonnée. Les colonnes semblent être inversées, et les données de chaque ligne sont décalées. J'aimerais organiser les colonnes de manière à ce que les données correspondent aux bonnes colonnes, et qu'elles s'affichent correctement.
J'ai essayé de définir les largeurs des colonnes à l'aide de la propriété ColumnWidths, mais cela n'a pas fonctionné comme prévu. Les données continuent de s'afficher de manière désordonnée.
Je poste ici une partie de mon code pour référence :
VB:
Private Sub CIN_Change()
Dim ws As Worksheet
Dim lastRow As Long
Dim searchValue As String
Dim i As Long
Dim rowIndex As Long
Dim listBoxData As String
Dim listBoxArray() As String
' Spécifiez la feuille de travail "DATABASE"
Set ws = ThisWorkbook.Sheets("DATABASE")
' Obtenez la dernière ligne de données dans la colonne C de la feuille "DATABASE"
lastRow = ws.Cells(ws.Rows.Count, "C").End(xlUp).Row
' Obtenez la valeur du TextBox "CIN"
searchValue = Me.CIN.Value
' Effacez le contenu actuel de ListBox3
Me.ListBox3.Clear
' Parcourez les lignes de la feuille "DATABASE" pour trouver les correspondances
For i = 2 To lastRow ' Commencez à la ligne 2 (en supposant que la première ligne contient des en-têtes)
If ws.Cells(i, "C").Value = searchValue Then
' Créez un tableau pour stocker les données de chaque colonne
ReDim listBoxArray(1 To 7)
' Remplissez le tableau avec les données de chaque colonne
listBoxArray(1) = ws.Cells(i, "B").Value ' Colonne B
listBoxArray(2) = ws.Cells(i, "C").Value ' Colonne C
listBoxArray(3) = ws.Cells(i, "F").Value ' Colonne F
listBoxArray(4) = ws.Cells(i, "G").Value ' Colonne G
listBoxArray(5) = ws.Cells(i, "I").Value ' Colonne I
listBoxArray(6) = ws.Cells(i, "L").Value ' Colonne L
listBoxArray(7) = ws.Cells(i, "M").Value ' Colonne M
' Créez une chaîne de données à partir du tableau
listBoxData = Join(listBoxArray, vbTab)
' Ajoutez la chaîne de données à ListBox3
Me.ListBox3.AddItem listBoxData
End If
Next i
Dim total As Double
Dim i2 As Integer
' Initialisez la variable total à zéro
total = 0
' Parcourez tous les éléments de ListBox3
For i2 = 0 To ListBox3.ListCount - 1
' Ajoutez la valeur de la colonne M (index 6) à la somme
total = total + CDbl(Split(ListBox3.List(i2), vbTab)(6)) ' 6 correspond à la 7e colonne (M) dans la chaîne
Next i2
' Affichez la somme totale dans TextBox6
Me.TextBox6.Value = total
End Sub
Je vous remercie d'avance pour toute aide ou suggestion que vous pourriez me fournir pour résoudre ce problème d'organisation des colonnes dans ma ListBox en VBA Excel. Si vous avez besoin de plus de détails ou de code supplémentaire, n'hésitez pas à me le demander.
Cordialement,