Simplification Code VBA Autofilter

jlbox

XLDnaute Nouveau
Bonsoir à tous,

J'ai le même code VBA qui se répéte sur plusieurs feuilles de calcul. Y-a-t-il un moyen de le simplifier plutôt que de le répéter à chaque fois ? Je vous remercie d'avance pour votre aide.

Merci.

Ci-joint le code en question (dans cet exemple, le code n'est répété que 2 fois) :



Sub Rubriques_A()


' Extraction Rubrique A01
Sheets("A01").Select
'Efface le tableau à partir de la cellule AA13
Range("AA13").CurrentRegion.Clear
'Sélectionnela BDD, applique le filtre élaboré puis colle le résultat en cellule AC12
Range("BDD!Lancer_la_requête_à_partir_de_MS_Access_Database").AdvancedFilter _
Action:=xlFilterCopy, CriteriaRange:=Range("A12").CurrentRegion, _
CopyToRange:=Range("AC12"), _
Unique:=False
'Crée 2 en-tête de colonne en AA12 et AB12
Range("AA12").Value = "Code Rubrique"
Range("AB12").Value = "Intitulé Rubrique"
Range("AA12:AB12").Font.Bold = True
'Rempli les colonnes AA et AB d'après les données en B2 et B3
x = Range("AC65536").End(xlUp).Row
Range("AA13", "AA" & x).Value = Range("B2")
Range("AB13", "AB" & x).Value = Range("B3")
Range("AA13", "AB" & x).Font.Size = 8
'Ajustement automatique des largeurs de colonnes
Range("AA13").CurrentRegion.EntireColumn.AutoFit


' Extraction Rubrique A02
Sheets("A02").Select
'Efface le tableau à partir de la cellule AA13
Range("AA13").CurrentRegion.Clear
'Sélectionnela BDD, applique le filtre élaboré puis colle le résultat en cellule AC12
Range("BDD!Lancer_la_requête_à_partir_de_MS_Access_Database").AdvancedFilter _
Action:=xlFilterCopy, CriteriaRange:=Range("A12").CurrentRegion, _
CopyToRange:=Range("AC12"), _
Unique:=False
'Crée 2 en-tête de colonne en AA12 et AB12
Range("AA12").Value = "Code Rubrique"
Range("AB12").Value = "Intitulé Rubrique"
Range("AA12:AB12").Font.Bold = True
'Rempli les colonnes AA et AB d'après les données en B2 et B3
x = Range("AC65536").End(xlUp).Row
Range("AA13", "AA" & x).Value = Range("B2")
Range("AB13", "AB" & x).Value = Range("B3")
Range("AA13", "AB" & x).Font.Size = 8
'Ajustement automatique des largeurs de colonnes
Range("AA13").CurrentRegion.EntireColumn.AutoFit

End Sub
 

Épaf

XLDnaute Occasionnel
Re : Simplification Code VBA Autofilter

Bonjour,
Tu as plusieurs solutions pour régler ton problème, par exemple
- créer une fonction à laquelle tu envoies les paramètres variables de ta mise en forme
- créer un tableau des feuilles de calculs pour leur affecter tous les paramètres identiques. Ex :
Code:
With Sheets(Array("A01", "A02"))
- mélanger les deux solutions
Bonne journée
 

macsscam

XLDnaute Junior
Re : Simplification Code VBA Autofilter

Bonjour jibox, le forum,

Je ne suis pas très fort pour bien comprendre... je ne suis pas sûr de bien répondre à ta question.
Tout dépend des différences entre les onglets.

Voici quand même une proposition.
Tu peux mettre ce code dans un module et l'exécuter :

Code:
Sub jibox()
Dim feuille As Worksheet
Dim x As Integer

For Each feuille In Worksheets   'pour toutes les feuilles du classeur
    With feuille
        'Efface le tableau à partir de la cellule AA13
        .Range("AA13").CurrentRegion.Clear
        'Sélectionnela BDD, applique le filtre élaboré puis colle le résultat en cellule AC12
        .Range("BDD!Lancer_la_requête_à_partir_de_MS_Access _Database").AdvancedFilter _
        Action:=xlFilterCopy, CriteriaRange:=Range("A12").CurrentRegion, _
        CopyToRange:=Range("AC12"), _
        Unique:=False
        'Crée 2 en-tête de colonne en AA12 et AB12
        .Range("AA12").Value = "Code Rubrique"
        .Range("AB12").Value = "Intitulé Rubrique"
        .Range("AA12:AB12").Font.Bold = True
        'Rempli les colonnes AA et AB d'après les données en B2 et B3
        x = Range("AC65536").End(xlUp).Row
        .Range("AA13", "AA" & x).Value = .Range("B2")
        .Range("AB13", "AB" & x).Value = .Range("B3")
        .Range("AA13", "AB" & x).Font.Size = 8
        'Ajustement automatique des largeurs de colonnes
        .Range("AA13").CurrentRegion.EntireColumn.AutoFit
    End With
Next
End Sub

Si tu veux plus d'aide, tu peux nous joindre un fichier sans les données confidentielles,

Bonne journée,

[Edit :] Bonjour Epaf
--
macsscam
 
Dernière édition:

jlbox

XLDnaute Nouveau
Re : Simplification Code VBA Autofilter

Bonsoir à tous,

J'ai opté pour la solution d'Epaf car je desirais sélectionner les feuilles sur lesquelles appliquer la macro.

Merci à STAPLE1600 pour la remarque :)

Quoiqu'il en soit merci aux membres du forum qui ont toujours su répondre à mes questions.

Cordialement,
 

Discussions similaires

Statistiques des forums

Discussions
312 305
Messages
2 087 090
Membres
103 464
dernier inscrit
Inconnu2