Problème Macro entre Excel et Word
Résolunicodu072 Messages postés 46 Statut Membre -
Après plusieurs questions posées sur le forum, et dont les réponses m'ont été très utiles, je me tourne à nouveau vers CCM pour un autre point à éclaircir :
J'ai un environnement de travail qui lie deux classeurs, en l'ouvrant je tombe sur le classeur [Nomenclature] qui est lié au classeur [Liste des Fournisseurs].
Sur la feuille Liste Matériel Aéraulique du classeur [Nomenclature], il y a un bouton qui me permet d'ouvrir un fichier Word afin de créer un publipostage automatique à l'aide d'un VBA.
Mon problème est le suivant : lorsque je test le VBA sous Word, il fonctionne parfaitement, mais lorsque je l'utilise par le bouton Excel, une erreur s'affiche et donc cela ne fonctionne pas.
Pour visualiser le fonctionnement, je pense qu'il faut d'abord regarder le programme du fichier Word (pour info, pour ouvrir le fichier word, maintenir Maj enfoncé car il y a une fermeture auto), puis essayer le bouton excel après.
Merci de votre aide.
Liste des fichiers : https://www.cjoint.com/?BHom5aYnbaD
- Problème Macro entre Excel et Word
- Word et excel gratuit - Guide
- Word 2013 - Télécharger - Traitement de texte
- Telecharger macro convertir chiffre en lettre excel - Télécharger - Tableur
- Tableau word - Guide
- Liste déroulante excel - Guide
51 réponses
Le problème porte sur l’exécution d’un publipostage Word piloté par un bouton dans le classeur Liste Matériel Aéraulique, qui fonctionne lorsque le VBA est lancé directement dans Word mais échoue lorsqu’il est déclenché depuis Excel. Les réponses soulignent l’importance de vérifier les références VBA, notamment la Microsoft Word xx.0 Object Library et la gestion des extensions macro-enabled, afin d’assurer la communication entre les deux applications. Plusieurs propositions consistent à récupérer le module VBA concerné et à réaffecter les macros aux boutons dans le classeur, tout en ajustant les noms des procédures et les références utilisées (docpub, nomfeuil) pour assurer la cohérence entre les boutons et les feuilles. Des remarques additionnelles évoquent des disparités possibles entre environnements Windows et recommandent d’optimiser les flux de publipostage et les boutons associés.
Dans ce cas une nouvelle mise à disposition du fichier n'y changera rien. Il faut mettre un point d'arrêt dans la procédure [Publipostage(nompubli, nombase, feuilbase, chemin)] au niveau de [DocWord.Close False] pour voir ce qui se passe dans le document Word.
J'ai réalisé le point d'arrêt comme vous me l'avez demander. Tout ce passe bien jusqu'à la sélection de destinataire dans le publipostage qui reste sur les références RAx (voir vidéo): https://www.cjoint.com/?BHtnAc7DtW7
J'ai donc réaliser un point d'arrêt sur l'ancien fichier (de fin de semaine sans le publipostagesansdoublon) pour voir ce qui se passait et la la mise à jour de destinataire s'effectue correctement : https://www.cjoint.com/?BHtnEqWahX7
Pour essayer, j'ai pris l'ancien document Word, ou la procédure fonctionnait, et je l'ai mis à la place du nouveau. Rien ne change, la mise à jour ne s'effectue pas non plus.
Donc, on sait déjà que cela ne provient pas du fichier Word.
Maintenant pourquoi cela fonctionne chez vous et pas chez moi !
J'ai essayé sur un ordinateur fonctionnant sous SEVEN comme vous me semble-t-il) et cela fonctionne parfaitement.
Je l'ai enregistrer et renvoyé sur mon PC (Vista) et la rebellote. Mais cette fois ci la référence reste sur Hx, qui est le dernier publipostage lancé avant enregistrement sur l'autre PC.
Le problème proviendrait donc du système d'exploitation et peut-être de la partie publipostagesansdoublon ? Bizarre !
Merci pour les informations.
En tout cas pas de partie [publipostagesansdoublon], je pense plutôt à une information manquante dans le code... !
Est-ce que [ sous SEVEN] la version MSO est 2007 ou 2010 ?
Pour l'instant je n'ai rien trouvé.
Patience car demain je vais tester sur un autre PC avec MSO 2007 et peut être je trouverai la clef du problème.
Salutations.
Le Pingou
Alors sous SEVEN, la version utilisée est MSO 2007. Dans ce cas, cela voudrait dire qu'il manque une information dans le code pour fonctionner sous Vista ?
Comment cela est-ce possible ? Car nul part vous ne faite référence à un système d'exploitation.
Cordialement.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre questionEh bien, mon test avec PC sous Windows Vista et MSO2007 a révélé les mêmes problèmes que vous avez constatés. Il semble que sous Vista l'UAC s'emmêle ?
Pour l'instant je n'ai pas trouvé le pourquoi et de ce fait la correction.
Je ne désespère pas de trouver.... !
Cela me rassure. Ne vous en faite pas pour cela, tout du moins n'y passé pas trop de temps pour moi, car j'ai testé au bureau et cela fonctionne sur mon PC étant sous Seven.
Je ne pourrais simplement pas l'utiliser sur mon PC perso.
Cependant merci de votre aide.
J'améliore encore le fichier. Si cela vous intéresse, je vous le joint quand j'aurai terminé pour avoir l'avis de l'expert ;-)..
Bonne soirée.
Cordialement
Félicitation !
Le fichier fonctionne parfaitement bien. Je n'ai pas pris le temps de tout comprendre au code mais j'ai remarqué que vous aviez modifié le type de variable, spécifier plus en détail l'ouverture de la base de donnée et créé l'enregistrement automatique des fichiers dans le répertoire en fonction d'un nom prédéfini.
Encore merci pour votre aide.
Cordialement.
Content de savoir que c'est bon chez vous.
En fait comme toujours lorsque plus rien ne vas j'écris le code une nouvelle fois sans tenir compte de l'existant, c'est le pourquoi vous voyez une autre manière d'écriture. Mais le problème avec Windows Vista est qu'il ne comprend pas les changements dans le fichier source (Excel) si l'on ne les a pas enregistrés (au contraire de Windows 7). En marge si vous essayez la version avec les 3 feuilles de liens vous constaterez que si vous modifiez les données dans un des tableaux [Listes...], les documents Word seront faux.
Concernant : l'enregistrement automatique des fichiers dans le répertoire en fonction d'un nom prédéfini c'est dans le but de pouvoir contrôler le résultat obtenu en rapport avec la demande de départ (qui va avec qui).