Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Supprimer toutes les lignes en dessous d'une cellule variable

  • Initiateur de la discussion Initiateur de la discussion yeti_yeti
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

yeti_yeti

XLDnaute Junior
Bonjour,

J'ai un petit problème puisque j'aimerais pouvoir supprimer dans un tableau toutes les lignes situées sous "Secteur 273", qui se trouve quelque part en colonne A.

Ensuite j'aimerais que toutes les lignes où il n'y a rien de noté dans une colonne appelée PLU (colonne 9), soient supprimées.

J'ai réussi la deuxième partie, mais je n'arrive pas la première. J'ai les yeux qui croisent et n'ai plus la force de chercher l'erreur, qui doit être toute bête. Est-ce que quelqu'un peut se pencher sur ce problème?

Voici le bout de code en question:

Code:
' On supprime les LIGNES inutiles, puis celles où les cellules de la colonne PLU sont vides

dernière_ligne = ActiveCell.SpecialCells(xlLastCell).Row
For i = dernière_ligne To 1 Step -1
lignes_inutiles = Application.WorksheetFunction.CountA(Cells(i, 1)) = "Secteur 273"
Next i
    
    For i = dernière_ligne To lignes_inutiles Step -1
    Rows(i).Delete
    Next i
    
    For i = dernière_ligne To 7 Step -1
    If Application.WorksheetFunction.CountA(Cells(i, 9)) = 0 Then
    Rows(i).Delete
    End If
    Next i
 
Re : Supprimer toutes les lignes en dessous d'une cellule variable

bonjour,
je n'ai jamais utilisé une ligne de code avec 2 signes égal mais peut-être que ça marche ?
lignes_inutiles = Application.WorksheetFunction.CountA(Cells(i, 1)) = "Secteur 273"
 
Re : Supprimer toutes les lignes en dessous d'une cellule variable

re
pour la dernière ligne j'utilise
der = Cells(65536, 1).End(xlUp).Row ' pour déterminer le n° de la dernière ligne
il suffirait de déterminer la ligne où se trouve le contenu recherché et sélectionner par range les lignes inutiles puis delete.
il faut que la feuille soit active.
 
Re : Supprimer toutes les lignes en dessous d'une cellule variable


En fait pour déterminer la dernière ligne, ma solution marche très bien, aussi, donc ce n'est pas de la que vient le problème.

Le problème est justement de déterminer la ligne où se trouve le contenu recherché 😉
 
Re : Supprimer toutes les lignes en dessous d'une cellule variable

re
un complément pour identifier le n° de ligne avec FIND :
mavariable = Range("A1:a50").Find("Secteur 273").Row
plage à adapter
 
Re : Supprimer toutes les lignes en dessous d'une cellule variable

OK, alors ta solution marche très bien après une petite adaptation. Je t'en remercie.

Mon fichier marche maintenant parfaitement. J'ai juste un petit soucis d'estéthique dans la programmation, qui me permettrait de gagner du temps dans l'exécution de la macro

Voici le bout de code qui pose problème:

Code:
' On supprime les LIGNES où les cellules de la colonne PLU sont vides
dernière_ligne = ActiveCell.SpecialCells(xlLastCell).Row
ligne_inutile = Range("A1:A1000").Find("Secteur prép. 273 LIBRE-CHOIX").Row

    For i = dernière_ligne To ligne_inutile Step -1
    Rows(i).Delete
    Next i
    
    For i = dernière_ligne To 7 Step -1
    If Application.WorksheetFunction.CountA(Cells(i, 9)) = 0 Then
    Rows(i).Delete
    End If
    Next i

Pour le deuxième For i =, j'aimerais que l'application reprenne depuis ligne_inutile, cependant, ligne_inutile n'existe plus puisqu'il a été supprim lors du premier For i=.

Un petit truc?
 
Re : Supprimer toutes les lignes en dessous d'une cellule variable

bonjour,
pour gagner du temps, dans la 1ère boucle un delete de toutes les lignes en même temps avec range préalable (comme indiqué je crois dans mon exemple)
serait plus rapide.
je ne comprends pas ce que fait la 2è boucle.
 
Re : Supprimer toutes les lignes en dessous d'une cellule variable

re
dans cette 2è boucle, la valeur de dernière_ligne n'est plus exacte puisque des lignes ont été supprimées.
ps : le n'ai pas testé mais la 1ère boucle va jusqu'à ligne_inutile qui est le n° de la ligne contenant ce qui est cherché donc la boucle devrait s'arrêter à ligne_inutile - 1
 
Dernière édition:
Re : Supprimer toutes les lignes en dessous d'une cellule variable

La première boucle sert à supprimer toutes les lignes qui sont en dessous de la ligne inutile (y compris).

La deuxième boucle sert à supprimer toutes les lignes dans lesquelles la colonne 9 (colonne I) est vide

Ce que j'aimerais c'est que dans la deuxième boucle on ne recommence pas depuis la dernière ligne (65'000 et quelques), mais plutôt depuis la ligne inutile... et je ne sais pas comment faire ça
 
Re : Supprimer toutes les lignes en dessous d'une cellule variable

re
suggestion : utiliser la variable ligne_inutile (ou ligne_inutile -1) au lieu de dernière_ligne
l'instruction Application.WorksheetFunction.CountA(Cells(i, 9)) = 0
est bien compliquée
avec quelquechose comme cela c'est plus simple (je n'ai pas testé) :

for i= 1 to ligne_inutile
if cells(i,9)="" then rows(i).delete
next i
 
Re : Supprimer toutes les lignes en dessous d'une cellule variable

dixit à dit:
re
dans cette 2è boucle, la valeur de dernière_ligne n'est plus exacte puisque des lignes ont été supprimées.

En fait lorsqu'on supprime une ligne dans Excel, il supprime la ligne demandée mais en ajoute une vierge tout en bas du classeur, donc on a toujours le même nombre de ligne. Ce n'est pas de là que vient le problème.
 
Re : Supprimer toutes les lignes en dessous d'une cellule variable

Bon, j'ai testé les solutions que tu m'as apporté, mais elles ne fonctionnent pas comme il faut dans le fichier.

Je garde ma solution et la macro sera seulement lente à exécuter, ce n'est pas très grave.

Merci bien
 
Re : Supprimer toutes les lignes en dessous d'une cellule variable

re
c'est sûr qu'avec un classeur exemple au départ c'est plus facile d'ajuster au mieux les propositions ; les explications c'est bien mais ne remplacent pas.
quant au nombre de lignes oui bien sûr Excel travaille sur 65536 lignes (un peu plus en version 2007 ...) mais la variable derniere_ligne ne vaut pas 65536 je suppose.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
5
Affichages
249
Réponses
2
Affichages
124
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…