Filtre Élaboré : CopyToRange variable ? [Résolu]

SteB_Mtl 9 Messages postés mardi 3 mars 2015Date d'inscription 5 mai 2017 Dernière intervention - 3 mars 2015 à 22:53 - Dernière réponse : ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention
- 4 mars 2015 à 17:54
Bonjour,
j'essaie en vain d'utiliser un RANGE de SORTIE "variable" pour un filtre élaboré dans VB.
(que la sortie soit à partir de la ligne active ou est positionné l'usager)

merci de votre aide


Dim Ligne As Integer
Dim ZoneOUT As Range 
    Ligne = ActiveCell.Row
    Set ZoneOUT = Range(Cells(Ligne, 1), Cells(Ligne, 100))

    Workbooks("1523.xlsm").Sheets("DP").Range("A2:AB100000").AdvancedFilter Action _
        :=xlFilterCopy, CriteriaRange:=Range("A2:AB3"), CopyToRange:=ZoneOUT, Unique:=False


EDIT: Ajout de la coloration syntaxique.
Afficher la suite 

Votre réponse

12 réponses

ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 3 mars 2015 à 23:01
0
Merci
Bonjour,
"(que la sortie soit à partir de la ligne active ou est positionné l'usager) "

La ligne active est celle de la cellule active. C'est également cellme de l'objet selection
Tant
ActiveCell.row
que
Selection.row te retourneront le n° de cette ligne
Commenter la réponse de ucfoutu
SteB_Mtl 9 Messages postés mardi 3 mars 2015Date d'inscription 5 mai 2017 Dernière intervention - 3 mars 2015 à 23:05
0
Merci
Attraper la ligne n'est pas le probleme
j'arrive pas à m'en servir dans CopyToRange
Commenter la réponse de SteB_Mtl
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 3 mars 2015 à 23:19
0
Merci
passe plutôt une adresse ==>>
Dim ZoneOUT As string 
Ligne = ActiveCell.Row
ZoneOUT = Range(Cells(Ligne, 1), Cells(Ligne, 100)).address

....copytorange:= zoneout, ...
SteB_Mtl 9 Messages postés mardi 3 mars 2015Date d'inscription 5 mai 2017 Dernière intervention - 4 mars 2015 à 16:10
Ca me retourne : erreur 1004 reference non valide

Sub ImporterC()

Dim Ligne As Integer
Dim Colonne As Integer
Dim ZoneOUT As String

Ligne = ActiveCell.Row
ZoneOUT = Range(Cells(Ligne, 1), Cells(Ligne, 100)).Address

If MsgBox(Ligne, vbYesNo, "Test") = vbYes Then
Workbooks("1523.xlsm").Sheets("DP").Range("A2:AB100000").AdvancedFilter Action _
:=xlFilterCopy, CriteriaRange:=Range("A2:AB3"), CopyToRange:=ZoneOUT, Unique:=False
End If
End Sub
Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 4 mars 2015 à 16:59
0
Merci
Peut-être, mais ce n'est pas dû à copytorange:= ZONEOUT
Ton erreur est ailleurs et tu es le seul à pouvoir déterminer où.
Je te rappelle à toutes fins :
1) - que que les filtres avancés entre deux feuilles ne peuvent s'exercer que depuis la feuille de destination (si différente de la feuille d'origine)
2) - qu'il ne peut y avoir de filtre avancé installé entre deux classeurs différents
3) - que l'adresse de destination peut n'être qu'une cellule (pas nécessairement une plage) de départ. Tout sera copié à partir de cette cellule
4) - tu es également seul à savoir où se trouve ta plage de critères Range("A2:AB3"). Pour ton info, c'est une plage de la feuille active au lancement de ta macro, puisque la feuille n'y est pas précisée.


