Bonjour tout le monde,
J'ai créé des macros qui me font des jolis calculs, légèrement différentes mais ressemblantes dans plusieurs feuilles, et ayant le même nom dans chaque feuille (mais déclarées privées). Le but, c'est que les résultats soient mis à jour en direct quand on change une valeur. Je veux donc exécuter ma macro chaque fois qu'une valeur d'entrée est modifiée.
Si une valeur est modifiée dans la feuille de la macro (feuilles B, C, D, E), j'ai le code suivant qui marche très bien et qui exécute la macro de la feuille :
Par contre, j'ai une autre feuille (feuille A) dans laquelle je stocke pas mal de données d'entrée communes à tous les cas, et j'aimerais que quand je modifie cette feuille, les macros des feuilles B, C, D et E soient exécutées. Quelqu'un saurait-il comment faire ça ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False 'Pour ne pas avoir de boucle infinie MaProcédure Application.EnableEvents = True End Sub
Une des solutions que j'envisage est de créer dans le module principale une procédure UpdateAll, qui irait exécuter les macros des feuilles B, C, D et E. Cette procédure serait appelée lors de la modification de la feuille A par le code :
Je préfère mettre UpdateAll dans le module plutôt que directement dans la feuille A car je vais probablement devoir la réutiliser. Mon problème, c'est que je ne sais pas comment, du module principal, appeler les procédures situées dans les autres onglets... Quelqu'un a une idée de comment faire ça ? Ou comment aboutir au résultat de manière plus simple ?
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5 Private Sub Worksheet_Change(ByVal Target As Range) Application.EnableEvents = False UpdateAll Application.EnableEvents = True End Sub
Merci !
Partager