Activer un document word (VBA ?)

Fermé
Bigbisou - 19 juil. 2017 à 14:39
 victor - 25 juil. 2017 à 16:10
Bonjour,

J'aimerai utiliser du contenu d'un document word a dans un autre document word b. Le seul problème que je rencontre, c'est qu'il faut que le document word a soit activé. Un des moyens que j'ai trouvé c'est d'ouvrir a en vba à partir d'une macro dans b, mais j'aimerai trouver un moyen plus simple de pouvoir activer a à partir de b. Est-ce possible ?

Passez une agréable journée !


A voir également:

8 réponses

m@rina Messages postés 20070 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 24 avril 2024 11 271
19 juil. 2017 à 15:35
Bonjour

Peux tu être plus explicite ? De quelle manière veux tu utiliser le contenu du doc A ?

m@rina
0
Bonjour !

Je voudrai par exemple pouvoir utiliser les Quickparts du document A, ou ses macros, ou autres ^^
0
m@rina Messages postés 20070 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 24 avril 2024 11 271
19 juil. 2017 à 16:27
Je n'ai pas demandé ce que tu veux utiliser, mais de quelle manière ??
Sinon, il suffit de faire des copier coller !
0
m@rina Messages postés 20070 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 24 avril 2024 11 271
22 juil. 2017 à 17:24
Je ne comprends pas ta demande. A la création de quelle copie ?
D'une manière générale, Word n'offre que très peu de macros événementielles. Les principales se déclenchent à la création d'un nouveau document ou à l'ouverture d'un document.

m@rina
0
J'ai cependant un petit problème : si j'arrive à accéder aux macros du document Word contenant les macros à partager, je n'arrive pas à accéder à ses fonctions, savez-vous comment faire ?
0
Imaginons que mon docA possède des macros d'insertion de blocks de construction. Je souhaiterai disposer de ces macros dans tous mes autres documents. Comme ça j'aurai juste à mettre à jour docA pour mettre à jour toutes mes macros dans chacun des autres documents, sans passer par des copiers/collers. Je ne souhaite pas placer mes macros dans Normal ou mes blocs en local, mais bien les placer dans mon docA.
0
m@rina Messages postés 20070 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 24 avril 2024 11 271
20 juil. 2017 à 15:13
C'est plus clair ! ;)

Alors, tout d'abord les blocs de construction ne peuvent s'enregistrer que dans un modèle. Donc, si ton document A n'est pas un modèle, déjà ce n'est pas possible.

Ensuite, si les blocs sont enregistrés dans un modèle quelconque, ils ne seront accessibles que pour les documents basés sur ce modèle.

Si tu veux accéder à des blocs de construction depuis n'importe quel document, ces blocs devront être enregistrés soit dans le normal.dotm (déconseillé), soit dans un modèle stocké dans le dossier Document Building Blocks. A noter que tu n'es pas obligé d'utiliser le fichier building blocks.dotx existant, que tu peux en créer d'autres que tu pourrais par exemple partager avec d'autres utilisateurs sans qu'ils écrasent leurs propres blocs.

Concernant les macros, c'est un peu différent. Ces dernières sont stockées où on le souhaite. Néanmoins pour des macros qui doivent pouvoir être accessibles depuis n'importe quel document, elles doivent se trouver soit dans le normal.dotm (déconseillé) soit dans un modèle quelconque stocké dans le dossier Startup de Word.

m@rina

ps : quand je dis "déconseillé" pour le normal.dotm, c'est surtout si on a beaucoup de blocs ou de macros. Si on a évidemment qu'une seule petite macro, pourquoi pas.
0
merci bcp ! J'ai une autre petite question : Si je veux que mes macros (placées dans un modèle) ne soient pas accessibles à tous mes documents, mais seulement à des modèles ciblés, est-ce possible ? Car jai limpression que cest soit tous les documents soit un document particulier mais impossible dattacher un modèle à un modèle. En gros je veux que certains modèles partagent leurs macros.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
m@rina Messages postés 20070 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 24 avril 2024 11 271
Modifié le 22 juil. 2017 à 02:25
Effectivement, c'est soit on accède aux macros du modèle attaché au document, soit on accède à toutes les macros si elles sont dans le normal.dotm ou dans le dossier startup.

Maintenant, pour ces macros, on peut vérifier quel modèle est utilisé pour le document en cours, et n'autoriser l'exécution de la macro que pour les modèles souhaités.
0
Est-ce qu'il ne serait pas envisageable de créer la macro suivante qui se lance a la creation dune copie :
ActiveDocument.AttachedTemplate = "chemin"

