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"
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.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
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.
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
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