Supprimer ligne selon choix colonne

georgioGD

XLDnaute Junior
Bonjour à tous,

Je joins un petit fichier ou j'explique mon probléme car d'une feuille étude je crée une feuille devis mais certaine lignes ne doivent pas apparaitrent et pour cela elle sont validé si different de OUI dans une colonne

Merci à vous
 

Pièces jointes

  • Classeur1.xls
    15.5 KB · Affichages: 87
  • Classeur1.xls
    15.5 KB · Affichages: 70
  • Classeur1.xls
    15.5 KB · Affichages: 79

Efgé

XLDnaute Barbatruc
Re : Supprimer ligne selon choix colonne

Bonsoir georgioGD,
Pour supprimer les lignes dont la cellule en colonne B est égale à O:
Code:
Sub Delete()
Dim derlig As Long
derlig = Range("D" & Application.Rows.Count).End(xlUp).Row
For i = derlig To 2 Step -1
    If  [COLOR=red][B]Not[/B][/COLOR] Cells(i, 2).Value = "O" Then
        Cells(i, 2).EntireRow.Delete
    End If
Next i
End Sub
Pour votre exemple, il y à au moins une erreur: votre plage nomée prend un e Imprime
Cordialement
Edit en rouge
 
Dernière édition:

soenda

XLDnaute Accro
Re : Supprimer ligne selon choix colonne

Bonsoir le fil, georgioGD

Un exemple avec ColumnDifferences
Code:
Sub b()
 
    [B5] = "O"
 
    On Error Resume Next
    Union([B5], [Imprime]).ColumnDifferences([B5]).EntireRow.Delete xlUp
 
    [B5].ClearContents
 
End Sub
Je te laisse sélectionner la feuille qui va bien.

A plus

Edition : Bonsoir Efgé, Excel-lent :)
 
Dernière édition:

Excel-lent

XLDnaute Barbatruc
Re : Supprimer ligne selon choix colonne

Salut GeorgioGD,

Ton soucis vient du fait que balaye tes lignes du haut vers le bas!

Voici une macro qui répond à tes critères :
Code:
Sub Proposition1()

NbOnglet = ActiveWorkbook.Sheets.Count
Sheets("Feuil1").Copy Before:=Sheets(2)
Sheets(NbOnglet).Name = "Impression"

With Sheets("Impression")
   For LigneImpression = 22 To 6 Step -1
     If .Cells(LigneImpression, 2) <> "O" Then .Rows(LigneImpression).Delete
   Next LigneImpression
End With

End Sub

Pourquoi il faut partir du bas vers le haut (avec l'utilisation de Step -1) et non pas l'inverse? Car tu supprime les lignes qui ...

Voici ce qu'il se passe quand tu traite tes lignes du haut vers le bas
-> tu traite la ligne 5, tout baigne donc tu passe à la ligne 6 (jusque là pas de problème)
-> tu traite la ligne 6, tu constate que la ligne 6 doit être supprimé donc tu la supprime
-> ensuite tu traite la ligne 7 (et là ca plante!!!)

Car lorsque tu as supprimé la ligne 6... la ligne 7 est devenu la ligne 6, et la ligne 8 est devenu la ligne 7.

Or comme tu traite la ligne 7 (l'ex. ligne 8), cela signifie que tu ne traite pas la ligne 6 (l'ex. ligne 7).

Alors qu'en traitant tes lignes du bas vers le haut, tu n'as pas ce soucis!

J'ai été clair?

Si cela peut t'aider, rajoute une colonne que tu nommera N° de ligne, et tu numérote tes lignes. Puis tu fais les opérations de suppression manuellement, tu verras que tes "vrai" numéro de ligne, ne seront plus en adéquation avec les numéro de ligne théorique!

A te lire

Cordialement

Edition : bonjour Efgé, Soenda
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 472
Messages
2 088 710
Membres
103 930
dernier inscrit
Jibo