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 Sub

On 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é ?

Rechercher des sujets similaires à "changer collection boucle each"