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

SUPPRIMER LIGNES TABLEAU EN VBA EN PASSANT PAR UN FILTRE

Charles78

XLDnaute Nouveau
Bonjour,

Je souhaite supprimer des lignes d'un tableau à partir de la ligne 2 si la cellule en colonne H contient OUI (à savoir que le OUI est obtenu suite à une formule). Quand je me retrouve avec des lignes dont la cellule en colonne H contient OUI et d'autres contiennent NON, cela fonctionne car ça supprime bien toutes les lignes dont la cellule en colonne H contenait OUI et je me retrouve bien qu'avec les lignes dont les cellules en colonne H contiennent NON. Idem si je me retrouve avec que des lignes dont la cellule en colonne H contient NON, ça fonctionne aussi car ça ne me supprime pas les lignes.

En revanche, si je me retrouve qu'avec des lignes dont la cellule en colonne H contient OUI, les lignes ne sont pas supprimées et c'est bien là le problème.

Ci-dessous mon code:

VB:
 For i = Range("A65536").End(xlUp).Row To 2 Step -1
            If Cells(i, 8) Like "*OUI*" Then Rows(i).Delete
        Next i

Aussi, je pense que pour être plus rapide je souhaiterais un code VBA (avec la syntaxe If Then Else) qui indique la condition suivante: Si "toute" la Colonne C à partir de la ligne 2 (donc ne pas prendre en compte l'en-tête) a ses cellules vides, alors il faut supprimer toutes les lignes du tableau. Je ne vois pas comment je peux formuler ce code étant débutant en VBA (j'insiste bien sur le fait que toutes les cellules de la colonne C doivent être vides).

Merci beaucoup pour votre aide.
 

Charles78

XLDnaute Nouveau
Re

Charles78
Je suis invisible ou quoi?
Faire le test avec le message#11
puis lancer la macro SupprLignes
Les lignes sont supprimées (et pas masquées)
Bonsoir Staple,

Effectivement ton code en message #3 fonctionne sur ton fichier que j'ai pu créer grâce à ton code en message #11 mais je ne comprends pas pourquoi ton code en message #3 ne fonctionne pas sur mon fichier.

Merci.
 

Staple1600

XLDnaute Barbatruc
Re

Pour le savoir, faudrait qu'on puisse voir ton fichier
(ou plutôt une copie allégée de celui-ci qui reproduit la structure et les formules de l'original (sans données confidentielles)
Une trentaine de lignes suffiraient pour faire le test.
NB: Tu peux aussi zipper le classeur avant de l'envoyer.
 

Charles78

XLDnaute Nouveau
Bonsoir Fanfan,

En fait les lignes ne se suppriment pas mais elles sont masquées. Y-a-t-il un moyen de vraiment les supprimer ?

Merci
Bonsoir Fanfan,

Aussi sur ton code il y a les deux conditions en même temps mais par rapport à ma demande je souhaitais avoir deux codes différents dont un pour supprimer les lignes dont la cellule en colonne H contient OUI et un autre code (pour que ce soit plus rapide pour moi) de supprimer les lignes du tableau si toute la colonne C est vide à partir d ela ligne 2 bien sûr. En pièces jpointes les deux fichiers avec vos codes respectifs.
 

Pièces jointes

  • FICHIER FILTRE FORUM CODE FANFAN.xlsm
    33.8 KB · Affichages: 9
  • FICHIER FILTRE FORUM CODE STAPLE.xlsm
    33 KB · Affichages: 5

Staple1600

XLDnaute Barbatruc
Re

Charles78
Tu disais dans ton premier message
Je souhaite supprimer des lignes d'un tableau à partir de la ligne 2 si la cellule en colonne H contient OUI (à savoir que le OUI est obtenu suite à une formule)
Or dans le fichier que tu viens de joindre, pas de formule en colonne H !!!

Par conséquent, c'est normal que mon code ne fonctionne pas.
(puisque il a écrit en se basant sur le fait qu'il y avait des formules en colonne H)
 

Charles78

XLDnaute Nouveau
Désolé voilà les deux bons fichiers.

Merci.
 

Pièces jointes

  • FICHIER FILTRE FORUM CODE STAPLE.xlsm
    33.8 KB · Affichages: 4
  • FICHIER FILTRE FORUM CODE FANFAN.xlsm
    33.7 KB · Affichages: 2

Staple1600

XLDnaute Barbatruc
Re

Charles78
Normalement, avec cette petite modif cela doit fonctionner, non?
VB:
Sub SupprLignes()
Dim dl&, f As Worksheet
Set f = Sheets("PRODUCTION")
 dl = f.Cells(Rows.Count, "F").End(3).Row
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
On Error Resume Next
  With f.Cells(2, f.Columns.Count).Resize(dl - 1)
    .Formula = "=IF(H2=""OUI"",""$"",0)"
    .SpecialCells(xlCellTypeFormulas, 2).EntireRow.Delete
    .Clear
  End With
Application.Calculation = xlCalculationAutomatic
End Sub
 

Charles78

XLDnaute Nouveau
Staple,

Les deux fichiers avec vos codes respectifs et la formule en colonne H. En fait les fichiers initialement envoyés étaient après l'exécution d'une première macro pour mettre en forme le tableau de l'onglet "PRODUCTION". Maintenant, vous avez les fichiers avec la 1ère macro en incorporant vos codes.

Merci.
 

Pièces jointes

  • FICHIER FILTRE FORUM CODE STAPLE.xlsm
    39.6 KB · Affichages: 3
  • FICHIER FILTRE FORUM CODE FANFAN.xlsm
    39.5 KB · Affichages: 3

Charles78

XLDnaute Nouveau
Staple,

Oui effectivement ça fonctionne !!!! Les lignes sont bien supprimées et non masquées.

Aussi, si ce n'est pas trop demandé, peux-tu voir pour un code dans la cas où je souhaite supprimer les lignes du tableau mais cette fois si la colonne C est vide et toujours à partir de la ligne 2 ?

Merci infiniment à vous deux pour votre aide.
 

Staple1600

XLDnaute Barbatruc
Re

Essaies cette macro
VB:
Sub Suppr_LignesVides_COLC()
Dim dl&, f As Worksheet
Set f = Sheets("PRODUCTION")
dl = f.Cells(Rows.Count, "F").End(3).Row
Application.ScreenUpdating = False
f.Range("C2:C" & dl).SpecialCells(xlCellTypeBlanks).EntireRow.Delete
End Sub
 

Charles78

XLDnaute Nouveau
Staple,

En pièce jointe le fichier (pour le coup pas besoin de formule) mais j'ai un message d'erreur sur la dernière ligne.

VB:
f.Range("C2:C" & dl).SpecialCells(xlCellTypeBlanks).EntireRow.Delete

Merci.
 

Pièces jointes

  • FICHIER STAPLE SUPPRIMER LIGNES SI COLONNE C VIDE.xlsm
    19.1 KB · Affichages: 4

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…