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

[Résolu]Supprimer une ligne entière selon 2 critères

  • Initiateur de la discussion Initiateur de la discussion Abardothe
  • 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 !

Abardothe

XLDnaute Nouveau
Bonjour la communauté =)

J'ai un petit soucis (sinon je viendrai pas vers vous) 😀.
Je voudrais que dans mon tableau (joint dans le fichier), quand on clique sur un bouton (qui n'est pas créé mais là n'est pas le soucis), cela supprime toutes les lignes qui ont une croix ou tout autre symbole dans la colonne G.

Pour l'instant mon code ressemble à ça :

Code:
Sub date_inter_atteinte()

     Dim c As Range  
 
     For Each c In Range("E13:E" & Cells(Rows.Count, 5).End(xlUp).Row)
       Sheets("Suivi").Unprotect ', Password:="mon_mot_de_passe"
                If c.Offset(, 2) <> "" Then
        
             Rows(c).Delete Shift:=xlUp
             End If
     
     Next    'passe à la cellule suivante
       Sheets("Suivi").Protect DrawingObjects:=True, Contents:=True, Scenarios:=True ', Password:="mon_mot_de_passe"
 End Sub

Le problème c'est que j'ai vu sur internet plein de code différent pour supprimer une ligne mais je n'arrive pas à les appliquer à mon tableau.
Quelqu'un peut m'aider ? =)

Merci d'avance !
 

Pièces jointes

Dernière édition:
Re : Supprimer une ligne entière selon 2 critères

J'ai oublié de préciser que je voudrais que toutes les lignes se situant en dessous de la ligne supprimée remonte. Je viens de penser à cela, pour ça qu'il n'y a rien dans ma macro.
 
Re : Supprimer une ligne entière selon 2 critères

Bonjour,

je ne suis pas sûr de comprendre . Le code présenté fonctionne comme souhaité (1). pourquoi vouloir en appliquer d'autres ?

(1) sauf Rows(c).Delete Shift:=xlUp à modifier en Rows(c.Row).Delete Shift:=xlUp

A+
 
Re : Supprimer une ligne entière selon 2 critères

Effectivement le code marche niquel =)
Merci pour ton aide, je sais pas si j'aurai trouvé tout seul ^^

Sujet résolu !
Merci et bonne journée !
 
Re : [Résolu]Supprimer une ligne entière selon 2 critères

Bonjour Abardothe, Paf,

J'ai comme un doute: ne serait-il pas judicieux (et plus si affinités 😉) de supprimer les lignes en partant du bas!? Pour l'avoir lu à de nombreuses reprises ici même et l'avoir expérimenté, j'irais jusqu'à dire que de doutes je n'en ai pas, en fin de compte!
 
Re : [Résolu]Supprimer une ligne entière selon 2 critères

bonjour Modeste

quand on gère dans une boucle sur les numéros de ligne, effectivement il vaut mieux commencer par la fin pour ne pas se mélanger les pinceaux.
Dans le cas présent, après test ça ne semble pas poser de problème. A priori, le N° de ligne n'est effectif qu'au moment de la lecture, donc il n'y a pas de décalage (c'est mon interprétation).

A+
 
Re : [Résolu]Supprimer une ligne entière selon 2 critères

Bonjour Paf,

Ca ne saute pas toujours aux yeux (sauf si tu as plusieurs lignes qui se suivent et que tu dois supprimer)
Si, dans ta boucle, tu supprimes la ligne 15 (correspondant à Rows(c.Row)), la ligne 16 avant la suppression, devient automatiquement la 15ème. Or ta boucle poursuit son petit bonhomme de chemin et passe à la ligne 16 (qui était la 17ème avant la suppresion!) et donc la ligne 16, qui est devenue la 15, "passe entre les mailles du filet". Si elle ne doit pas être supprimée, tu ne t'en aperçois pas ... Tu me suis? 😛
 
Re : [Résolu]Supprimer une ligne entière selon 2 critères

re Modeste
re Abardothe

J'avais réalisé le test suivant

Code:
for each ....
If c.Offset(, 2) = "" Then
    Rows(c.row).Delete Shift:=xlUp
End If
...

et n'ayant qu'une cellule vide toutes les 10 lignes, ça marchait parfaitement.

en mettant des cellules vides dans deux lignes successives, effectivement la deuxième n'est pas traitée !

A moins qu'on puisse inverser le sens de recherche de
For Each c In Range("E13:E" & Cells(Rows.Count, 5).End(xlUp).Row)

il vaut mieux utiliser une boucle
For i= Cells(Rows.Count, 5).End(xlUp).Row to 13 Step -1

A+
 
- 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
4
Affichages
672
Réponses
5
Affichages
592
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…