Je cherche une macro qui me permettrait de supprimer les lignes qui respecteraient deux conditions cumulées:
- que la celulle de la colonne F comprenne la valeur "espèces"
- que la cellule de la colonne C soit égale à la cellule de la colonne C de la ligne inférieure
J'ai essayé de mixer certaines macros proposées sur les forums mais le résultat est catastrophique....
Merci beaucoup par avance
A voir également:
Suppression de lignes sous deux conditions cumulatives
Sub sup()
'Je cherche une macro qui me permettrait de supprimer les lignes qui respecteraient deux conditions cumulées:
'- que la celulle de la colonne F comprenne la valeur "espèces"
'- que la cellule de la colonne C soit égale à la cellule de la colonne C de la ligne inférieure
'J 'ai essayé de mixer certaines macros proposées sur les forums mais le résultat est catastrophique....
'Merci beaucoup par avance
Dim LasRow As Long
lastrow = Derniere_Ligne(ActiveSheet.Name)
Dim valCduDessous As String
valCduDessous = ""
'On parcoure les lignes en partant du bas..
For i = lastrow To 1 Step -1
valF = Cells(i, 6).Value
valC = Cells(i, 3).Value
Debug.Print " Ligne : " & i & " valeur colonne F= " & valF & " valeur colonne C= " & valC & " valeur colonne C du dessous= " & valCduDessous
If valF = "espèces" And valC = valCduDessous Then
Debug.Print "A supprimer..."
' Ici mettre le code de suppression de la ligne
Rows(i).Delete
End If
valCduDessous = Cells(i, 3).Value
Next
End Sub
Function Derniere_Ligne(Nom_Feuille As String) As Long
Sheets(Nom_Feuille).Activate
Derniere_Ligne = Cells.Find("*", Range("A1"), , , xlByRows, xlPrevious).Row + 1 'pour les lignes
End Function
Bonjour,
Je ne sais pour quelle raison dans un de mes fichier les lignes sont inversées, je m'explique :
Au lieu de comparer la cellule inférieure de la colonne C, je dois comparer à la cellule supérieure.
Je me suis dit "pas compliqué je modifie la macro" en ce sens, mais pfffff.... Je n'ai malheureusement qu'un prénom ;-)
Merci pour votre aide
Arf.. oupss.. désolé...
j'ai répondu un peu trop vite..
j'avais oublié que tu faisais une suppression... et dans ce cas là.. il vaut mieux faire la boucle en partant du bas...
donc, essayes plutot ce code là :
Sub sup2()
Dim LasRow As Long
lastrow = Derniere_Ligne(ActiveSheet.Name)
Dim valCduDessus As String
valCduDessus = ""
'On parcoure les lignes en partant du bas..
For i = lastrow To 2 Step -1
valCduDessus = Cells(i - 1, 3).Value
valF = Cells(i, 6).Value
valC = Cells(i, 3).Value
Debug.Print " Ligne : " & i & " valeur colonne F= " & valF & " valeur colonne C= " & valC & " valeur colonne C du dessus= " & valCduDessus
If valF = "espèces" And valC = valCduDessus Then
Debug.Print ">>> A supprimer..."
Rows(i).Delete
End If
Next
End Sub