Ma boucle For Each ne fonctionne pas correctement

Bonjour à tous,

Je travail actuellement sur un projet dont une partie consiste à retirer (supprimer) certaines lignes d'une base de données si une condition est respectée et de les inscrire sur une autre feuille.

J'utilise une boucle For Each qui ne fonctionne pas correctement, certaines lignes qui respectent la condition ne sont pas retirées et transférées.

Merci pour votre aide.

Sub Macro_maj_bdd2()

            'Pour mise à jour de la base de données

            Dim cellule As Range
            Dim plage As Range
            Dim b As String
            Dim c As Integer

            b = "Fin contrat"

            Set plage = Sheets("Base_de_donnees").Range("F2:F250")
            For Each cellule In plage
                    c = Sheets("Contrat terminee").Range("A500").End(xlUp).Row + 1
                    If cellule.Value = b Then
                    cellule.EntireRow.Copy Sheets("Contrat terminee").Range("A" & c)
                        cellule.EntireRow.Delete
                    End If

            Next cellule
            

bonjour fefeabj,

vous faites une faute classique ! Il faut supprimer de bas en haut,

Sub Macro_maj_bdd2()

     'Pour mise à jour de la base de données

     Dim cellule As Range
     Dim plage As Range
     Dim b     As String
     Dim c As Integer, i As Integer

     b = "Fin contrat"

     Set plage = Sheets("Base_de_donnees").Range("F2:F250")
     For i = plage.Rows.Count To 1 Step -1   'boucle de la dernière cellule vers la première
          Set cellule = plage.Cells(i, 1)    'votre cellule
          c = Sheets("Contrat terminee").Range("A500").End(xlUp).Row + 1
          If cellule.Value = b Then
               cellule.EntireRow.Copy Sheets("Contrat terminee").Range("A" & c)
               cellule.EntireRow.Delete
          End If
     Next
End Sub
Rechercher des sujets similaires à "boucle each fonctionne pas correctement"