OVH Cloud OVH Cloud

filtrer et supprimer des lignes

1 réponse
Avatar
Le Nordiste
Bonjour tertous,

Je suis sous EXCEL 2003, et veux faire ceci en VBA.

J'ai un tableau de pr=E9s de 2000 lignes avec des dates dans la colonne
C:C
Je d=E9sire filtrer et =E9liminer toutes les lignes dat=E9e de et avant
une date lue dans la colonne C:C.

Je me bats avec :

'=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D
With Worksheets("brouillon").Range("C:C")
.AutoFilter Field:=3D3, Criteria1:=3D"<=3D15/02/2006"

.Range("_FilterDatabase").Offset(1).SpecialCells(xlCellTypeVisible). _
EntireRow.Delete (xlUp)
.AutoFilter
'=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=3D=
=3D=3D=3D=3D

En pas =E0 pas je vois bien l'ensemble des lignes disparaitre, m=EAme
celle dont la date est sup=E9rieure au crit=E8re -ici 15/02/2006- et
lorsqu'arrive 'AutoFilter' rtoutes les lignes sont affich=E9es, comme si
il ne s'=E9tait rien pass=E9.

=20
Y n'fait que m'emb=E9ter VB ! , Msieu !=20


remerciements anticip=E9s,

1 réponse

Avatar
DesseJ
Bonjour,

Peut-être un truc comme ceci :

Sub SupprimeLignesMasquéesSuiteFiltre()
Dim MaPlage As Range
Dim Cell
Sheets("Brouillon").Range("A1").AutoFilter Field:=3,
Criteria1:="<=" & DateSerial(2006, 2, 15) * 1
'représente les données filtrées et les titres.
Set MaPlage = Sheets("Brouillon").AutoFilter.Range
For Each Cell In MaPlage
If Cell.Rows.Hidden = True Then
Cell.EntireRow.Delete Shift:=xlUp
End If
Next Cell
MaPlage.AutoFilter
End Sub

'ou une copie des données à garder sur un autre onglet

Sub CopieLignesFiltrées()
Dim Destination As Range
Dim MaPlage As Range
Sheets("Brouillon").Range("A1").AutoFilter Field:=3,
Criteria1:="<=" & DateSerial(2006, 2, 15) * 1
'Définis ta plage où sera copiée les données.
Set Destination = Sheets(2).Range("A1")
'représente les données filtrées et les titres.
Set MaPlage = Sheets("Brouillon").AutoFilter.Range
'représente seulement les données
Set MaPlage = MaPlage.Offset(1, 0).Resize(MaPlage.Rows.Count -
1, MaPlage.Rows.Count)
MaPlage.Copy Destination
MaPlage.AutoFilter
End Sub


Cordialement,
Steph D.