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).
Sub SupprLignes()
Dim dl&: dl = Cells(Rows.Count, 1).End(3).Row
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
With Cells(2, Columns.Count).Resize(dl - 1)
.Formula = "=IF(H2=""OUI"",""$"",0)"
.SpecialCells(xlCellTypeFormulas, 2).EntireRow.Delete
.Clear
End With
Application.Calculation = xlCalculationAutomatic
End Sub
NB: Test OK sur mon propre fichier exemple (avec mes propres formules qui renvoient OUI en colonne H)
Sub SupprLignes()
Dim dl&: dl = Cells(Rows.Count, 1).End(3).Row
Application.ScreenUpdating = False
Application.Calculation = xlCalculationManual
With Cells(2, Columns.Count).Resize(dl - 1)
.Formula = "=IF(H2=""OUI"",""$"",0)"
.SpecialCells(xlCellTypeFormulas, 2).EntireRow.Delete
.Clear
End With
Application.Calculation = xlCalculationAutomatic
End Sub
NB: Test OK sur mon propre fichier exemple (avec mes propres formules qui renvoient OUI en colonne H)
Faire le test avec le code du message#11
(A exécuter sur une feuille vierge)
Puis quand l'exemple est créé
Lancer la macro SupprLignes
Normalement pas de message d'erreur, et les lignes avec OUI ont été supprimées.
En tout cas, c'est ce qui se passe sur mon PC.
PS: On ne joint pas le fichier original mais un fichier allégé pour illustrer la question
Ou comme je l'ai fait une macro qui créé l'exemple