Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

@ vous lire.
 

Spitnolan08

XLDnaute Barbatruc
Re : boucle dans une ListView

Bonjour,

Il faudrait l'intégralité de ta procédure pour te répondre.

En effet, il se peut que ce soit un end with qui manque... ou autre chose...

Cordialement
 

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
 

akibodo

XLDnaute Junior
Re : boucle dans une ListView

Re,

Il sert à rendre le code plus lisible soit dans le cas présent retourner à la ligne avec la même ligne de commande.

Sinon je vois pas en quoi celà joue sur le code.
 

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!

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

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
 
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…