[Résolu] Erreur de syntaxe ...

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

djodjodjo

XLDnaute Occasionnel
Bonjour à tous,

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!

Merci d'avance 🙂
 
Dernière édition:
Re : [Résolu] Erreur de syntaxe ...

Bonjour
Comme ça :
VB:
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
À +

Bonjour Pierrot
 
Re : [Résolu] Erreur de syntaxe ...

Bonjour


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
 
Dernière édition:
Re : [Résolu] Erreur de syntaxe ...

Re,

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
d'autre part ce code n'effacera que les lignes renseignées par "-", pas les autres même si elles suivent..; :
 
Re : [Résolu] Erreur de syntaxe ...

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.
 
Re : [Résolu] Erreur de syntaxe ...

Merci,

donc en gros pour plus de sûreté, autant toujours utiliser
Code:
With ActiveSheet.UsedRange: K = .Row + .Rows.Count - 1: End With
?

Ca sera équivalent à
Code:
k = ActiveSheet.UsedRange.Rows.Count
dans mon cas?
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
994
Retour