Créer une macro globale

Fermé
SunIsShining - 28 juil. 2017 à 08:27
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 - 28 juil. 2017 à 14:14
Bonjour,

J'aimerai créer une macro dans un module mais qui sois à portée globale. C'est à dire que je la créé dans un moduleA mais que je puisse l'apeller de n'importe quel module. Voici ma macro :

Public Sub afficher(nomSignet As String)
ActiveDocument.Bookmarks(nomSignet).Range.Font.Hidden = False
End Sub

J'ai des macros dans un moduleB de ce type :

Sub afficher_bonjour()
afficher("bonjour")
End Sub

Mais le programme ne reconnait pas "afficher" dans ce module (pourtant je l'ai mis en public ^^). Même dans un formulaire, lorsque j'apelle la macro afficher elle n'est pas trouvée. Pourtant quand je créé une donnée en Public (par exemple une constante) je peux bien la rapeller dans d'autres modules.

Peut-être faut-il placer ma fonction "afficher" ailleurs pour la rendre globale ?

Pourriez-vous m'aider s'il vous plaît ^^, ?

A voir également:

1 réponse

eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
28 juil. 2017 à 09:26
Bonjour,

la mettre dans un module standard ('insérer / module').
eric
0
SunIsShining
28 juil. 2017 à 12:08
Bonjour eriiic, Pourtant, ma fonction "afficher" est bien dans un module que j'ai créé de cette manière.Je l'ai mise dans le moduleA mais elle n'est pas disponible dans le moduleB. Est-ce normal ?
0
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
28 juil. 2017 à 12:45
Tu as fait en pas à pas pour affirmer qu'elle n'est pas appelée ?
Et tu restes dans le même document ?
0
SunIsShining
28 juil. 2017 à 13:58
Je reste dans le même document. Quand je suis dans le moduleA (qui contient ma fonction (Public Sub afficher(nomSignet As String)
ActiveDocument.Bookmarks(nomSignet).Range.Font.Hidden = False
End Sub )
et bien si je créé une macro dans moduleA et que j'écrit afficher(" , ça me suggère directement de rentrer nomSignet. Tandis que si je le fais dans moduleB, en écrivant afficher(" il n'y a aucune suggestion, donc la fonction n'est pas reconnue. J'ai quand même essayé d'écrire dans moduleB une macro :
Sub afficher_nom()
afficher("nom")
End Sub

Mais ça ne marche pas, la fonction "afficher" n'est pas trouvée.
0
eriiic Messages postés 24600 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 21 octobre 2024 7 239
28 juil. 2017 à 14:14
il n'y a aucune suggestion, donc la fonction n'est pas reconnue.
Il n'y a qu'en pas à pas (F8) ou bien en mettant un Stop en début de la 2nde macro que tu peux affirmer cela.
mais je ne vois pas pourquoi ActiveDocument.Bookmarks(nomSignet).Range.Font.Hidden = False t'ouvrerai une boite de dialogue pour le créer. Bon, je ne connais pas bien vba word, admettons
Soit le signet est existant et il fait, soit il n'existe pas et j'imagine plus une erreur vba.
Tu devrais déposer ton fichier (cjoint.com), et une lecture pour toi :
https://www.commentcamarche.net/contents/1381-debogage
0