Créer une boucle pour des ListView

  • Initiateur de la discussion Initiateur de la discussion bloomby
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

bloomby

XLDnaute Occasionnel
Bonjour à tous,
j'aimerais savoir s'il est possible de créer une boucle pour plusieurs listView
je m'explique, j'ai 6 listview qui ont tous les même variables

il sont dans un fichier excel (toutes les données se suive de la ligne 7 à 27)
La boucle selon moi se ferait à partir de For i = 7 To 10

Étant donnée que pour le listview1 c'est 7 to 9
listview2 10 to 13
listview3 14 to 16
...

voici le code pour le premier listview

Private Sub UserForm_Initialize()

Dim i As Long
With ListView1
With .ColumnHeaders
.Clear
.Add , , "Name", 120
.Add , , "Last", 60, 2
.Add , , "Chg", 60, 2

End With
.View = lvwReport
.FullRowSelect = False
.Gridlines = False

For i = 7 To 10 ' Sheets("Sheet1").Range("C65536").End(xlUp).Row
.ListItems.Add , , (Sheets("Sheet1").Cells(i, 3))
.ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("Sheet1").Cells(i, 4)
.ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("Sheet1").Cells(i, 5)

Next
End With

Merci de votre aide
 
Re : Créer une boucle pour des ListView

Bonjour bloomby, le forum,

A essayer, je n'ai pas testé :

Code:
Private Sub UserForm_Initialize()

Dim ctl As Control, deb As Long, fin As Long, i As Long

[COLOR="Red"]For Each ctl In Me.Controls
  If TypeName(ctl) = "ListView" Then[/COLOR]

  With ctl
    With .ColumnHeaders
       .Clear
       .Add , , "Name", 120
       .Add , , "Last", 60, 2
       .Add , , "Chg", 60, 2

    End With
 .View = lvwReport
 .FullRowSelect = False
 .Gridlines = False

[COLOR="Red"]If .Name = "ListView1" Then deb = 7: fin = 9
If .Name = "ListView2" Then deb = 10: fin = 13
If .Name = "ListView3" Then deb = 14: fin = 16[/COLOR]
'--------------------------------------------
  
        For i = deb To fin ' Sheets("Sheet1").Range("C65536").End(xlUp).Row
.ListItems.Add , , (Sheets("Sheet1").Cells(i, 3))
.ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("Sheet1").Cells(i, 4)
.ListItems(.ListItems.Count).ListSubItems.Add , , Sheets("Sheet1").Cells(i, 5)

Next i
End With

[COLOR="Red"]End If
Next ctl[/COLOR]
End Sub

Edition 1 : si dans la boucle vous voulez récupérer le numéro n de la ListView, écrire dans le With ctl :

Code:
n = Val(Split(.Name, "View")(1))

Edition 2 : si comme je le pense votre énoncé est incorrect, vous devez remplacer :

Code:
If .Name = "ListView1" Then deb = 7: fin = 9
If .Name = "ListView2" Then deb = 10: fin = 13
If .Name = "ListView3" Then deb = 14: fin = 16
'--------------------------------------------

par :

Code:
deb = 4 + 3 * Val(Split(.Name, "View")(1))
fin = deb + 2

Mais avec 6 ListViews on arrive ainsi à la ligne 24... à vous de voir.
A+
 
Dernière édition:
Re : Créer une boucle pour des ListView

Salut Job75,

le code
If .Name = "ListView1" Then deb = 7: fin = 9
If .Name = "ListView2" Then deb = 10: fin = 13
If .Name = "ListView3" Then deb = 14: fin = 16

fonctionne à la merveille maintenant je vais essayer avec la deuxième partie car cela pourrais être interessant pour le futur
merci
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
4
Affichages
743
Réponses
3
Affichages
926
Réponses
4
Affichages
1 K
Retour