Macro pour supprimer un ensemble de ligne selon un critère

Bonjour à tous,

Je cherche une macro qui me permette de supprimer un ensemble de lignes selon un critère donné.

J'ai trouvé certaines macro spécifiques aux requêtes des utilisateurs permettant de faire quelque chose de similaire mais je ne sais malheureusement pas comment les adapter à ce que je souhaite faire, ne comprenant pas suffisamment le fonctionnement du language VBA dans ce cas.

Je joint à ce poste un fichier dont la structure est identique à celui sur lequel je travaille mais j'ai enlevé tout les intitulés, titres et autres info.

Mon fichier présente les résultats d'entités (P&L) et les entités se trouvent les unes sous les autres - à la suite. Chaque "bloc" correspond à une entité et fait 75 lignes.

Je cherche une macro qui, si le résultat total de l'entité (dernière ligne) est 0, me supprime tout le "bloc" de lignes.

Dans le fichier:

Si la colonne C (là ou se trouve les chiffres) pour la ligne correspondant à "BO" est = 0, alors je souhaiterais supprimer les 75 lignes supérieures à la ligne ou se trouve "BO" dans la colonne A.

Si l'un de vous a une piste sur comment résoudre ma requête, cela serait super. Si vous pouviez m'expliquer les différentes étapes de votre raisonnement, ça serait encore mieux!

Merci beaucoup!

Bonjour,

Un essai sans prétention

Bonjour Bernard,

Je te remercie pour cette macro qui semble fonctionner!

Après, je ne sais pas pourquoi, mais je dois la faire tourner plusieurs fois pour que ça enlève tout les blocs qui sont à 0, mais ce n'est pas trop gênant car la macro tourne assez rapidement!

Est-ce que tu pourrais m'expliquer la logique stp?

J'ai copié la macro ci-dessous avec ce que je comprends et ce que je ne comprends pas. Je n'ai aucune base "théorique" du language VBA, juste ce que j'ai compris en regardant les macro des autres donc si je n'utilise pas les termes corrects, toute correction sera la bienvenue, ça me permettra d'apprendre!

Sub suppressionLignes()

derl = Range("A" & Rows.Count).End(xlUp).Row => ici je définis une variable derl qui est un "range" allant de la première ligne à la dernière

For i = 1 To derl => pour une variable (i est une variable?) allant de 1 à x, x étant la dernière ligne trouvée ci-dessus dans derl

If (Range("D" & i) = "Contribution Margin") And Range("F" & i) = 0 Then => de mettre range("D"&i) permet de définir une cellule en fait? Cette ligne représente donc mes conditions

For j = 0 To 74

las = i - j => je ne comprends pas trop ce passage

Rows(las).Delete

Next j => ça ne je le comprends pas non plus...

End If

Next i

End Sub

Rechercher des sujets similaires à "macro supprimer ensemble ligne critere"