Bonjour,
J'ai écrit une mini macro complémentaire perso (Excel XP) et je voudrais
qu'en l'installant elle s'ajoute dans le menu outils (et que son code soit
masqué).
L'aide en ligne est n'est pas limpide. Quelqu'un peut-il détailler
l'opération ?
Merci d'avance.
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Olivier
Bonjour,
Je suppose qu'elle est sauvegardée quelque part en *.xla.
La premiere fois, il faut aller la chercher en faisant Outils Macro compl. Parcourir.
Ensuite, elle apparaitra dans la liste ...
Il faut mettre un mot de passe dans le projet VBA si tu veux que le code soit masqué ( Outils Propriétés de VBA Project dans l'environnement VBA)
Olivier
"F. Gondard" a écrit dans le message de news: buh1mm$tst$
Bonjour, J'ai écrit une mini macro complémentaire perso (Excel XP) et je voudrais qu'en l'installant elle s'ajoute dans le menu outils (et que son code soit masqué). L'aide en ligne est n'est pas limpide. Quelqu'un peut-il détailler l'opération ? Merci d'avance.
Bonjour,
Je suppose qu'elle est sauvegardée quelque part en *.xla.
La premiere fois, il faut aller la chercher en faisant Outils Macro compl.
Parcourir.
Ensuite, elle apparaitra dans la liste ...
Il faut mettre un mot de passe dans le projet VBA si tu veux que le code
soit masqué ( Outils Propriétés de VBA Project dans l'environnement VBA)
Olivier
"F. Gondard" <fgondard@wanadoo.fr> a écrit dans le message de news:
buh1mm$tst$1@news-reader1.wanadoo.fr...
Bonjour,
J'ai écrit une mini macro complémentaire perso (Excel XP) et je voudrais
qu'en l'installant elle s'ajoute dans le menu outils (et que son code soit
masqué).
L'aide en ligne est n'est pas limpide. Quelqu'un peut-il détailler
l'opération ?
Merci d'avance.
Je suppose qu'elle est sauvegardée quelque part en *.xla.
La premiere fois, il faut aller la chercher en faisant Outils Macro compl. Parcourir.
Ensuite, elle apparaitra dans la liste ...
Il faut mettre un mot de passe dans le projet VBA si tu veux que le code soit masqué ( Outils Propriétés de VBA Project dans l'environnement VBA)
Olivier
"F. Gondard" a écrit dans le message de news: buh1mm$tst$
Bonjour, J'ai écrit une mini macro complémentaire perso (Excel XP) et je voudrais qu'en l'installant elle s'ajoute dans le menu outils (et que son code soit masqué). L'aide en ligne est n'est pas limpide. Quelqu'un peut-il détailler l'opération ? Merci d'avance.
F. Gondard
Merci pour la réponse mais le problème n'est pas tout à fait là.
L'installation de la macro (xla bien sûr) déclenche normalement l'événement WorkbookAddinInstall sur lequel on peut créer une procédure. Qui ajoutera un item dans le menu outils par exemple. C'est la manière de manipuler cet événement qui me cause des soucis.
J'ai bien crée un objet de type application dans un module de classe. J'ai également codé ma procédure d'événement dans ce module de classe mais tout ce passe comme si je ne rentrais jamais dedans (msgbox de contrôle muet).
Bizarrement, le nom de l'événement semble ne pas être reconnu en tant que mot clef par l'éditeur VB ! Y'aurai-il un problème (ou un verrouillage, on est dans un contexte pro) d'installation ? Ce doit être plutôt moi qui cafouille.
Pour ce qui du masquage du code, c'est peut-être une solution, mais il est dit explicitement dans l'aide de Excel 95, le premier bout d'office à incorporer VBA, que le code d'une macro xla, même installée, est automatiquement masqué dans les autres classeurs. Ne serait-ce plus vrai dans les versions postérieures ?
Si quelqu'un à une suggestion...merci d'avance.
Merci pour la réponse mais le problème n'est pas tout à fait là.
L'installation de la macro (xla bien sûr) déclenche normalement l'événement
WorkbookAddinInstall sur lequel on peut créer une procédure. Qui ajoutera un
item dans le menu outils par exemple. C'est la manière de manipuler cet
événement qui me cause des soucis.
J'ai bien crée un objet de type application dans un module de classe. J'ai
également codé ma procédure d'événement dans ce module de classe mais tout
ce passe comme si je ne rentrais jamais dedans (msgbox de contrôle muet).
Bizarrement, le nom de l'événement semble ne pas être reconnu en tant que
mot clef par l'éditeur VB ! Y'aurai-il un problème (ou un verrouillage, on
est dans un contexte pro) d'installation ? Ce doit être plutôt moi qui
cafouille.
Pour ce qui du masquage du code, c'est peut-être une solution, mais il est
dit explicitement dans l'aide de Excel 95, le premier bout d'office à
incorporer VBA, que le code d'une macro xla, même installée, est
automatiquement masqué dans les autres classeurs. Ne serait-ce plus vrai
dans les versions postérieures ?
Merci pour la réponse mais le problème n'est pas tout à fait là.
L'installation de la macro (xla bien sûr) déclenche normalement l'événement WorkbookAddinInstall sur lequel on peut créer une procédure. Qui ajoutera un item dans le menu outils par exemple. C'est la manière de manipuler cet événement qui me cause des soucis.
J'ai bien crée un objet de type application dans un module de classe. J'ai également codé ma procédure d'événement dans ce module de classe mais tout ce passe comme si je ne rentrais jamais dedans (msgbox de contrôle muet).
Bizarrement, le nom de l'événement semble ne pas être reconnu en tant que mot clef par l'éditeur VB ! Y'aurai-il un problème (ou un verrouillage, on est dans un contexte pro) d'installation ? Ce doit être plutôt moi qui cafouille.
Pour ce qui du masquage du code, c'est peut-être une solution, mais il est dit explicitement dans l'aide de Excel 95, le premier bout d'office à incorporer VBA, que le code d'une macro xla, même installée, est automatiquement masqué dans les autres classeurs. Ne serait-ce plus vrai dans les versions postérieures ?
Si quelqu'un à une suggestion...merci d'avance.
Frédéric Sigonneau
Bonsoir,
Si j'ai bien compris ce que tu essayes de faire, tu n'as pas besoin, AMA, d'un module de classe et d'un objet Application. Dans un module standard de ton xla, écris une procédure qui crée ton menu, ou ta commande de menu, et une autre qui le(la) détruit. Appelle la procédure de création dans l'événement Workbook_Open (ou Workbook_AddinInstall) du module ThisWorkbook du xla et la procédure de destruction dans son événement Workbook_BeforeClose (ou Workbook_AddinUnInstall). C'est tout :)
Pour ce qui est de la protection du code, la manière de procéder jusqu'à Excel 5/95 a complètement changé à partir d'Excel 97. Depuis Excel 97, une macro complémentaire est un classeur très ordinaire dont la propriété IsAddin est enregistrée à True (l'extension .xla n'a rien d'obligatoire, mais c'est un repère utile AMA). Si tu veux protéger ton code, tu dois passer, dans l'éditeur VBE, par le menu OutilsPropriétés de VBAProject onglet Protection (changer le nom par défaut dans l'onglet Général n'est pas une mauvaise idée non plus). Il faut enregistrer puis fermer le classeur pour que la protection soit effective à sa réouverture.
Des exemples de macros complémentaires qui créent leur menu avec cette technique sur cette page :
(si le code est protégé, le mot de passe est "zaza", sans les guillemets).
FS -- Frédéric Sigonneau [MVP Excel - né un sans-culottide] Gestions de temps, VBA pour Excel : http://perso.wanadoo.fr/frederic.sigonneau Si votre question sur Excel est urgente, évitez ma bal !
Merci pour la réponse mais le problème n'est pas tout à fait là.
L'installation de la macro (xla bien sûr) déclenche normalement l'événement WorkbookAddinInstall sur lequel on peut créer une procédure. Qui ajoutera un item dans le menu outils par exemple. C'est la manière de manipuler cet événement qui me cause des soucis.
J'ai bien crée un objet de type application dans un module de classe. J'ai également codé ma procédure d'événement dans ce module de classe mais tout ce passe comme si je ne rentrais jamais dedans (msgbox de contrôle muet).
Bizarrement, le nom de l'événement semble ne pas être reconnu en tant que mot clef par l'éditeur VB ! Y'aurai-il un problème (ou un verrouillage, on est dans un contexte pro) d'installation ? Ce doit être plutôt moi qui cafouille.
Pour ce qui du masquage du code, c'est peut-être une solution, mais il est dit explicitement dans l'aide de Excel 95, le premier bout d'office à incorporer VBA, que le code d'une macro xla, même installée, est automatiquement masqué dans les autres classeurs. Ne serait-ce plus vrai dans les versions postérieures ?
Si quelqu'un à une suggestion...merci d'avance.
Bonsoir,
Si j'ai bien compris ce que tu essayes de faire, tu n'as pas besoin, AMA, d'un
module de classe et d'un objet Application.
Dans un module standard de ton xla, écris une procédure qui crée ton menu, ou ta
commande de menu, et une autre qui le(la) détruit. Appelle la procédure de
création dans l'événement Workbook_Open (ou Workbook_AddinInstall) du module
ThisWorkbook du xla et la procédure de destruction dans son événement
Workbook_BeforeClose (ou Workbook_AddinUnInstall). C'est tout :)
Pour ce qui est de la protection du code, la manière de procéder jusqu'à Excel
5/95 a complètement changé à partir d'Excel 97. Depuis Excel 97, une macro
complémentaire est un classeur très ordinaire dont la propriété IsAddin est
enregistrée à True (l'extension .xla n'a rien d'obligatoire, mais c'est un
repère utile AMA). Si tu veux protéger ton code, tu dois passer, dans l'éditeur
VBE, par le menu OutilsPropriétés de VBAProject onglet Protection (changer le
nom par défaut dans l'onglet Général n'est pas une mauvaise idée non plus). Il
faut enregistrer puis fermer le classeur pour que la protection soit effective à
sa réouverture.
Des exemples de macros complémentaires qui créent leur menu avec cette technique
sur cette page :
(si le code est protégé, le mot de passe est "zaza", sans les guillemets).
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
Merci pour la réponse mais le problème n'est pas tout à fait là.
L'installation de la macro (xla bien sûr) déclenche normalement l'événement
WorkbookAddinInstall sur lequel on peut créer une procédure. Qui ajoutera un
item dans le menu outils par exemple. C'est la manière de manipuler cet
événement qui me cause des soucis.
J'ai bien crée un objet de type application dans un module de classe. J'ai
également codé ma procédure d'événement dans ce module de classe mais tout
ce passe comme si je ne rentrais jamais dedans (msgbox de contrôle muet).
Bizarrement, le nom de l'événement semble ne pas être reconnu en tant que
mot clef par l'éditeur VB ! Y'aurai-il un problème (ou un verrouillage, on
est dans un contexte pro) d'installation ? Ce doit être plutôt moi qui
cafouille.
Pour ce qui du masquage du code, c'est peut-être une solution, mais il est
dit explicitement dans l'aide de Excel 95, le premier bout d'office à
incorporer VBA, que le code d'une macro xla, même installée, est
automatiquement masqué dans les autres classeurs. Ne serait-ce plus vrai
dans les versions postérieures ?
Si j'ai bien compris ce que tu essayes de faire, tu n'as pas besoin, AMA, d'un module de classe et d'un objet Application. Dans un module standard de ton xla, écris une procédure qui crée ton menu, ou ta commande de menu, et une autre qui le(la) détruit. Appelle la procédure de création dans l'événement Workbook_Open (ou Workbook_AddinInstall) du module ThisWorkbook du xla et la procédure de destruction dans son événement Workbook_BeforeClose (ou Workbook_AddinUnInstall). C'est tout :)
Pour ce qui est de la protection du code, la manière de procéder jusqu'à Excel 5/95 a complètement changé à partir d'Excel 97. Depuis Excel 97, une macro complémentaire est un classeur très ordinaire dont la propriété IsAddin est enregistrée à True (l'extension .xla n'a rien d'obligatoire, mais c'est un repère utile AMA). Si tu veux protéger ton code, tu dois passer, dans l'éditeur VBE, par le menu OutilsPropriétés de VBAProject onglet Protection (changer le nom par défaut dans l'onglet Général n'est pas une mauvaise idée non plus). Il faut enregistrer puis fermer le classeur pour que la protection soit effective à sa réouverture.
Des exemples de macros complémentaires qui créent leur menu avec cette technique sur cette page :
(si le code est protégé, le mot de passe est "zaza", sans les guillemets).
FS -- Frédéric Sigonneau [MVP Excel - né un sans-culottide] Gestions de temps, VBA pour Excel : http://perso.wanadoo.fr/frederic.sigonneau Si votre question sur Excel est urgente, évitez ma bal !
Merci pour la réponse mais le problème n'est pas tout à fait là.
L'installation de la macro (xla bien sûr) déclenche normalement l'événement WorkbookAddinInstall sur lequel on peut créer une procédure. Qui ajoutera un item dans le menu outils par exemple. C'est la manière de manipuler cet événement qui me cause des soucis.
J'ai bien crée un objet de type application dans un module de classe. J'ai également codé ma procédure d'événement dans ce module de classe mais tout ce passe comme si je ne rentrais jamais dedans (msgbox de contrôle muet).
Bizarrement, le nom de l'événement semble ne pas être reconnu en tant que mot clef par l'éditeur VB ! Y'aurai-il un problème (ou un verrouillage, on est dans un contexte pro) d'installation ? Ce doit être plutôt moi qui cafouille.
Pour ce qui du masquage du code, c'est peut-être une solution, mais il est dit explicitement dans l'aide de Excel 95, le premier bout d'office à incorporer VBA, que le code d'une macro xla, même installée, est automatiquement masqué dans les autres classeurs. Ne serait-ce plus vrai dans les versions postérieures ?
Si quelqu'un à une suggestion...merci d'avance.
F. Gondard
OK, çà marche.
Toutefois, pour la protection, ce n'est pas ce que je recherche. La protection du classeur contenant les modules n'empêche pas le code d'être visible et modifiable dans n'importe quel classeur lamda dès que la macro est installée. Ce que précisément je cherche à éviter. Mais j'ai peut-être raté un épisode !
Merci pour tous ces conseils.
OK, çà marche.
Toutefois, pour la protection, ce n'est pas ce que je recherche. La
protection du classeur contenant les modules n'empêche pas le code d'être
visible et modifiable dans n'importe quel classeur lamda dès que la macro
est installée. Ce que précisément je cherche à éviter. Mais j'ai peut-être
raté un épisode !
Toutefois, pour la protection, ce n'est pas ce que je recherche. La protection du classeur contenant les modules n'empêche pas le code d'être visible et modifiable dans n'importe quel classeur lamda dès que la macro est installée. Ce que précisément je cherche à éviter. Mais j'ai peut-être raté un épisode !
Merci pour tous ces conseils.
Frédéric Sigonneau
Bonsoir,
J'ai du mal m'expliquer...ou pas assez détailler. Ce n'est pas le classeur qu'il faut protéger pour que les macros soient (un peu) protégées des regards indésirables, c'est le projet Visual Basic (VBAProject). Renommer le projet, saisir un mot de passe et le confirmer dans l'onglet Protection de la boite de dialogue affichée par un clic droit sur le VBAProject et clic gauche sur la commande Propriétés de VBAProject, dans ce même onglet cocher Verrouiller le projet pour l'affichage, enregistrer la macro complémentaire. Ensuite il faut la désinstaller puis la réinstaller pour que la protection prenne effet. A la réinstallation, si tu cliques sur le projet pour en voir les modules (dans le Visual Basic Editor) une boite de dialogue va te demander le mot de passe.
FS -- Frédéric Sigonneau [MVP Excel - né un sans-culottide] Gestions de temps, VBA pour Excel : http://perso.wanadoo.fr/frederic.sigonneau Si votre question sur Excel est urgente, évitez ma bal !
OK, çà marche.
Toutefois, pour la protection, ce n'est pas ce que je recherche. La protection du classeur contenant les modules n'empêche pas le code d'être visible et modifiable dans n'importe quel classeur lamda dès que la macro est installée. Ce que précisément je cherche à éviter. Mais j'ai peut-être raté un épisode !
Merci pour tous ces conseils.
Bonsoir,
J'ai du mal m'expliquer...ou pas assez détailler.
Ce n'est pas le classeur qu'il faut protéger pour que les macros soient (un peu)
protégées des regards indésirables, c'est le projet Visual Basic (VBAProject).
Renommer le projet, saisir un mot de passe et le confirmer dans l'onglet
Protection de la boite de dialogue affichée par un clic droit sur le VBAProject
et clic gauche sur la commande Propriétés de VBAProject, dans ce même onglet
cocher Verrouiller le projet pour l'affichage, enregistrer la macro
complémentaire. Ensuite il faut la désinstaller puis la réinstaller pour que la
protection prenne effet. A la réinstallation, si tu cliques sur le projet pour
en voir les modules (dans le Visual Basic Editor) une boite de dialogue va te
demander le mot de passe.
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !
OK, çà marche.
Toutefois, pour la protection, ce n'est pas ce que je recherche. La
protection du classeur contenant les modules n'empêche pas le code d'être
visible et modifiable dans n'importe quel classeur lamda dès que la macro
est installée. Ce que précisément je cherche à éviter. Mais j'ai peut-être
raté un épisode !
J'ai du mal m'expliquer...ou pas assez détailler. Ce n'est pas le classeur qu'il faut protéger pour que les macros soient (un peu) protégées des regards indésirables, c'est le projet Visual Basic (VBAProject). Renommer le projet, saisir un mot de passe et le confirmer dans l'onglet Protection de la boite de dialogue affichée par un clic droit sur le VBAProject et clic gauche sur la commande Propriétés de VBAProject, dans ce même onglet cocher Verrouiller le projet pour l'affichage, enregistrer la macro complémentaire. Ensuite il faut la désinstaller puis la réinstaller pour que la protection prenne effet. A la réinstallation, si tu cliques sur le projet pour en voir les modules (dans le Visual Basic Editor) une boite de dialogue va te demander le mot de passe.
FS -- Frédéric Sigonneau [MVP Excel - né un sans-culottide] Gestions de temps, VBA pour Excel : http://perso.wanadoo.fr/frederic.sigonneau Si votre question sur Excel est urgente, évitez ma bal !
OK, çà marche.
Toutefois, pour la protection, ce n'est pas ce que je recherche. La protection du classeur contenant les modules n'empêche pas le code d'être visible et modifiable dans n'importe quel classeur lamda dès que la macro est installée. Ce que précisément je cherche à éviter. Mais j'ai peut-être raté un épisode !
Merci pour tous ces conseils.
F. Gondard
Bonsoir,
Si si, j'avais bien compris qu'il s'agissait du projet, renommé ou non, mais je n'avais pas respecté l'ordre des manips (protection puis installation). Grand merci donc à Frédéric pour sa mise au point.
Cependant, mes tests successifs ont engendré des dégâts collatéraux et j'ai des entrées indésirables dans la liste des macros complémentaires (installées ou non). Comment faire pour les supprimer puisqu'il n'y a pas de méthode remove pour la collection addins ?
J'ai trouvé ailleurs un script signé Laurent Longres mais qui n'a aucun effet (même après correction de sa proc). Je ne vois rien non plus dans la BdR (faut-il chercher en hexa ?).
Toute solution est donc la bienvenue.
Merci d'avance.
F.G.
Bonsoir,
Si si, j'avais bien compris qu'il s'agissait du projet, renommé ou non, mais
je n'avais pas respecté l'ordre des manips (protection puis installation).
Grand merci donc à Frédéric pour sa mise au point.
Cependant, mes tests successifs ont engendré des dégâts collatéraux et j'ai
des entrées indésirables dans la liste des macros complémentaires
(installées ou non). Comment faire pour les supprimer puisqu'il n'y a pas de
méthode remove pour la collection addins ?
J'ai trouvé ailleurs un script signé Laurent Longres mais qui n'a aucun
effet (même après correction de sa proc). Je ne vois rien non plus dans la
BdR (faut-il chercher en hexa ?).
Si si, j'avais bien compris qu'il s'agissait du projet, renommé ou non, mais je n'avais pas respecté l'ordre des manips (protection puis installation). Grand merci donc à Frédéric pour sa mise au point.
Cependant, mes tests successifs ont engendré des dégâts collatéraux et j'ai des entrées indésirables dans la liste des macros complémentaires (installées ou non). Comment faire pour les supprimer puisqu'il n'y a pas de méthode remove pour la collection addins ?
J'ai trouvé ailleurs un script signé Laurent Longres mais qui n'a aucun effet (même après correction de sa proc). Je ne vois rien non plus dans la BdR (faut-il chercher en hexa ?).