Filtre élaboré variable en vba

A

albert

Guest
bonjour à tous, bonjour forum,

je cherche à sélectionner des colonnes discontinues, avec un filtre élaboré

dans un tableau de 7 colonnes en Feuil1

Dans Feuil2, j’indique G-C-E en C1 D1 E1, ce qui correspond à la ligne de code
Action:=xlFilterCopy, CopyToRange:=Range("C1:E1")

le code fonctionne bien.

Si je fais une extension de colonnes : au lieu de C1:E1 => C1:G1

Action:=xlFilterCopy, CopyToRange:=Range("C1:G1")

Il faut que j’ajoute des critères de tri en F1 G1, sinon il y a bogue parce que le nombre de cellules dans la feuille ne correspond plus au nombre choisi par le code

Donc j’ajoute d et a dans la feuille ,en F1 et G1.. et le tri fonctionne

Par conséquent, j’imagine qu’il est possible de faire varier la sélection dans la ligne C1 à …C1+n
j’écris donc
Sub Macro2()
i = Range("C1", Range("C1").End(xlToRight))
Sheets("feuil2").Select
Sheets("feuil1").Range("A1:G10").AdvancedFilter _
Action:=xlFilterCopy, CopyToRange:=Range(i), Unique:=True
End Sub

Et j’ajoute b en H1
… excel n’apprécie pas le "i" semble-t-il....

comment puis-je donc faire pour obtenir un filtre qui fonctionne sur les données variables en ligne C1 :Cn1 ???


pièce jointe : FILTREVAR.zip 10 Ko

Merci d'avance

albert
 

Pièces jointes

  • FILTREVAR.zip
    9.4 KB · Affichages: 85
V

Valérie

Guest
Salut Albert et le forum,

le problème est ton i 2 solutions :

ou tu places la ref de tes cellules en i
et là tu peux écrire
Dim i As String
i = Range("C1", Range("C1").End(xlToRight)).Address

Sinon tu crées une variable Range directement
Dim i As Range
Set i = Range("C1", Range("C1").End(xlToRight))
mais il faut aussi que tu changes ton filtre
Sheets("feuil1").Range("A1").CurrentRegion.AdvancedFilter _
Action:=xlFilterCopy, CopyToRange:=i, Unique:=True

It's as you want. Bon courage
Valérie
 

Discussions similaires

Réponses
3
Affichages
607

Statistiques des forums

Discussions
312 488
Messages
2 088 858
Membres
103 978
dernier inscrit
bderradji