Macro VBA : Filtre élaboré extraction sur plusieurs onglets

  • Initiateur de la discussion Initiateur de la discussion bast0504
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

bast0504

XLDnaute Occasionnel
Bonjour à tous

Je souhaiterais savoir comment je pourrais adapter la macro ci-dessous de manière à extraire sur plusieurs onglets les données pays selon une liste de critère définie dans l'onglet "critères"

Les données de chaque pays seront extraites par onglet par une macro

Merci par avance

PHP:
Sub Macro1()
    Sheets("Base").Range("A1:D43").AdvancedFilter Action:=xlFilterCopy, _
        CriteriaRange:=Sheets("Critères").Range("a1:A2"), CopyToRange:=Sheets("Abu Dhabi").Range("A1:D1"), Unique:=False
End Sub
 

Pièces jointes

Re : Macro VBA : Filtre élaboré extraction sur plusieurs onglets

Bonsoir,

Remplace ton code par celui-ci (Nul besoin de l'onglet "Critères")

Code:
Sub Macro1()
Dim Plg As Range
Dim DerLig As Long
Dim Sh As Worksheet
Dim Cel As Range
Dim Pays As Object
Dim It
Set Pays = CreateObject("Scripting.Dictionary")
With Application
    .DisplayAlerts = False
    .ScreenUpdating = False
End With
For Each Sh In Sheets
    If Sh.Name <> "Base" Then Sh.Delete
Next Sh
With Sheets("Base")
    DerLig = .Cells(Rows.Count, "A").End(xlUp).Row
    Set Plg = .Range("A1:D" & DerLig)
    .[Z1] = .[A1]
    For Each Cel In .Range("A2:A" & DerLig)
        Pays(Cel.Value) = Cel.Value
    Next Cel
    For Each It In Pays.Items
        Sheets.Add after:=Sheets(Sheets.Count)
        ActiveSheet.Name = It
        .[Z2] = It
        Plg.AdvancedFilter Action:=xlFilterCopy, _
            CriteriaRange:=.Range("Z1:Z2"), CopyToRange:=ActiveSheet.Range("A1"), Unique:=False
    Next It
    .Range("Z1:Z2").Clear
    .Select
End With
End Sub

Bonne soirée
 
Re : Macro VBA : Filtre élaboré extraction sur plusieurs onglets

Bonjour bhbh,

Merci pour cette macro qui fonctionne à merveille,

Du coup si la colonne que j'utilise comme critère (ici la colonne Pays) se trouve au milieu de ma base de données et non plus en première colonne, quelle est la partie de la macro que je dois mettre à jour pour affecter la bonne colonne ?

Merci
 
Re : Macro VBA : Filtre élaboré extraction sur plusieurs onglets

Bonjour,

Il suffit par modifier ces lignes pour extraire tes critères sans doublons :

Code:
    .[Z1] = .[A1]
    For Each Cel In .Range("A2:A" & DerLig)
        Pays(Cel.Value) = Cel.Value
    Next Cel

Si tu choisis la colonne E, par exemple, tu mets :

Code:
    .[Z1] = .[E1]
    For Each Cel In .Range("E2:E" & DerLig)
        Pays(Cel.Value) = Cel.Value
    Next Cel

Avec condition que la colonne A soit bien remplie, sinon il faudra redéfinir la variable "DerLig" :

Code:
DerLig = .Cells(Rows.Count, "E").End(xlUp).Row

Bonne soirée
 
Re : Macro VBA : Filtre élaboré extraction sur plusieurs onglets

Bonjour à tous,
Je reprends cette discussion car ce sujet m'intéresse. Quelles lignes modifier pour garder les autres onglets à l'extraction ou encore pouvoir extraire sur 2 colonnes.
Merci pour la recherche.
Cordialement,
a26
 

Pièces jointes

Re : Macro VBA : Filtre élaboré extraction sur plusieurs onglets

Personne pour reprendre cette discussion ? Mes explications ne sont peut-être pas suffisamment claires ou précises ?
Merci si vous trouvez la solution.
Cordialement,
a26
 
Re : Macro VBA : Filtre élaboré extraction sur plusieurs onglets

Bonsoir à tous

a26
La coutume sur le forum est de créer sa propre discussion pour poser sa question plutôt que de la poser dans un fil initié par un autre membre.
(cela évite les fils à rallonge et rends la lecture des fils plus fluides)

A te relire donc dans ta nouvelle discussion.
(dans laquelle tu peux mettre un lien vers celle-ci pour expliquer sur quel document, macro, formule se base ta situation de départ)
 
Re : Macro VBA : Filtre élaboré extraction sur plusieurs onglets

Bonjour JB,
Merci pour ta réponse. En utilisant le fichier je ne vois pas pour chaque onglet en G1 et G2 le titre puis le service. Es-ce en modifiant CriteriaRange:=f.[G1:G2] que l'on peut les voir s'afficher.
Félicitations pour ton site qui est d'une richesse inouïe pour tous les amateurs d'excel.
Cordialement,
a26
 
Re : Macro VBA : Filtre élaboré extraction sur plusieurs onglets

Bonjour,

-Pour obtenir la liste des services:

f.[A1😀10000].AdvancedFilter Action:=xlFilterCopy, CopyToRange:=f.[G1], Unique:=True

-G1:G2 est bien le critère d'extraction

La boucle For Each prend successivement chaque nom de service en G2:G4 , le place en G2 et fait les extractions. La macro peut être exécutée en pas à pas avec la touche F8.

-Je ne comprends pas
>pouvoir extraire sur 2 colonnes.

Le mieux serait de poster un échantillon de la BD et d'indiquer ce que l'on doit extraire.

JB
 
Dernière édition:
Re : Macro VBA : Filtre élaboré extraction sur plusieurs onglets

Merci pour la réponse. Je te recontacte un peu plus tard, je dois malheureusement m'absenter. Un fichier exemple sera joint si je ne trouve pas la solution ce qui sera plus clair pour toi sinon tu auras une réponse comme quoi le problème est résolu.
Au fait problème résolu sur le forum on fait comment ?
Cordialement,
a26
 
Re : Macro VBA : Filtre élaboré extraction sur plusieurs onglets

Bonsoir à tous

a26
Le conseil que je te donnais dans ce message reste valable.
https://www.excel-downloads.com/thr...bore-extraction-sur-plusieurs-onglets.231699/

NB: Je ne vois pas comment tu pourrais mettre ce fil en RESOLU puisqu'il a été initié par bats0504
(Car pour mettre un fil en RESOLU il faut modifier le titre du premier message de la discussion)
On en revient donc à ma suggestion du message # 9 😉
 
Re : Macro VBA : Filtre élaboré extraction sur plusieurs onglets

Bonjour Staple 1600 et JB,
Comme j'avais commencé ici, je continue mais je retiens l'erreur que j'ai faite notifiée par Staple 1600 et que je retiens pour les autres discussions.
En réponse à JB je joins le fichier que j'ai pu résoudre en partie grâce à ses conseils.
Cordialement,
a26
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 Question code VBA
Réponses
2
Affichages
447
Réponses
7
Affichages
620
Retour