Merci m@rina et bon week end
0
En gros : Jai un modèle Word contenant les macros (a partager). Jai 4 autres modèles Word qui doivent utiliser ces macros. Mais je ne veux pas que ces macros apparaissent sur chaque document Word. Alors jai juste a mettre avec evenement document_open le code AttachedTemplate dans mes 4 modèles pour pouvoir accèder aux macros.
0
Après plusieurs tests, je me suis rendu compte que AttachedTemplate remplace le template du coup je perd les macros propres au template de base. Cependant, je crois avoir trouvé une solution bien meilleure qui conserve les macros du modèle de base et ajoute les macros du Modèle word contenant les macros à partager entre plusieurs documents. Voici le code trouvé : AddIns.Add FileName:="chemin du modèle contenant les macros à partager"
0
m@rina Messages postés 20070 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 24 avril 2024 11 271
24 juil. 2017 à 23:51
Je ne comprends pas pourquoi tu ne veux pas créer simplement une macro complémentaire, à savoir un document qui contient toutes ces macros et qui se chargent via le dossier Startup et qui seront donc disponibles depuis les autres documents.

m@rina
0
Et bien il faut modifier le dossier startup sur chaque ordinateur (mes docs sont sur le réseau), et il y a vraiment beaucoup d'ordis. De plus lorsque j'ai essayé de faire cela les macros étaient alors dispos sur chaque nouveau document word (et je veux éviter cela, je veux que ces macros n'apparaissent que si cest un des modèles concernés).

Là tout fonctionne comme je veux à une chose près : J'ai les macros qui sont désormais disponibles dans un TemplateProject appelé Blocks_de_construction_macros.dotm, dans le module Module1. J'arrive à lancer les macros manuellement, mais lorsque j'essaye par VBA ça ne fonctionne pas. Par exemple j'ai une macro qui s'appelle afficher_masquer et qui contient un argument (String). J'ai essayé le code suivant mais en vain : Application.Run "'Blocks_de_construction_macros.dotm'!afficher_masquer", "monArgument"
ça me met : Propriété ou méthode non gérée.
Pensez-vous avoir une solution à cela ? :S en tout cas merci beaucoup !
0
m@rina Messages postés 20070 Date d'inscription mardi 12 juin 2007 Statut Contributeur Dernière intervention 24 avril 2024 11 271
25 juil. 2017 à 01:49
Quand je veux appeler une macro située dans un autre modèle, tu dois commencer par référencer ce modèle. Pour cela tu vas dans le VBE et tu vas donner un nom à ce modèle (sinon ils s'appellent tous Project et c'est pas facile à retrouver) : tu fais un clic droit sur le nom du modèle "Blocks_de_..." et tu choisis Proriétés. Dans la boîte de dialogue, tu donnes un nom au projet (Toto par exemple), et OK.

Ensuite, toujours dans le VBE, tu sélectionnes à gauche le document dans lequel tu veux appeler la macro. Puis dans le menu Outils, tu choisis Références, et tu coches le projet que tu viens de nommer (Toto dans mon exemple).

C'est la condition pour que le code qui appelle la macro fonctionne.
Pour le code, tu peux simplement utiliser un Call ou un Application.Run et tu verras qu'après avoir tapé le nom du projet (toto), Word te proposera automatiquement les noms des modules, puis les noms des macros.

Tu devrais avoir ceci :
Call toto.NomModule.NomMacro

ou
Application.Run macroname:="toto.NomModule.NomMacro", "argument"


m@rina
0
Merci bcp m@rina. Cependant j'ai deux problèmes :

Premier problème : J'ai renommé le modèle Toto comme tu me l'as dit. Cependant, lorsque je l'ajoute (je le coche dans Références) dans un modèle Word qu'on apellera modèleA, il ne s'ajoute qu'à l'ouverture du modèle (clique droit + ouvrir) mais il faut le recocher quand on ouvre une instance de modèleA (créée par double click).

Deuxième problème : j'arrive à appeler une macro sans paramètre, par exemple, dans Toto.NewMacros la macro suivante :
Sub afficher()
MsgBox("coucou")
End Sub
Je l’appelle de la manière suivante :
Application.Run"Toto.NewMacros.afficher"

Par contre, si je créé la macro avec paramètre suivante, ça ne marche plus :
Sub afficher(nom as String)
MsgBox(nom)
End Sub

J'essaye de l'apeller de la manière suivante dans une instance du modèleA:
Application.Run"Toto.NewMacros.afficher","coucou"
ça me met : "Propriété ou méthode non gérée par cet objet"

Je pense qu'il doit y avoir une petite erreur dans ce que j'ai fais, sauriez-vous me dire laquelle ?
Je vous souhaite une agréable journée.
0
 
Bonjour Bigbisou,

Pour ton 1er problème, je laisse m@rina te répondre ; pour ton 2ème problème,
il me semble qu'il faut juste taper un espace après .Run :

Application.Run "Toto.NewMacros.afficher", "coucou"

L'espace après la virgule est juste pour améliorer la lisibilité.

Cordialement
 
0