Changer de collection dans boucle for each
Bonjour à tous,
J'aurais voulu savoir si il y avait un moyen de modifier une collection dans une boucle "For Each" lorsque que le programme s'éxecute à l'intérieur d'elle même.
Grossomodo la collection de la boucle change à chaque itération.
J'ai essayé de la mettre sous forme de variable mais j'ai l'impression qu'une fois que la collection y est renseigné une première fois, elle la garde en mémoire.
Merci de votre aide
bonjour AZQW,
vous avez quoi pour le moment comme macro ? Ou un fichier anonymisé ?
Bonjour BsAlv,
J'ai actuellement ça :
Private Sub recherche_Change()
Dim ligne As Integer, cellule As Range, derlign As Long, origine As Range, ligne2 As Integer, position As Range
ligne = 1
derlign = Sheets("BDD").Range("I" & Rows.Count).End(xlUp).Row
Set position = Sheets("BDD").Range("A2:I" & derlign)
With visio
.ListItems.Clear
For Each cellule In position
ligne2 = cellule.Row 'numéro de ligne pour la variable cellule
If InStr(1, LCase(cellule.Value), LCase(recherche)) > 0 Then
Set origine = Sheets("BDD").Cells(ligne2, 1)
.ListItems.Add , , origine
.ListItems(ligne).ListSubItems.Add , , origine.Offset(0, 1)
.ListItems(ligne).ListSubItems.Add , , origine.Offset(0, 2)
.ListItems(ligne).ListSubItems.Add , , origine.Offset(0, 3)
.ListItems(ligne).ListSubItems.Add , , origine.Offset(0, 4)
.ListItems(ligne).ListSubItems.Add , , origine.Offset(0, 5)
.ListItems(ligne).ListSubItems.Add , , origine.Offset(0, 6)
.ListItems(ligne).ListSubItems.Add , , origine.Offset(0, 7)
.ListItems(ligne).ListSubItems.Add , , origine.Offset(0, 8)
.ListItems(ligne).ListSubItems.Add , , origine.Offset(0, 9)
ligne = ligne + 1 'incrémentation de ligne dans la listview
Set position = position.Offset(1, 0)
Set origine = Nothing
Else
End If
Next cellule
If recherche = "" Then
Call userform_Initialize
End If
End With
Set position = Nothing
End SubOn voit bien que j'essaie de changer la variable "position" qui correspond à ma collection. Mais ça marche pô !
un essai, au lieu de ce "For ... Next" seulement
With visio
.ListItems.Clear
.List=position.value
sinon, avez-vous un fichier anonymisé ?