Copie de macros

Résolu/Fermé
Marlj Messages postés 58 Date d'inscription mercredi 29 juin 2011 Statut Membre Dernière intervention 12 mars 2020 - 30 juin 2016 à 20:17
Marlj Messages postés 58 Date d'inscription mercredi 29 juin 2011 Statut Membre Dernière intervention 12 mars 2020 - 14 juil. 2016 à 22:02
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 14471 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 29 août 2024 2 727
30 juin 2016 à 20:51
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 mercredi 29 juin 2011 Statut Membre Dernière intervention 12 mars 2020 21
7 juil. 2016 à 15:24
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 mercredi 29 juin 2011 Statut Membre Dernière intervention 12 mars 2020 21
14 juil. 2016 à 22:02
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