Ta demande concernait l'aspect de la mise en variable de la plage de destination. J'ai répondu à cet aspect-là. Les autres aspects ne sont connus que de toi seul.
Commenter la réponse de ucfoutu
SteB_Mtl 9 Messages postés mardi 3 mars 2015Date d'inscription 5 mai 2017 Dernière intervention - 4 mars 2015 à 17:01
0
Merci
Ceci fonctionne, on brûle ... reste juste à rendre zoneOUT variable (à la place des lignes 10 et 100 du Range)

Sub ImporterB()

Dim Ligne As Integer
Dim ZoneOUT As Range

Ligne = ActiveCell.Row
Set ZoneOUT = Range("A10:AB100")

Workbooks("1523.xlsm").Sheets("DP").Range("A2:AB100000").AdvancedFilter Action _
:=xlFilterCopy, CriteriaRange:=Range("A2:AB3"), CopyToRange:=ZoneOUT, Unique:=False
End Sub
Commenter la réponse de SteB_Mtl
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 4 mars 2015 à 17:11
0
Merci
As-tu lu attentivement mon point 3) ?
Tu n'as besoin que de la cellule de départ de la destination ===>>
Range("A" & selection.row)
Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 4 mars 2015 à 17:20
0
Merci
Pour être clair :
si ceci marche :
Workbooks("1523.xlsm").Sheets("DP").Range("A2:AB100000").AdvancedFilter Action _
:=xlFilterCopy, CriteriaRange:=Range("A2:AB3"), CopyToRange:=ZoneOUT, Unique:=False

tu n'as même pas besoin de définir ZON EOUT.
Ceci marchera également ===>>
Workbooks("1523.xlsm").Sheets("DP").Range("A2:AB100000").AdvancedFilter Action _
:=xlFilterCopy, CriteriaRange:=Range("A2:AB3"), CopyToRange:=Range("A" & selection.row), Unique:=False


Une autre fois : la feuille de destination doit par ailleurs nécessairement être la feuille active
Commenter la réponse de ucfoutu
SteB_Mtl 9 Messages postés mardi 3 mars 2015Date d'inscription 5 mai 2017 Dernière intervention - 4 mars 2015 à 17:25
0
Merci
Oui j'ai vu gros merci. Ca fonctionne enfin en utilisant diectement la cellule active comme zoneOUT.
(Si je veux m'assurer que le range ests completement à gauche (1ere colonne) de la cellule active, je ferais comment ?)

Sub Importer()

Dim ZoneOUT As Range

Set ZoneOUT = ActiveCell

Workbooks("1523.xlsm").Sheets("DP").Range("A2:AB100000").AdvancedFilter Action _
:=xlFilterCopy, CriteriaRange:=Range("A2:AB3"), CopyToRange:=ZoneOUT, Unique:=False

End Sub
Commenter la réponse de SteB_Mtl
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - Modifié par ucfoutu le 4/03/2015 à 18:00
0
Merci
Si je veux m'assurer que le range ests completement à gauche (1ere colonne) de la cellule active, je ferais comment ?

Je dois me répéter ?????
Copie donc mon code !

<signature>________________________
Problème résolu ? ===>> discussion à libérer par un clic sur le tag RESOLU au niveau du tout-premier message
SteB_Mtl 9 Messages postés mardi 3 mars 2015Date d'inscription 5 mai 2017 Dernière intervention - 4 mars 2015 à 17:39
Encore mieux GROS MERCI.
P.S. les délais des messages laissaient croire à tort que j'avais recu lu certaines reponses. Je suis nouveau ici, je dois probablement m'habituer à faire des updates de la page avant de réécrire.
En passant ca focntionne meme ente 2 fichiers ce filtre élaboré, en autant que le fichier de destination soit celui actif, et que le fichier source soit ouvert on dirait.
Commenter la réponse de ucfoutu
ucfoutu 18039 Messages postés lundi 7 décembre 2009Date d'inscriptionModérateurStatut 11 avril 2018 Dernière intervention - 4 mars 2015 à 17:54
0
Merci
Bien.
Pense s'il te plait à libérer cette discussion.
Un clic sur le tag RESOLU au niveau de ton tout premier message.
Commenter la réponse de ucfoutu

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.