ListView avec informations de differents feuillets dans le même SubItem

belerofon

XLDnaute Occasionnel
Hello World,
Je reviens à la charge avec mon sempiternel probleme mais réduit à sa plus simple expression dans ce fichier exemple...

Un bouton, lance un USF avec une ListView
Impossible d'écrire un code qui dans la premiere colonne m indiquerait les items suivants :1,2,3,4,5 , représentant ceux de la colonne B des onglets Alain et Bruno
dans la seconde et troisieme colonne, pour chaque ligne une concatenation des celulles C3 et D3 pour la ligne 1 colonne 2 de ma listview...

En resumé ma premiere ligne de ma listview serait : 1 ; AG ; DF
Sachant que le but est d appliquer ca a un tableau immense, donc il faudrait reussir a créer une boucle avec une variable de préférence...

Je buche depuis 2 jours pour info... :(

Merci de votre aide...

J.
 

Pièces jointes

  • Exemple ListView.xls
    72.5 KB · Affichages: 56
  • Exemple ListView.xls
    72.5 KB · Affichages: 59
  • Exemple ListView.xls
    72.5 KB · Affichages: 63
Dernière édition:

Grand Chaman Excel

XLDnaute Impliqué
Re : ListView avec informations de differents feuillets dans le même SubItem

Bonsoir belerofon,

Voici une proposition, il suffit de créer un tableau pour stocker les informations qui serviront à construire ta listview. On commence par la 1re feuille pour créer le tableau et dans un 2e temps, on boucle sur les autres feuilles pour concatener le texte des colonnes 2 et 3.

VB:
Private Sub UserForm_Initialize()
Dim Feuilles() As Variant, Tablo() As Variant
Dim Cel As Range
Dim i As Integer, j As Integer

' *** Creation du tableau qui servira à construire le listview

'Listes des feuilles à compiler
Feuilles = Array("Alain", "Bruno")
ReDim Tablo(1 To 3, 1 To 1) 'initialisation du tablo, 1re ligne sera vide

'Creation du tablo à partir de la premiere feuille
    Set Cel = Sheets(Feuilles(0)).Range("B2")
    Do Until IsEmpty(Cel)  'on suppose qu'il n'y a pas de lignes vides
        ReDim Preserve Tablo(1 To 3, 1 To UBound(Tablo, 2) + 1)
        Tablo(1, UBound(Tablo, 2)) = Cel
        Tablo(2, UBound(Tablo, 2)) = Cel.Offset(0, 1)
        Tablo(3, UBound(Tablo, 2)) = Cel.Offset(0, 2)
        Set Cel = Cel.Offset(1, 0)
    Loop

'On concatenete le texte des colonnes 2 et 3
For i = LBound(Feuilles) + 1 To UBound(Feuilles)
    Set Cel = Sheets(Feuilles(i)).Range("B2")
    j = 2
    Do Until IsEmpty(Cel)
        Tablo(2, j) = Tablo(2, j) & Cel.Offset(0, 1)
        Tablo(3, j) = Tablo(3, j) & Cel.Offset(0, 2)
        Set Cel = Cel.Offset(1, 0)
        j = j + 1
    Loop
Next i

'On cree le listview à partir du tableau
With Me.ListView1
    With .ColumnHeaders
        .Clear
        .Add , , "Numéro", 60
        .Add , , "CAT A", 45
        .Add , , "CAT B", 45
    End With
    '------------------------Paramétre les détails du tableau
    .View = 3
    .Gridlines = True
    .FullRowSelect = True
    .HideColumnHeaders = False
    .LabelEdit = 1
End With

For i = 2 To UBound(Tablo, 2)   'début à 2 car 1re ligne est vide
    With ListView1
        .ListItems.Add , , Tablo(1, i)
        .ListItems(.ListItems.Count).ListSubItems.Add , , Tablo(2, i)
        .ListItems(.ListItems.Count).ListSubItems.Add , , Tablo(3, i)
    End With
Next i

End Sub

A+
 

belerofon

XLDnaute Occasionnel
Re : ListView avec informations de differents feuillets dans le même SubItem

Merci grand chaman Excel, décidemment il va falloir que je m'y mette aux tableaux ca a l'air de dépatouiller, tout le monde en parler...
Next thing sur ma ToDo List...

Pour info a force de me torturer les méninges j'ai réussi à trouver une solution alternative plus que satisfaisante pendant que je tournais en rond dans mon lit...

Bonne journée à tous je file à ma garde...
J.
 

Statistiques des forums

Discussions
311 732
Messages
2 081 995
Membres
101 857
dernier inscrit
mt60400