Filtre Élaboré : CopyToRange variable ?

Résolu
SteB_Mtl Messages postés 9 Date d'inscription mardi 3 mars 2015 Statut Membre Dernière intervention 5 mai 2017 - Modifié par Whismeril le 3/03/2015 à 22:55
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 - 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.

10 réponses

ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
3 mars 2015 à 23:01
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
0
SteB_Mtl Messages postés 9 Date d'inscription mardi 3 mars 2015 Statut Membre Dernière intervention 5 mai 2017
3 mars 2015 à 23:05
Attraper la ligne n'est pas le probleme
j'arrive pas à m'en servir dans CopyToRange
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
3 mars 2015 à 23:19
passe plutôt une adresse ==>>
Dim ZoneOUT As string 
Ligne = ActiveCell.Row
ZoneOUT = Range(Cells(Ligne, 1), Cells(Ligne, 100)).address

....copytorange:= zoneout, ...
0
SteB_Mtl Messages postés 9 Date d'inscription mardi 3 mars 2015 Statut Membre Dernière intervention 5 mai 2017
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
4 mars 2015 à 16:59
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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
SteB_Mtl Messages postés 9 Date d'inscription mardi 3 mars 2015 Statut Membre Dernière intervention 5 mai 2017
4 mars 2015 à 17:01
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
4 mars 2015 à 17:11
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)
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
4 mars 2015 à 17:20
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
0
SteB_Mtl Messages postés 9 Date d'inscription mardi 3 mars 2015 Statut Membre Dernière intervention 5 mai 2017
4 mars 2015 à 17:25
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
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
Modifié par ucfoutu le 4/03/2015 à 18:00
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
0
SteB_Mtl Messages postés 9 Date d'inscription mardi 3 mars 2015 Statut Membre Dernière intervention 5 mai 2017
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.
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
4 mars 2015 à 17:54
Bien.
Pense s'il te plait à libérer cette discussion.
Un clic sur le tag RESOLU au niveau de ton tout premier message.
0
Rejoignez-nous