Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Filtre automatique - Sélection zone filtrée

7 réponses
Avatar
Kolonna
Bonjour,

J'utilise le code suivant pour copier une zone filtrée (sans la 1ère ligne
du tableau).

Selection.AutoFilter Field:=1, Criteria1:=">=" & valeur * 1,
Operator:=xlAnd

Set tbl = ActiveCell.CurrentRegion
tbl.Offset(1, 0).Resize(tbl.Rows.Count - 1, _
tbl.Columns.Count).Select
Application.CutCopyMode = False
Selection.Copy

Par contre, j'ai un souci lorsque le filtre retourne 0 ligne sélectionnée...
Comment puis-je procédér ?

Merci!

7 réponses

Avatar
michdenis
Adapte ce code à ton application :


Sub test()

Dim Valeur As Long

Valeur = 5

Application.ScreenUpdating = False
With Worksheets("Feuil1")
With .Range("A1").CurrentRegion
.AutoFilter Field:=1, Criteria1:=">=" & Valeur * 1
End With
With .Range("_FilterDatabase")
.Offset(1, 0).Resize(.Rows.Count - 1, _
.Columns.Count).Copy Feuil2.Range("A1")
End With
.Range("A1").AutoFilter
End With

End Sub




"Kolonna" a écrit dans le message de
news:
Bonjour,

J'utilise le code suivant pour copier une zone filtrée (sans la 1ère ligne
du tableau).

Selection.AutoFilter Field:=1, Criteria1:=">=" & valeur * 1,
Operator:=xlAnd

Set tbl = ActiveCell.CurrentRegion
tbl.Offset(1, 0).Resize(tbl.Rows.Count - 1, _
tbl.Columns.Count).Select
Application.CutCopyMode = False
Selection.Copy

Par contre, j'ai un souci lorsque le filtre retourne 0 ligne sélectionnée...
Comment puis-je procédér ?

Merci!
Avatar
Daniel.C
Bonjour.
Essaie :

Selection.AutoFilter Field:=1, Criteria1:=">=" & valeur * 1,
Operator:=xlAnd

Set tbl = ActiveCell.CurrentRegion
Set tbl = tbl.Offset(1, 0).Resize(tbl.Rows.Count - 1, _
tbl.Columns.Count)
If Not tbl Is Nothing Then
Application.CutCopyMode = False
tbl.Copy

Cordialement.
Daniel
"Kolonna" a écrit dans le message de
news:
Bonjour,

J'utilise le code suivant pour copier une zone filtrée (sans la 1ère ligne
du tableau).

Selection.AutoFilter Field:=1, Criteria1:=">=" & valeur * 1,
Operator:=xlAnd

Set tbl = ActiveCell.CurrentRegion
tbl.Offset(1, 0).Resize(tbl.Rows.Count - 1, _
tbl.Columns.Count).Select
Application.CutCopyMode = False
Selection.Copy

Par contre, j'ai un souci lorsque le filtre retourne 0 ligne
sélectionnée...
Comment puis-je procédér ?

Merci!



Avatar
Kolonna
Je dois rater un truc, car ton code tel quel ne fonctionne pas chez moi...
Ca me copie les lignes "cachées", donc non filtrées...

"michdenis" a écrit :

Adapte ce code à ton application :


Sub test()

Dim Valeur As Long

Valeur = 5

Application.ScreenUpdating = False
With Worksheets("Feuil1")
With .Range("A1").CurrentRegion
.AutoFilter Field:=1, Criteria1:=">=" & Valeur * 1
End With
With .Range("_FilterDatabase")
.Offset(1, 0).Resize(.Rows.Count - 1, _
.Columns.Count).Copy Feuil2.Range("A1")
End With
.Range("A1").AutoFilter
End With

End Sub




"Kolonna" a écrit dans le message de
news:
Bonjour,

J'utilise le code suivant pour copier une zone filtrée (sans la 1ère ligne
du tableau).

Selection.AutoFilter Field:=1, Criteria1:=">=" & valeur * 1,
Operator:=xlAnd

Set tbl = ActiveCell.CurrentRegion
tbl.Offset(1, 0).Resize(tbl.Rows.Count - 1, _
tbl.Columns.Count).Select
Application.CutCopyMode = False
Selection.Copy

Par contre, j'ai un souci lorsque le filtre retourne 0 ligne sélectionnée...
Comment puis-je procédér ?

Merci!




Avatar
michdenis
Tu as parfaitement raison, j'ai omis
"SpecialCells(xlCellTypeVisible)" dans la procédure

Désolé :

'-----------------------------------------------
Sub test()

Dim Valeur As Long

Valeur = 5

Application.ScreenUpdating = False
With Worksheets("Feuil1")
With .Range("A1").CurrentRegion
.AutoFilter Field:=1, Criteria1:=">=" & Valeur * 1
End With
With .Range("_FilterDatabase")
.Offset(1, 0).Resize(.Rows.Count - 1, _
.Columns.Count).SpecialCells(xlCellTypeVisible) _
.Copy Feuil2.Range("A1")
End With
.Range("A1").AutoFilter
End With

