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

Abardothe

XLDnaute Nouveau
Bonjour la communauté =)

J'ai un petit soucis (sinon je viendrai pas vers vous) :D.
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

  • magasin.xlsm
    98.5 KB · Affichages: 36
  • magasin.xlsm
    98.5 KB · Affichages: 42
  • magasin.xlsm
    98.5 KB · Affichages: 46
Dernière édition:

Abardothe

XLDnaute Nouveau
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.
 

Paf

XLDnaute Barbatruc
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+
 

Modeste

XLDnaute Barbatruc
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!
 

Paf

XLDnaute Barbatruc
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+
 

Modeste

XLDnaute Barbatruc
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? :p
 

Paf

XLDnaute Barbatruc
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+
 

Discussions similaires

Statistiques des forums

Discussions
312 196
Messages
2 086 101
Membres
103 117
dernier inscrit
augustin.morille