Macro à la fermeture sur plusieurs pages

Bonjour à tous.
Je cherche à réaliser une macro qui s’exécute lors de la fermeture de mon classeur.

J’arrive à le faire pour la page active, mais comment le faire pour qu’elle se réalise sur l’intégralité des pages du classeur?

Actuellement, j’ai placé dans ThisWorkbook:

Private Sub Workbook_BeforeClose(Cancel As Boolean)
Tri_Num_Croissant
End Sub

Merci par avance pour votre aide

Bonjour Benjy51190, as-tu une erreur à l’exécution ? Si oui, quelle est-elle ?

1 J'aime

Bonjour @Valky
Non, aucun erreur d’exécution.
Mon soucis de de vouloir appliquer ma macro à chacune des pages du classeur lors de sa fermeture, et non pas juste à la page activée.

La macro concernée est la suivante:

Sub Tri_Nom_Croissant()
Call Tri(“B6:B1003”, xlAscending)
End Sub

Ou alors, y a-t-il moyen de modifier la macro ci dessus pour qu’elle s’applique en permanence à chaque des 53 pages de mon classeur?

Merci par avance pour votre aide

Dans ce cas, il faut lancer ta ligne de commande au sein d’une boucle dans cette même macro :
For each mySheet in ActiveWorkbook.Worksheets
MySheet.Activate
Tri_Num_Croissant
Next mySheet

1 J'aime

Merci beaucoup @Valky, c’est exactement ce qu’il me fallait.
Ça fonctionne impeccable

Génial
Bonne continuation, et merci beaucoup de prendre du temps pour nous aider

Ravi de t’avoir aidé.

Re Bonjour @Valky.
Question subsidiaire: mon tableau comporte 53 onglets, dont 52 pour chacune des semaines de l’année (nommé: “Semaine1” “Semaine2” etc…):
que puis-je utiliser comme macro pour qu’a l’ouverture, je sois directement sur l’onglet de la semaine en cours?
Merci par avance si tu as une idée.
Bon après midi et à bientôt

Les numéros de semaine sont un sujet délicat dans Excel (et d’autres applications, d’ailleurs). La définition des n° de semaine n’est, en effet, pas la même partout dans le monde. En Europe, on utilise la semaine ISO (la semaine n° 1 est la première semaine - commençant par un lundi - de l’année qui comporte au moins 4 jours). Si c’est bien cette définition que tu utilises, alors tu peux appliquer une macro comme la suivante :
Private Sub Workbook_Open()
Worksheets("Semaine " & Application.WorksheetFunction.WeekNum(Date, 21)).Activate
Worksheets("Semaine " & Application.WorksheetFunction.IsoWeekNum(Date)).Activate ’ si ta version d’Excel >=2013 je crois
End Sub

N’oublie pas d’indiquer que ta question est résolue.

1 J'aime

Merci beaucoup @Valky.
Je viens de tester, mais j’ai une erreur d’excecution “9”: L’indice est en dehors des dimensions du tableau.
As-tu une idée?

Quelle version d’Excel utilises-tu ?

1 J'aime

La version la plus récente vu que j’utilise office 365, mais je suis sur mac par contre.

Ah ! c’est peut-être aussi une histoire d’espace ! Enlève l’espace après Semaine dans le code suivant :

1 J'aime

:slight_smile:
Merci beaucoup @Valky, ça fonctionne impeccable.
C’est exactement ce qu’il me fallait.

Merci pour l’aide précieuse.
Très bonne soirée

Avec plaisir ! N’oublie pas d’indiquer que le sujet est résolu.
Bonne soirée à toi aussi !

1 J'aime

@Valky, comment indique t-on que le sujet est résolu? j’ai déjà coché ton message pour indiquer que ça résout le problème: il y a autre chose à faire pour classer le sujet comme résolu?

Non ! C’est moi qui n’avais pas vu que tu avais coché cette case. C’est tout bon !

1 J'aime

Ce sujet a été automatiquement fermé après 30 jours. Aucune réponse n’est permise dorénavant.