Copier/Coller de toutes les cellules d'une colonne filtrée
7 réponses
Patrick_67
Bonjour =E0 toutes et =E0 tous,
Imaginons une colonne Excel (faisant partie d'un tableau de type base de do=
nn=E9es) sur laquelle un filtre est appliqu=E9.
Seules sont donc visibles les cellules qui correspondent au(x) crit=E8re(s)=
de filtre pour cette colonne.
Je souhaite n=E9anmoins copier toutes les cellules de cette colonnes (visib=
les ET NON VISIBLES) sans effacer le(s) crit=E8re(s) de filtre sur cette co=
lonne.
Par d=E9faut, Excel ne copie QUE les cellules visibles.
Or je souhaite donc copier TOUTES les cellules (affich=E9es ET masqu=E9es) =
de cette colonne.
Merci d'avance pour vos r=E9ponses =E0 ce sujet...
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
MichD
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
'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 '----------------------------------------------------
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
'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
'----------------------------------------------------
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
'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
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
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
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
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
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.
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
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
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
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
Je vous invite à retenir plutôt le code de ce fichier : http://cjoint.com/?DFkcx4aWQK1 Il est plus complet et plus efficace!
Je vous invite à retenir plutôt le code de ce fichier : http://cjoint.com/?DFkcx4aWQK1
Il est plus complet et plus efficace!
Je vous invite à retenir plutôt le code de ce fichier : http://cjoint.com/?DFkcx4aWQK1 Il est plus complet et plus efficace!
MichD
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 '----------------------------------------------------------------
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
'----------------------------------------------------------------
'---------------------------------------------------------------- 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
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
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
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
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
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
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