Afficher plusieurs Tableau dans une ListBox

Bonjour cher Forum!

J'ai un petit soucis dont je n'arrive pas à trouver la solution alors peut-être pouvez-vous m'aider?

J'aimerais pouvoir afficher plusieurs données de plusieurs tableau ce retrouvant sur la même feuille du classeur. Il faut également savoir que les tableaux que je cherche à afficher on peut y retrouver des cellules vides et quand plus des lignes vont s'y ajouter ou se supprimer. Il est donc important de pas les lier par un Range("D1:D43") par-exemple. Je vous mets mon code ici qui fonctionne très bien pour l'un des tableaux. Toutefois je voudrais pouvoir incorporer les 10 sur la même feuille :

    Dim CT

    CT = Range("TB_DIV0")

    With UF3e_ListBox1
        .ColumnCount = UBound(CT, 2)
        .List = CT

    End With

Pouvez-vous m'aider? :)

Finalement je fais une mise à jour, je me rends compte qu'il entre les cellules vides aussi dans la ListBox... Donc finalement mon code ne fonctionne pas plus.

Considérer également que je ne peux pas prendre la fonction .End(xlDown) ou autre puisqu'il y a des formules dans le tableau et donc il va aller chercher la dernière cellule qui a une forme même si elles sont vide...

Bonjour,

A+

Bonjour BrunoM45,

Oh désolé, j'étais convaincu de l'avoir mis! Le voici :

La ListBox en question ce retrouve dans le UserForm UF3e_Code et est en lien avec la feuille "DATA_CT".

Merci pour ton aide!

BrunoM45!

J'ai trouvé ce code qui fonctionne très bien pour l'affichage de tous les tableaux, toutefois, j'ai le même problème au niveau des cellules vides dont j'aimerais qu'elle ne s'affiche pas. Voici le code en question :

    Dim Ctr As Long, X As Integer, Y As Integer

    For I = 0 To 14
      Set SH = Sheets("DATA_CT")
      Set Rng = SH.Range("TB_DIV" & I)
      For X = 1 To Rng.Rows.Count
        UF3e_ListBox1.AddItem SH.Cells(Rng.Row - 1 + X, 1)
        For Y = 2 To 7
          With UF3e_ListBox1
            .List(.ListCount - 1, Y - 1) = SH.Cells(Rng.Row - 1 + X, Y)
          End With
        Next Y
      Next X
    Next I

Re,

Voici ce que j'avais fait et qui fonctionne chez moi

Private Sub UserForm_Initialize()
  Dim Col As Integer, Ind As Integer, IndLb As Long, Lig As Long
  Dim MesTs() As String
  Dim Cel As Range
  ' Liste des Tableaux Structurés à incorporer
  MesTs = Split("TB_DIV0,TB_DIV1,TB_DIV2", ",")
  '
  With UF3e_ListBox1
    .Clear
    ' Pour chaque TS
    For Ind = 0 To UBound(MesTs)
      ' Pous chaque cellule de la colonne 1 du TS
      For Each Cel In Range(MesTs(Ind)).Resize(, 1)
        ' Iscrire le code formaté (au cas ou)
        Me.UF3e_ListBox1.AddItem Format(Cel.Value, "00000")
        ' Indice de la LB
        IndLb = Me.UF3e_ListBox1.ListCount - 1
        ' Inscrire les 3 autres colonnes
        For Col = 1 To 3
          Me.UF3e_ListBox1.List(IndLb, Col) = Cel.Offset(0, Col).Value
        Next Col
      Next Cel
    Next Ind
  End With

' Etc ....

Qu'on peut remplacer par

Private Sub UserForm_Initialize()
  Dim Col As Integer, Ind As Integer, IndLb As Long, Lig As Long
  Dim Cel As Range
  ' Avec ma ListBox
  With UF3e_ListBox1
    .Clear
    ' Pour chaque TS
    For Ind = 0 To 14
      ' Pous chaque cellule de la colonne 1 du TS
      For Each Cel In Range("TB_DIV" & Ind).Resize(, 1)
        ' Iscrire le code formaté (au cas ou)
        Me.UF3e_ListBox1.AddItem Format(Cel.Value, "00000")
        ' Indice de la LB
        IndLb = Me.UF3e_ListBox1.ListCount - 1
        ' Inscrire les 3 autres colonnes
        For Col = 1 To 3
          Me.UF3e_ListBox1.List(IndLb, Col) = Cel.Offset(0, Col).Value
        Next Col
      Next Cel
    Next Ind
  End With

A+

Merci beaucoup pour ton aide!

J'ai essayé le code et il fonctionne sans erreur, mais les cellules vides sont toujours visible dans la ListBox...

Re,

Désolé, j'avais fait afficher toutes les colonnes, il suffit de mettre un test

Private Sub UserForm_Initialize()
  Dim Col As Integer, Ind As Integer, IndLb As Long, Lig As Long
  Dim Cel As Range
  Dim I
  ' Avec ma ListBox
  With UF3e_ListBox1
    .Clear
    ' Pour chaque TS
    For Ind = 0 To 14
      ' Pous chaque cellule de la colonne 1 du TS
      For Each Cel In Range("TB_DIV" & Ind).Resize(, 1)
        ' Vérifier si colonne 4 (seule affichée) contient quelque chose
        If Cel.Offset(0, 3) <> "" Then
          ' Iscrire le code formaté (au cas ou)
          Me.UF3e_ListBox1.AddItem Format(Cel.Value, "00000")
          ' Indice de la LB
          IndLb = Me.UF3e_ListBox1.ListCount - 1
          ' Inscrire les 3 autres colonnes
          For Col = 1 To 3
            Me.UF3e_ListBox1.List(IndLb, Col) = Cel.Offset(0, Col).Value
          Next Col
        End If
      Next Cel
    Next Ind
  End With

' Etc ....

A+

Wow ça fonctionne à la perfection! Merci beaucoup Bruno encore une fois tu as été d'une grande aide!

Rechercher des sujets similaires à "afficher tableau listbox"