Appliquer une macro à plusieurs feuilles

Ed -  
eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   -
Bonjour,

Je dois réaliser une macro qui me permet de faire les actions suivantes :
dans un fichier excel on importe un ou plusieurs fichiers qui sont tous au même format mais avec des noms différents. Leur nombre varie en fonction de ce que l'utilisateur souhaite importer.

J'ai crée une macro de traitement des données sauf que j'ai figé la feuille en dur.

Mon objecctif est d'appliquer la macro à l'ensemble des feuilles ainsi importées (et pas aux autres feuilles permanantes du fichier excel dont je connais le nom). je ne connais ni le nombre ni la dénomination de ces feuilles importées.

Le programme doit donc :
- identifier les feuilles importées
- appliquer ma macro à l'ensemble de ces feuilles ainsi identifiées en un seul clic

Exemple :
Le fichier Excel d'origine avant import contient les onglets "ongletfixe1" et "ongletfixe2". Ces onglets sont permanents.

On importe en source les onglets CPM1, CPM50 et CPM24

Ma macro crée actuellement à partir de CPM1 un onglet intitulé "Output CPM1"

La macro cible doit identifier les onglets CPM1, CPM50 et CPM24 sans sélectionner "ongletfixe1" et "ongletfixe2" et appliquer ma macro.

On aura donc en sortie dans le fichier Excel les onglets :
"ongletfixe1", "ongletfixe2", "CPM1", "CPM50", "CPM24", "Output CPM1", "Output CPM50" et "Output CPM24"

Remarque : l'utilisateur aurait pu importer les fichier CPM2, CPM44, CPM72 et CPM17. En sortie on aurait donc les onglets; "ongletfixe1", "ongletfixe2", "CPM2", "CPM44", "CPM72", "CPM17", "Output CPM2", "Output CPM44", "Output CPM72" et "Output CPM17"

Amicalement,

1 réponse

eriiic Messages postés 25847 Date d'inscription   Statut Contributeur Dernière intervention   7 282
 
Bonjour,

comme tes feuilles à traiter commencent toujours par les mêmes lettres (et sont les seules) tu peux faire un truc comme ça :
Sub bcl()
    Dim w As Worksheet
    For Each w In Worksheets
        If Left(w.Name, 3) = "CPM" Then
            'call ta_macro
        End If
    Next w
End Sub
eric
0