XL 2016 Supprimer ligne sous condition

Chessnocoma

XLDnaute Junior
Bonjour,

Je recherche à supprimer les lignes d'un classeur si la colonne E = "CDU" ou si la colonne G = "201"
J'avais fait un test avec les filtre mais si mon fichier ne contient pas de CDU ou de 201 alors la macro plante.

Merci de votre aide

A bientôt,

Jessy
 

Robert

XLDnaute Barbatruc
Repose en paix
Bonjour Jessy, bonjour le forum,

Peut-être comme ça :

VB:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim I As Integer 'déclare la variable I (Incrément)

Application.ScreenUpdating = False 'masque les raffraîchissements d'écran
Set O = Worksheets("Feuil1") 'définit l'onglet O (à adapter à ton cas)
DL = O.Cells(Application.Rows.Count, "E").End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne E (à adapter à ton cas, peut-être G) de l'onglet O
For I = DL To 1 Step -1 'boucle inversée des lignes DL à 1 en remontant
  'si la cellule ligne I colonne E vaut "CDU" ou si la cellule ligne I colonne G convertie en texte vaut "201", efface la ligne
  If Cells(I, "E") = "CDU" Or CStr(Cells(I, "G")) = "201" Then O.Rows(I).Delete
Next I 'prochaine ligne de la boucle
End Sub
 

Robert

XLDnaute Barbatruc
Repose en paix
Re,

Le Ucase fera accepter Majuscules/minuscules sans broncher...


VB:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim O As Worksheet 'déclare la variable O (Onglet)
Dim DL As Integer 'déclare la variable DL (Dernière Ligne)
Dim I As Integer 'déclare la variable I (Incrément)

Application.ScreenUpdating = False 'masque les raffraîchissements d'écran
Set O = Worksheets("Feuil1") 'définit l'onglet O (à adapter à ton cas)
DL = O.Cells(Application.Rows.Count, "E").End(xlUp).Row 'définit la dernière ligne éditée DL de la colonne E (à adapter à ton cas, peut-être G) de l'onglet O
For I = DL To 1 Step -1 'boucle inversée des lignes DL à 1 en remontant
  'si la cellule ligne I colonne E vaut "CDU" ou si la cellule ligne I colonne G convertie en texte vaut "201", efface la ligne
  If Ucase(Cells(I, "E")) = "CDU" Or CStr(Cells(I, "G")) = "201" Then O.Rows(I).Delete
Next I 'prochaine ligne de la boucle
End Sub
 

Statistiques des forums

Discussions
312 196
Messages
2 086 094
Membres
103 116
dernier inscrit
kutobi87