j'ai un petit souci.. évidemment ! Je m'explique: en fait je veux trouver une valeur dans une colonne, et dès que je l'ai trouvée je supprime toutes les lignes qui suivent cette valeur. J'ai rédigé ça, mais evidemment ça ne fonctionne pas :
Code:
k = ActiveSheet.UsedRange.Rows.Count
Set g = ActiveSheet.Range("C9:C" & k).Find("-", LookIn:=xlValues, LookAt:=xlWhole)
lig_g = g.Row
Range("C" & lig_g:"C" & k).Delete
Et Rows("lig_g:k").Delete ne fonctionne évidemment pas..
Je ne peux pas supprimer les lignes une par une avec une boucle for car ça fait ramer le fichier à chaque suppression de ligne, donc il faudrait tout supprimer d'un coup!
Dim K As Long, G As Range
With ActiveSheet.UsedRange: K = .Row + .Rows.Count - 1: End With
Set G = ActiveSheet.Range("C9:C" & K).Find("-", LookIn:=xlValues, LookAt:=xlWhole)
If Not G Is Nothing Then Rows(G.Row & ":" & K).Delete
Je ne peux pas supprimer les lignes une par une avec une boucle for car ça fait ramer le fichier à chaque suppression de ligne, donc il faudrait tout supprimer d'un coup!
En utilisant par VBA un filtre automatique, plus besoin de rame.
Un exemple ci-dessous
Code:
Sub Macro1()
Dim k As Long
k = ActiveSheet.UsedRange.Rows.Count
Range("C8").Resize(k).AutoFilter Field:=1, Criteria1:="-"
Range("_FilterDatabase").Offset(1, 0).Resize(Range("_FilterDatabase").Rows.Count - 1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
ActiveSheet.AutoFilterMode = False
End Sub
Dim k As Long
k = ActiveSheet.UsedRange.Rows.Count
Range("C8").Resize(k).AutoFilter Field:=1, Criteria1:="-"
Range("_FilterDatabase").Offset(1, 0).Resize(Range("_FilterDatabase").Rows.Count - 1).SpecialCells(xlCellTypeVisible).EntireRow.Delete
ActiveSheet.AutoFilterMode = False
Parce que la plage définie par UsedRange peut commencer au delà des ligne et colonne 1. Ça m'arrive souvent dans mes classeurs. Je n'utilise guère la ligne 1, sauf pour un titre général de la feuille, ni la colonne A, sauf pour un numéro d'ordre de ligne en dehors de la zone d'impression, et si je n'en mets pas elle est même hors de la plage utilisée.