boucle dans une ListView

akibodo

XLDnaute Junior
Bonjour à tous,

J'ai une ListView dans laquelle plusieurs lignes peuvent être sélectionnées.

Je cherche à boucler sur toutes les lignes et toutes les colonnes de cette ListView et de copier les résultats sur une feuille.

Le code que j'utilise est celui-ci :

Code:
With Sheets("travail")
Sheets("travail").Select
Set LstItem = ListView1.SelectedItem
If LstItem Is Nothing Then
MsgBox "Veuillez séléctionner au moins une ligne."
Exit Sub
Else
For i = 1 To ListView1.ListItems.Count
    If ListView1.ListItems(i).Selected = True Then _
            For j = 1 To ListView1.SelectedItem.ListSubItems.Count
            Cells(i + 5, j + 1).Value = ListView1.SelectedItem.ListSubItems(j)
            Next
    End If
Next

Malheureusement ça ne marche pas.

J'ai une erreur "End If sans If" et je vois pas où est le problème :confused:

@ vous lire.
 

akibodo

XLDnaute Junior
Re : boucle dans une ListView

Re,

Je sais pas si ça va beaucoup aider mais voici la procédure complète :

Code:
Private Sub CommandButton4_Click()
Dim i As Byte
Dim j As Byte
Dim travail
Dim LstItem

With Sheets("travail")
Sheets("travail").Select
Set LstItem = ListView1.SelectedItem
If LstItem Is Nothing Then
MsgBox "Veuillez séléctionner au moins une ligne."
Exit Sub
Else
For i = 1 To ListView1.ListItems.Count
    If ListView1.ListItems(i).Selected = True Then _
            For j = 1 To ListView1.SelectedItem.ListSubItems.Count
            Cells(i + 5, j + 1).Value = ListView1.SelectedItem.ListSubItems(j)
            Next
    End If
Next
End With
End Sub
 

Spitnolan08

XLDnaute Barbatruc
Re : boucle dans une ListView

Re,

Il manque bien un End if à ton 1er if...

Code:
With Sheets("travail")
Sheets("travail").Select
Set LstItem = ListView1.SelectedItem
If LstItem Is Nothing Then
MsgBox "Veuillez séléctionner au moins une ligne."
Exit Sub
Else
For i = 1 To ListView1.ListItems.Count
    If ListView1.ListItems(i).Selected = True Then _
            For j = 1 To ListView1.SelectedItem.ListSubItems.Count
            Cells(i + 5, j + 1).Value = ListView1.SelectedItem.ListSubItems(j)
            Next
    End If
Next
End if
End With
End Sub
Voilà, à quoi ça sert de mettre le code en entier:cool:!

Et pour le "_" : il ne sert à rien!

Cordialement
 

akibodo

XLDnaute Junior
Re : boucle dans une ListView

Re,

Merci pour ces réponses, ça marche avec le End if en plus et le "_" en moins :D

Par contre j'ai un nouveau problème :

Si je sélectionne la ligne 3 à 6 ça va m'enregistrer la ligne 6 uniquement et sur 3 ligne à partir de la ligne 3 + 5.

Hors j'aimerais que ça m'enregistre toutes les lignes sélectionnées à partir de la lignes 5 simplement.

Soit si je sélectionne les lignes 3 à 6 que ça m'enregistre la ligne 3 en 5 puis 4 en 6 puis 6 en 7.

J'espère que j'est réussi à m'expliquer et qu'il y a une solution.

PS: c'est quoi une indentation ?

Merci d'avance.
 
Dernière édition:

Spitnolan08

XLDnaute Barbatruc
Re : boucle dans une ListView

Re,

Essaie :
Code:
k=4
For i = 1 To ListView1.ListItems.Count
    If ListView1.ListItems(i).Selected = True Then
            k=k+1
            For j = 1 To ListView1.SelectedItem.ListSubItems.Count
            Cells(k, j + 1).Value = ListView1.ListItems(i).ListSubItems(j)
            Next
    End If
Next
c'est quoi une indentation ?
C'est le décalage existant dans tes lignes de code qui te permet d'identifier ses parties comme :
Code:
If... Then
      For i = 1 to 5
            With ...

            End with
      next
End if
Cordialement
 
Dernière édition:

akibodo

XLDnaute Junior
Re : boucle dans une ListView

Re le forum , le fil,

Merci pour cette réponse,

Au moins maintenant je sais se qu'est une indentation :)
Pas toujours facile à mettre en oeuvre surtout quand on à du mal à comprendre se qu'on fais mais en faite ça aide beaucoup.

Sinon j'ai cherché de mon côté et je viens juste de tomber sur ton code. Je pense qu'il doit y avoir des similitudes, je met ma procédure complète si ça peut aider, chez moi ça marche nikel (et ça ça fais tjs plaisir ^^):

Code:
Private Sub CommandButton4_Click()
Dim i As Byte
Dim j As Byte
Dim k As Byte
Dim derligne As Variant
Dim travail As Variant
Dim LstItem As Variant
k = 0
With Sheets("travail")
Sheets("travail").Select
derligne = Range("B65536").End(xlUp).Row
Set LstItem = ListView1.SelectedItem
If LstItem Is Nothing Then
MsgBox "Veuillez séléctionner au moins une ligne."
Exit Sub
Else
For i = 1 To ListView1.listitems.Count
    If ListView1.listitems(i).Selected = True Then
k = k + 1
Cells(derligne + k, 1) = ListView1.listitems(i).Text
For j = 1 To ListView1.columnHeaders.Count - 1
Cells(derligne + k, j + 1) = ListView1.listitems(i).listSubItems(j).Text
Next j
    End If
Next i
End If
End With
End Sub


PS: ma colonne A est vide ...

Merci encore à tous et à www.excel-downloads.com
 

Statistiques des forums

Discussions
312 083
Messages
2 085 188
Membres
102 809
dernier inscrit
Sandrine83