Copie de macros

Résolu
Marlj Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   -  
Marlj Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

J'ai fait un ficher pour entrer des données hebdomadaire (un onglet par semaine) qui commence avec la semaine du 4 juillet. Il y a la date, l'heure, l'endroit, responsable, commentaires, etc. J'ai fait une première feuille toute mise en forme, formules, etc. J'ai aussi fait plusieurs macros : filtre par endroit, par responsable, pour la date du jour et aussi une macro qui tri le tableau par jour, puis par heure et j'ai mis des boutons pour ces macros. Je ne suis pas expertes en macros, mais elles fonctionnent toutes correctement.

Le problème : quand j'ai voulu copier ma feuille (pour faire mes 52 onglets), toute les macros ont suivies et fonctionnent bien d'une feuille à l'autre sauf la dernière (tri par date puis par heure). Effectivement, quand je vais dans la feuille du 11 juillet, par exemple, et que je regarde dans le VBA de cette macro, il est indiqué ceci.

ActiveWorkbook.Worksheets("4 juil").AutoFilter.Sort.SortFields.Clear
ActiveWorkbook.Worksheets("4 juil").AutoFilter.Sort.SortFields.Add Key:=Range _
("A12:A201"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
ActiveWorkbook.Worksheets("4 juil").AutoFilter.Sort.SortFields.Add Key:=Range _
("C12:C201"), SortOn:=xlSortOnValues, Order:=xlAscending, DataOption:= _
xlSortNormal
With ActiveWorkbook.Worksheets("4 juil").AutoFilter.Sort
.Header = xlYes
.MatchCase = False
.Orientation = xlTopToBottom
.SortMethod = xlPinYin
.Apply
End With

Elle tri donc la feuille du 4 juillet et non celle du 11 juillet. Y a-t-il un moyen pour dire d'exécuter la macro dans la feuille active ou je dois faire 52 macros?

J'espère que je suis claire... Merci de vos lumières.
A voir également:

2 réponses

via55 Messages postés 14512 Date d'inscription   Statut Membre Dernière intervention   2 746
 
Bonsoir

Pour faire une macro applicable à la feuille courante :

1) Dans un module (Insertion et Module dans l'editeur VBA) tu crées le cadre d'une macro :
Sub tri_par-dates

End sub

A l'intérieur tu colles tes lignes précédentes et tu remplaces les ActiveWorkbook.Worksheets("4 juil") par Activesheet

2) Dans la 1ere de tes 52 feuilles dans le code du bouton qui doit déclencher la macro, au lieu des lignes de macro tu mets simplement le nom de la macro à effectuer, dans mon exemple tri_par_dates

3) Quand tu auras fait cela pour toutes tes macros et tous tes boutons tu pourra copier 52 fois la feuille. Tu auras 52 fois les instructions des boutons mais qui se limitent à une ligne et qui renvoient aux macros dans le module

Cdlmnt
Via
0
Marlj Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   21
 
Merci beaucoup. Je l'essaierai, ça me semble assez simple... quand on le sait :)

Merci de vos lumières
0
Marlj Messages postés 58 Date d'inscription   Statut Membre Dernière intervention   21
 
J'ai essayé, ça marche extra! Comme j'avais déjà copié mes feuilles, j'ai essayé la modification et ensuite j'ai été dans chaque feuille mettre le bouton de la macro et ça fonctionne.

Merci encore.
0