Résolu : Listview et plage horizontale

Kim75

XLDnaute Occasionnel
Bonjour le forum,

En général les lignes qui alimentent une listview sont disposées verticalement dans la feuille des données, dans mon cas elles sont disposées horizontalement par franges de 7

Pour l’instant j’arrive à alimenter la listview, mais pour faire le chemin inverse, je le fais avec un code trop long qu'il faudrait changer par des boucles que je n'arrive pas à faire

Par avance, merci pour l'aide que vous pourriez m'apporter !

Code:
Private Sub CommandButton1_Click()
Dim Sh As Worksheet, Li As Long, c As Integer, i As Integer, j As Integer
Set Sh = Sheets("Test")
Li = Sh.[B:B].Find(ListBox1, LookIn:=xlValues).Row
    Sh.Cells(Li, 15) = ListView1.ListItems(1).Text
    Sh.Cells(Li, 16) = ListView1.ListItems(1).ListSubItems(1).Text
    Sh.Cells(Li, 17) = ListView1.ListItems(1).ListSubItems(2).Text
    Sh.Cells(Li, 18) = ListView1.ListItems(1).ListSubItems(3).Text
    Sh.Cells(Li, 19) = ListView1.ListItems(1).ListSubItems(4).Text
    Sh.Cells(Li, 20) = ListView1.ListItems(1).ListSubItems(5).Text
    Sh.Cells(Li, 21) = ListView1.ListItems(1).ListSubItems(6).Text

    Sh.Cells(Li, 22) = ListView1.ListItems(2).Text
    Sh.Cells(Li, 23) = ListView1.ListItems(2).ListSubItems(1).Text
    Sh.Cells(Li, 24) = ListView1.ListItems(2).ListSubItems(2).Text
    Sh.Cells(Li, 25) = ListView1.ListItems(2).ListSubItems(3).Text
    Sh.Cells(Li, 26) = ListView1.ListItems(2).ListSubItems(4).Text
    Sh.Cells(Li, 27) = ListView1.ListItems(2).ListSubItems(5).Text
    Sh.Cells(Li, 28) = ListView1.ListItems(2).ListSubItems(6).Text

    Sh.Cells(Li, 29) = ListView1.ListItems(3).Text
    Sh.Cells(Li, 30) = ListView1.ListItems(3).ListSubItems(1).Text
    Sh.Cells(Li, 31) = ListView1.ListItems(3).ListSubItems(2).Text
    Sh.Cells(Li, 32) = ListView1.ListItems(3).ListSubItems(3).Text
    Sh.Cells(Li, 33) = ListView1.ListItems(3).ListSubItems(4).Text
    Sh.Cells(Li, 34) = ListView1.ListItems(3).ListSubItems(5).Text
    Sh.Cells(Li, 35) = ListView1.ListItems(3).ListSubItems(6).Text

    Sh.Cells(Li, 36) = ListView1.ListItems(4).Text
    Sh.Cells(Li, 37) = ListView1.ListItems(4).ListSubItems(1).Text
    Sh.Cells(Li, 38) = ListView1.ListItems(4).ListSubItems(2).Text
    Sh.Cells(Li, 39) = ListView1.ListItems(4).ListSubItems(3).Text
    Sh.Cells(Li, 40) = ListView1.ListItems(4).ListSubItems(4).Text
    Sh.Cells(Li, 41) = ListView1.ListItems(4).ListSubItems(5).Text
    Sh.Cells(Li, 42) = ListView1.ListItems(4).ListSubItems(6).Text
Unload Me
End Sub

Le code est le suivant :

Code:
Private Sub CommandButton1_Click()
Dim Sh As Worksheet, Li As Long, c As Long, i As Long, j As Long
Set Sh = Sheets("Test")
Li = Sh.[B:B].Find(ListBox1, LookIn:=xlValues).Row
For c = 15 To 42 Step 7
    i = i + 1
    Sh.Cells(Li, c) = ListView1.ListItems(i).Text
    For j = 1 To 6
        Sh.Cells(Li, c + j) = ListView1.ListItems(i).ListSubItems(j).Text
    Next j
Next c
Unload Me
End Sub

Cordialement, Kim.
 

Pièces jointes

  • Essai.xlsm
    34.9 KB · Affichages: 66
  • Essai.xlsm
    34.9 KB · Affichages: 75
  • Essai.xlsm
    34.9 KB · Affichages: 75
Dernière édition:

Bebere

XLDnaute Barbatruc
Re : Résolu : Listview et plage horizontale

bonjour Kim,le forum
il faut partir de l'objet qui contient les données
une boucle pour les lignes,i
une boucle pour les colonnes,j
une variable index colonne c,initialisée c=15
une variable index ligne feuille li

Code:
    Set Sh = Sheets("Test")
    Li = Sh.[B:B].Find(ListBox1, LookIn:=xlValues).Row
    c = 15
    For i = 1 To Me.ListView1.ListItems.Count
        Sh.Cells(Li, c) = ListView1.ListItems(i).Text
        For j = 1 To Me.ListView1.ColumnHeaders.Count - 1
            Sh.Cells(Li, c + j) = ListView1.ListItems(i).ListSubItems(j).Text
        Next j
        c = c + 7
    Next i
 

Discussions similaires

Statistiques des forums

Discussions
314 017
Messages
2 104 582
Membres
109 083
dernier inscrit
Stef06