End Sub
'-----------------------------------------------



"Kolonna" a écrit dans le message de
news:
Je dois rater un truc, car ton code tel quel ne fonctionne pas chez moi...
Ca me copie les lignes "cachées", donc non filtrées...

"michdenis" a écrit :

Adapte ce code à ton application :


Sub test()

Dim Valeur As Long

Valeur = 5

Application.ScreenUpdating = False
With Worksheets("Feuil1")
With .Range("A1").CurrentRegion
.AutoFilter Field:=1, Criteria1:=">=" & Valeur * 1
End With
With .Range("_FilterDatabase")
.Offset(1, 0).Resize(.Rows.Count - 1, _
.Columns.Count).Copy Feuil2.Range("A1")
End With
.Range("A1").AutoFilter
End With

End Sub




"Kolonna" a écrit dans le message de
news:
Bonjour,

J'utilise le code suivant pour copier une zone filtrée (sans la 1ère ligne
du tableau).

Selection.AutoFilter Field:=1, Criteria1:=">=" & valeur * 1,
Operator:=xlAnd

Set tbl = ActiveCell.CurrentRegion
tbl.Offset(1, 0).Resize(tbl.Rows.Count - 1, _
tbl.Columns.Count).Select
Application.CutCopyMode = False
Selection.Copy

Par contre, j'ai un souci lorsque le filtre retourne 0 ligne
sélectionnée...
Comment puis-je procédér ?

Merci!




Avatar
Kolonna
Je me retrouve maintenant avec une erreur d'execution si aucune ligne ne
correspond à mes critères de filtre. Normal ?

Merci!

"michdenis" a écrit :

Tu as parfaitement raison, j'ai omis
"SpecialCells(xlCellTypeVisible)" dans la procédure

Désolé :

'-----------------------------------------------
Sub test()

Dim Valeur As Long

Valeur = 5

Application.ScreenUpdating = False
With Worksheets("Feuil1")
With .Range("A1").CurrentRegion
.AutoFilter Field:=1, Criteria1:=">=" & Valeur * 1
End With
With .Range("_FilterDatabase")
.Offset(1, 0).Resize(.Rows.Count - 1, _
.Columns.Count).SpecialCells(xlCellTypeVisible) _
.Copy Feuil2.Range("A1")
End With
.Range("A1").AutoFilter
End With

End Sub
'-----------------------------------------------



"Kolonna" a écrit dans le message de
news:
Je dois rater un truc, car ton code tel quel ne fonctionne pas chez moi...
Ca me copie les lignes "cachées", donc non filtrées...

"michdenis" a écrit :

> Adapte ce code à ton application :
>
>
> Sub test()
>
> Dim Valeur As Long
>
> Valeur = 5
>
> Application.ScreenUpdating = False
> With Worksheets("Feuil1")
> With .Range("A1").CurrentRegion
> .AutoFilter Field:=1, Criteria1:=">=" & Valeur * 1
> End With
> With .Range("_FilterDatabase")
> .Offset(1, 0).Resize(.Rows.Count - 1, _
> .Columns.Count).Copy Feuil2.Range("A1")
> End With
> .Range("A1").AutoFilter
> End With
>
> End Sub
>
>
>
>
> "Kolonna" a écrit dans le message de
> news:
> Bonjour,
>
> J'utilise le code suivant pour copier une zone filtrée (sans la 1ère ligne
> du tableau).
>
> Selection.AutoFilter Field:=1, Criteria1:=">=" & valeur * 1,
> Operator:=xlAnd
>
> Set tbl = ActiveCell.CurrentRegion
> tbl.Offset(1, 0).Resize(tbl.Rows.Count - 1, _
> tbl.Columns.Count).Select
> Application.CutCopyMode = False
> Selection.Copy
>
> Par contre, j'ai un souci lorsque le filtre retourne 0 ligne
> sélectionnée...
> Comment puis-je procédér ?
>
> Merci!
>
>




Avatar
michdenis
| Normal ?

Bien sûr, c'est une des caractéristiques de la propriété SpecialCells
décrite dans l'aide. Lorsqu'elle ne trouve pas de cellules correspondantes
elle se "plante".

On début de macro, utilise : On error resume next

et après la ligne où la procédure copie les données vers
la plage de destination, tu ajoutes :

On error goto 0



"Kolonna" a écrit dans le message de
news:

Je me retrouve maintenant avec une erreur d'execution si aucune ligne ne
correspond à mes critères de filtre. Normal ?

Merci!

"michdenis" a écrit :

Tu as parfaitement raison, j'ai omis
"SpecialCells(xlCellTypeVisible)" dans la procédure

Désolé :

'-----------------------------------------------
Sub test()

Dim Valeur As Long

Valeur = 5

Application.ScreenUpdating = False
With Worksheets("Feuil1")
With .Range("A1").CurrentRegion
.AutoFilter Field:=1, Criteria1:=">=" & Valeur * 1
End With
With .Range("_FilterDatabase")
.Offset(1, 0).Resize(.Rows.Count - 1, _
.Columns.Count).SpecialCells(xlCellTypeVisible) _
.Copy Feuil2.Range("A1")
End With
.Range("A1").AutoFilter
End With

