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