Google Groups no longer supports new Usenet posts or subscriptions. Historical content remains viewable.
Dismiss

Copier/Coller de toutes les cellules d'une colonne filtrée

1,261 views
Skip to first unread message

Patrick_67

unread,
Jun 9, 2014, 3:34:09 AM6/9/14
to
Bonjour à toutes et à tous,

Imaginons une colonne Excel (faisant partie d'un tableau de type base de données) sur laquelle un filtre est appliqué.
Seules sont donc visibles les cellules qui correspondent au(x) critère(s) de filtre pour cette colonne.
Je souhaite néanmoins copier toutes les cellules de cette colonnes (visibles ET NON VISIBLES) sans effacer le(s) critère(s) de filtre sur cette colonne.
Par défaut, Excel ne copie QUE les cellules visibles.
Or je souhaite donc copier TOUTES les cellules (affichées ET masquées) de cette colonne.

Merci d'avance pour vos réponses à ce sujet...

Patrick

MichD

unread,
Jun 9, 2014, 1:25:18 PM6/9/14
to
Bonjour,


Voici un bout de code. Cet exemple copie un "Tableau" de la "Feuil1" (nom de la propri�t� "Name" de l'objet "Feuille" visible
seulement dans la fen�tre de l'�diteur de code) vers la feuil2 � partir de la cellule H11 (adresse au hasard) en appliquant
le filtre du tableau 1 vers le tableau2.
Dans mon exemple, sur un champ num�rique, j'ai utilis� comme crit�re : ">5" ou plus grand que ">15".
Le code ressemble � ceci :

'----------------------------------------------------
Sub Test100()

Dim T As ListObject, T2 As ListObject, X As Variant
Dim LeFiltre As Filter, Rg As Range, A As Long
Dim NomFeuille As String

Application.ScreenUpdating = False
NomFeuille = ActiveSheet.Name

'O� est le tableau � copier
Set T = Feuil1.ListObjects(1)

'Destination de la copie
Set Rg = Feuil2.Range("H11")

'Copie du tableau
With T
.Range.Copy Rg
Set T2 = Rg.ListObject
End With
T.Parent.Select
T.Range.Select

'Section qui applique les m�mes filtres sur le tableau
'de destinatin que le tableau source
'On Error Resume Next
With T
For Each LeFiltre In .Range.Parent.AutoFilter.Filters
A = A + 1
With LeFiltre
If .On Then
T2.Range.AutoFilter Field:=A, Criteria1:=.Criteria1, Criteria2:=.Criteria2
End If
End With
Next
End With
Worksheets(NomFeuille).Select
Application.EnableEvents = True
End Sub
'----------------------------------------------------



MichD

unread,
Jun 9, 2014, 1:28:24 PM6/9/14
to
J'ai omis de mentionner que cette ligne de code peut-�tre diff�rente selon le type de donn�es sur laquelle tu as un filtre et
le crit�re utilis� : T2.Range.AutoFilter Field:=A, Criteria1:=.Criteria1, Criteria2:=.Criteria2

DanielCo

unread,
Jun 9, 2014, 3:06:47 PM6/9/14
to
Bonjour,
Ou aussi, avec une seule colonne filtrᅵe :
With Sheets(1).AutoFilter
Var = Application.Transpose(.Range)
Sheets(2).[A1].Resize(UBound(Var)) = Application.Transpose(Var)
End With
Cordidalement.
Daniel


> Bonjour ᅵ toutes et ᅵ tous,
>
> Imaginons une colonne Excel (faisant partie d'un tableau de type base de
> donnᅵes) sur laquelle un filtre est appliquᅵ. Seules sont donc visibles les
> cellules qui correspondent au(x) critᅵre(s) de filtre pour cette colonne. Je
> souhaite nᅵanmoins copier toutes les cellules de cette colonnes (visibles ET
> NON VISIBLES) sans effacer le(s) critᅵre(s) de filtre sur cette colonne. Par
> dᅵfaut, Excel ne copie QUE les cellules visibles. Or je souhaite donc copier
> TOUTES les cellules (affichᅵes ET masquᅵes) de cette colonne.
>
> Merci d'avance pour vos rᅵponses ᅵ ce sujet...
>
> Patrick

MichD

unread,
Jun 9, 2014, 3:52:42 PM6/9/14
to
Bonjour Daniel,

On n'a pas compris la mᅵme chose!

A ) Le demandeur parle d'un "Tableau" sur lequel un filtre est appliquᅵ.

B ) La plage oᅵ sont copiᅵes les donnᅵes doit comprendre toutes les donnᅵes,
mais les filtres (critᅵres) du premier tableau doivent demeurer appliquᅵs sur
le "tableau" qui vient d'ᅵtre crᅵer.

Je ne vois pas comment ta proposition rᅵpond ᅵ la question.

Voici un fichier exemple utilisant le code que je propose!
http://cjoint.com/?DFjvZt6V5HI

MichD

unread,
Jun 9, 2014, 8:25:56 PM6/9/14
to
Je vous invite ᅵ retenir plutᅵt le code de ce fichier : http://cjoint.com/?DFkcx4aWQK1
Il est plus complet et plus efficace!

MichD

unread,
Jun 9, 2014, 8:28:22 PM6/9/14
to
Le code du fichier exemple :

'----------------------------------------------------------------
Sub Test()

Dim T As ListObject, T2 As ListObject, X As Variant
Dim LeFiltre As Filter, Rg As Range, A As Long

'Oᅵ est le tableau ᅵ copier
Set T = Feuil1.ListObjects(1)

'Destination de la copie
Set Rg = Feuil2.Range("H11")

'Copie du tableau
With T
.Range.Copy Rg
Set T2 = Rg.ListObject
End With

'Section qui applique les mᅵmes filtres sur le tableau
'de destination que le tableau source
With Worksheets(T.Range.Parent.Name)
With .ListObjects(T.Name)
For Each LeFiltre In .AutoFilter.Filters
A = A + 1
With LeFiltre
If .On Then
Select Case .Operator
Case 1, 2 'XlAnd ou XlOr
T2.Range.AutoFilter Field:=A, Criteria1:=.Criteria1, _
Operator:=.Operator, Criteria2:=.Criteria2
Case Else
T2.Range.AutoFilter Field:=A, Criteria1:=.Criteria1, _
Operator:=.Operator
End Select
End If
End With
Next
End With
End With
End Sub
'----------------------------------------------------------------

DanielCo

unread,
Jun 10, 2014, 5:14:49 AM6/10/14
to
Bonjour Denis,
Effectivement !
1. c'est toute l'ambiguᅵtᅵ du terme "tableau".
2. j'ai compris : sans effacer les critᅵres de filtre sur la colonne
copiᅵe "sans effacer le(s) critᅵre(s) de filtre sur cette colonne".
Reste ᅵ connaᅵtre l'avis de Patrick.
Cordialement.
Daniel
0 new messages