End Sub
'-----------------------------------------------



"Kolonna" a écrit dans le message de
news:
Je dois rater un truc, car ton code tel quel ne fonctionne pas chez moi...
Ca me copie les lignes "cachées", donc non filtrées...

"michdenis" a écrit :

> Adapte ce code à ton application :
>
>
> Sub test()
>
> Dim Valeur As Long
>
> Valeur = 5
>
> Application.ScreenUpdating = False
> With Worksheets("Feuil1")
> With .Range("A1").CurrentRegion
> .AutoFilter Field:=1, Criteria1:=">=" & Valeur * 1
> End With
> With .Range("_FilterDatabase")
> .Offset(1, 0).Resize(.Rows.Count - 1, _
> .Columns.Count).Copy Feuil2.Range("A1")
> End With
> .Range("A1").AutoFilter
> End With
>
> End Sub
>
>
>
>
> "Kolonna" a écrit dans le message de
> news:
> Bonjour,
>
> J'utilise le code suivant pour copier une zone filtrée (sans la 1ère
> ligne
> du tableau).
>
> Selection.AutoFilter Field:=1, Criteria1:=">=" & valeur * 1,
> Operator:=xlAnd
>
> Set tbl = ActiveCell.CurrentRegion
> tbl.Offset(1, 0).Resize(tbl.Rows.Count - 1, _
> tbl.Columns.Count).Select
> Application.CutCopyMode = False
> Selection.Copy
>
> Par contre, j'ai un souci lorsque le filtre retourne 0 ligne
> sélectionnée...
> Comment puis-je procédér ?
>
> Merci!
>
>




Avatar
Kolonna
Royal, merci de ton aide !!

"michdenis" a écrit :

| Normal ?

Bien sûr, c'est une des caractéristiques de la propriété SpecialCells
décrite dans l'aide. Lorsqu'elle ne trouve pas de cellules correspondantes
elle se "plante".

On début de macro, utilise : On error resume next

et après la ligne où la procédure copie les données vers
la plage de destination, tu ajoutes :

On error goto 0



"Kolonna" a écrit dans le message de
news:

Je me retrouve maintenant avec une erreur d'execution si aucune ligne ne
correspond à mes critères de filtre. Normal ?

Merci!

"michdenis" a écrit :

> Tu as parfaitement raison, j'ai omis
> "SpecialCells(xlCellTypeVisible)" dans la procédure
>
> Désolé :
>
> '-----------------------------------------------
> Sub test()
>
> Dim Valeur As Long
>
> Valeur = 5
>
> Application.ScreenUpdating = False
> With Worksheets("Feuil1")
> With .Range("A1").CurrentRegion
> .AutoFilter Field:=1, Criteria1:=">=" & Valeur * 1
> End With
> With .Range("_FilterDatabase")
> .Offset(1, 0).Resize(.Rows.Count - 1, _
> .Columns.Count).SpecialCells(xlCellTypeVisible) _
> .Copy Feuil2.Range("A1")
> End With
> .Range("A1").AutoFilter
> End With
>
> End Sub
> '-----------------------------------------------
>
>
>
> "Kolonna" a écrit dans le message de
> news:
> Je dois rater un truc, car ton code tel quel ne fonctionne pas chez moi...
> Ca me copie les lignes "cachées", donc non filtrées...
>
> "michdenis" a écrit :
>
> > Adapte ce code à ton application :
> >
> >
> > Sub test()
> >
> > Dim Valeur As Long
> >
> > Valeur = 5
> >
> > Application.ScreenUpdating = False
> > With Worksheets("Feuil1")
> > With .Range("A1").CurrentRegion
> > .AutoFilter Field:=1, Criteria1:=">=" & Valeur * 1
> > End With
> > With .Range("_FilterDatabase")
> > .Offset(1, 0).Resize(.Rows.Count - 1, _
> > .Columns.Count).Copy Feuil2.Range("A1")
> > End With
> > .Range("A1").AutoFilter
> > End With
> >
> > End Sub
> >
> >
> >
> >
> > "Kolonna" a écrit dans le message de
> > news:
> > Bonjour,
> >
> > J'utilise le code suivant pour copier une zone filtrée (sans la 1ère
> > ligne
> > du tableau).
> >
> > Selection.AutoFilter Field:=1, Criteria1:=">=" & valeur * 1,
> > Operator:=xlAnd
> >
> > Set tbl = ActiveCell.CurrentRegion
> > tbl.Offset(1, 0).Resize(tbl.Rows.Count - 1, _
> > tbl.Columns.Count).Select
> > Application.CutCopyMode = False
> > Selection.Copy
> >
> > Par contre, j'ai un souci lorsque le filtre retourne 0 ligne
> > sélectionnée...
> > Comment puis-je procédér ?
> >
> > Merci!
> >
> >
>
>