[Résolu] Erreur de syntaxe ...

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:

Dranreb

XLDnaute Barbatruc
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
 

TempusFugit

XLDnaute Impliqué
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:

Pierrot93

XLDnaute Barbatruc
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..; :
 

Dranreb

XLDnaute Barbatruc
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.
 

djodjodjo

XLDnaute Occasionnel
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?
 

Discussions similaires

Réponses
2
Affichages
176
Réponses
3
Affichages
561

Statistiques des forums

Discussions
312 501
Messages
2 089 014
Membres
104 005
dernier inscrit
Maxence