Macro reservées à un classeur
Phil-13
Messages postés
22
Statut
Membre
-
Phil-13 Messages postés 22 Statut Membre -
Phil-13 Messages postés 22 Statut Membre -
Bonjour,
J'ai créé dans un classeur C1 une macro (dans module 1) qui s'appelle Zoom. Dans un autre classeur C2 j'ai créé une macro (dans module 1) qui s'appelle aussi Zoom (mais qui ne fait pas exactement la même chose que la 1ère. Ces 2 macros sont déclenchables par le même raccourci clavier (Ctrl-Enter).
Le problème c'est que quand j'ouvre les 2 classeurs, (1 en activant les macros et l'autre sans), le classeur ouvert sans activation des macros exécute la macro Zoom du 1er classeur.
Je pensais que les macros de classeur n'étaient actives que pour un classeur donné. Y a t il une solution pour qu'il en soit ainsi ou faut il que je renomme toutes mes macros (en fait j'en ai beaucoup et elles ont le même nom d'un classeur à l'autre) en les préfixant par le nom du classeur ou une autre nom (C1Zoom et C2Zoom par exemple) ?
J'espère avoir été clair.
Merci de vos réponses (ou questions complémentaires)
Cordialement
Philippe
J'ai créé dans un classeur C1 une macro (dans module 1) qui s'appelle Zoom. Dans un autre classeur C2 j'ai créé une macro (dans module 1) qui s'appelle aussi Zoom (mais qui ne fait pas exactement la même chose que la 1ère. Ces 2 macros sont déclenchables par le même raccourci clavier (Ctrl-Enter).
Le problème c'est que quand j'ouvre les 2 classeurs, (1 en activant les macros et l'autre sans), le classeur ouvert sans activation des macros exécute la macro Zoom du 1er classeur.
Je pensais que les macros de classeur n'étaient actives que pour un classeur donné. Y a t il une solution pour qu'il en soit ainsi ou faut il que je renomme toutes mes macros (en fait j'en ai beaucoup et elles ont le même nom d'un classeur à l'autre) en les préfixant par le nom du classeur ou une autre nom (C1Zoom et C2Zoom par exemple) ?
J'espère avoir été clair.
Merci de vos réponses (ou questions complémentaires)
Cordialement
Philippe
A voir également:
- Impossible de modifier une macro dans un classeur masqué
- Modifier dns - Guide
- Numero masque - Guide
- Modifier liste déroulante excel - Guide
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Comment modifier une story sur facebook - Guide
6 réponses
10 classeurs ouvert avec 10 macros avec le même raccourci = exécution des 10 Macros.
J'ai bien une autre idée mais..
Montre un peu deux de tes macros différentes.
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
J'ai bien une autre idée mais..
Montre un peu deux de tes macros différentes.
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Classeur C1 :
Option Explicit
Private Sub Workbook_Open()
Application.OnKey "^~", "Zoom" ' CTRL ENTER
End Sub
Module 1 :
Option Explicit
Sub Zoom()
MsgBox "Classeur C1"
End Sub
Classeur C2 :
Option Explicit
Private Sub Workbook_Open()
Application.OnKey "^~", "Zoom" ' CTRL ENTER
End Sub
Module 1 :
Option Explicit
Sub Zoom()
MsgBox "Classeur C2"
End Sub
Option Explicit
Private Sub Workbook_Open()
Application.OnKey "^~", "Zoom" ' CTRL ENTER
End Sub
Module 1 :
Option Explicit
Sub Zoom()
MsgBox "Classeur C1"
End Sub
Classeur C2 :
Option Explicit
Private Sub Workbook_Open()
Application.OnKey "^~", "Zoom" ' CTRL ENTER
End Sub
Module 1 :
Option Explicit
Sub Zoom()
MsgBox "Classeur C2"
End Sub
Bien sur que non c'est juste un exemple pour faire court. Ma macro zoom est programmée pour faire une énumération de toutes les feuilles du classeur et zoomer afin d'afficher à l'échèle de l'écran une sélection de cellules (jamais les mêmes selon les écrans). Mais ce n'est pas là le fond du problème, c'est le concept de la macro "réservée" à un classeur que j'essaye de mettre en place
En relisant ton dernier commentaire.. la macro ne doit être activée que pour le premier classeur ouvert et pas pour les autres.
Peut-être avec
Peut-être avec
Private Sub Workbook_Open()
If Application.Workbooks.Count = 1 Then
Application.OnKey "^~", "Zoom" ' CTRL ENTER
End If
End Sub
Non, non, ce n'est pas qu'elle doit n'être activée que pour le 1er classeur ouvert, je souhaite juste que chaque action Ctrl+Enter sur un classeur déclenche la macro correspondante au classeur. Sur C1 CTRL+Enter doit afficher "Classeur C1" et sur le classeur C2 le message doit être "Classeur C2". Actuellement, en ouvrant C1 puis C2 (et en activant les macros dans les 2 classeurs), Ctrl+Enter affiche toujours le message du 1er classeur ouvert.
De plus je voudrais qu'en activant pas les macros sur un des 2 classeurs, Ctrl+enter soit sans effet (actuellement Ctrl+Enter déclenche la macro du classeur ouvert avec prise en charge des macros).
En définitive, je pensais qu'en définissant une macro au sein d'un classeur, cette macro n'était visible QUE de ce classeur et non d'un autre.
De plus je voudrais qu'en activant pas les macros sur un des 2 classeurs, Ctrl+enter soit sans effet (actuellement Ctrl+Enter déclenche la macro du classeur ouvert avec prise en charge des macros).
En définitive, je pensais qu'en définissant une macro au sein d'un classeur, cette macro n'était visible QUE de ce classeur et non d'un autre.
pour simuler ce que tu veux tu pourrais mettre en début de macro
et laisser toutes les macros active
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
If ActiveWorkbook.Name <> ThisWorkbook.Name Then Exit Sub
et laisser toutes les macros active
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Je viens d'essayer, ça ne marche pas, le classeur actif quand je suis sur C1 (et que j'ai ouvert C1 en premier puis C2) est bien C1, mais il exécute la macro Zoom de C2. De plus je ne veux pas qu'il essaye de lancer la macro de C2, conceptuellement elle devrait être invisible depuis C1 et c'est la macro de C1 qui devrait être exécutée.
Pour faire ce test j'ai remplacé la macro zoom dans les 2 classeurs comme suit :
dans C1 MsgBox "Classeur C1 - Classeur actif " & ActiveWorkbook.Name
Dans C2 MsgBox "Classeur C2 - Classeur actif " & ActiveWorkbook.Name
Pour faire ce test j'ai remplacé la macro zoom dans les 2 classeurs comme suit :
dans C1 MsgBox "Classeur C1 - Classeur actif " & ActiveWorkbook.Name
Dans C2 MsgBox "Classeur C2 - Classeur actif " & ActiveWorkbook.Name
Je n'ai que ça dans mon test. Il faut créer un classeur C1 puis un classeur C2, y mettre les événements suivants :
Dans les 2 classeurs :
Private Sub Workbook_Open()
Application.OnKey "^~", "Zoom" ' CTRL ENTER
End Sub
puis dans le module suivant de C1
Sub Zoom()
MsgBox "Classeur C1 - Classeur actif " & ActiveWorkbook.Name
End Sub
et dans le module suivant de C2
Sub Zoom()
MsgBox "Classeur C2 - Classeur actif " & ActiveWorkbook.Name
End Sub
Dans les 2 classeurs :
Private Sub Workbook_Open()
Application.OnKey "^~", "Zoom" ' CTRL ENTER
End Sub
puis dans le module suivant de C1
Sub Zoom()
MsgBox "Classeur C1 - Classeur actif " & ActiveWorkbook.Name
End Sub
et dans le module suivant de C2
Sub Zoom()
MsgBox "Classeur C2 - Classeur actif " & ActiveWorkbook.Name
End Sub
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
Une autre façon de faire ?
Le raccourci Ctrl+Enter sélectionne la colonne active !! donc pas possible avec Enter.
J'ai mis Ctrl+d
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Le raccourci Ctrl+Enter sélectionne la colonne active !! donc pas possible avec Enter.
J'ai mis Ctrl+d
Private Sub Workbook_Open()
Dim S As String
S = "'" & Workbooks(1).Name & "'!Zoom"
Application.MacroOptions Macro:=S, _
Description:="", ShortcutKey:="d"
End Sub
Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
NOTE : Je ne répond pas aux MP pour les questions techniques.
Bonjour
Excusez l'incruste une piste
le nom du 1° classeur ouvert reste en mémoire jusqu'à l'extinction d'excel à adapter
puis appel des "zooms"
Sub Zoom()
MsgBox "Classeur actif " & Application.ExecuteExcel4Macro("get.name(""macroxl4"")")
End Sub
l.longre:
http://xcell05.free.fr/
Michel
Excusez l'incruste une piste
le nom du 1° classeur ouvert reste en mémoire jusqu'à l'extinction d'excel à adapter
dans les codes d'ouverture
If Application.Workbooks.Count = 1 Then '1° classeur ouvert (d'après lermite)
' ("curiosité" trouvée sur le site web de Laurent Longre ("hidden namespace") )
ExecuteExcel4Macro "set.name(""macroxl4"",""" & ThisWorkbook.Name & """)"
End if
puis appel des "zooms"
Sub Zoom()
MsgBox "Classeur actif " & Application.ExecuteExcel4Macro("get.name(""macroxl4"")")
End Sub
l.longre:
http://xcell05.free.fr/
Michel
Bonjour Michel et merci d'avoir cherché une solution. En fait celle que tu proposes est trop complexe pour ma problématique : Je souhaite juste une solution pour que des procédures (macros) faisant des traitements quasiment identiques (on pourrait imaginer msgbox "toto' dans une et msgbox "tata" dans l'autre) puissent être nommées de de la même façon tout en restant exclusivement réservées au classeur auquel elles appartiennent. Cela ne semble pas possible non plus sous Excel 2010, la version que j'utilise chez moi. Cela revient à nommer toutes les macro avec un préfixe ou un sufixe (genre C1_Zoom et C2_Zoom). C'est dommage que Excel ne le fasse pas de lui même sur une macro définie pour un seul classeur. J'ai essayé aussi Call ThisWorkbook.Zoom, ca ne marche pas ... Je continue de chercher ...
Oui, c'est sûr, mais alors autant garder les raccourcis et changer le nom des macros, sinon avec 10 classeurs différents partageant une même macro (zoom sur quelques cellules toujours différentes dans mon exemple), il faudrait alors se souvenir des raccourcis affectés à chacun des classeurs ... Ce n'est pas envisageable
Merci