Erreur lancement d'un fichier Excel Objet dans un doc Word

Bonjour à tous,

Je fais face à un problème dont je n'ai trouvé aucune solution sur aucun forum. Ni même de problème similaires ayant déjà été évoqués. C'est un problème assez technique à expliquer, je vais tenter de l'expliquer dans le détail.

Je possède un fichier Excel avec de nombreuses macros à l'intérieur, dont des macros qui s'exécutent lors de l'ouverture du fichier (comme des macros de protection / déprotection des feuilles du fichier etc...).

Ce fichier est entièrement fonctionnel. En effet, je l'utilise en permanence sans avoir d'erreurs.

Maintenant, je dois créer un rapport Word dans lequel je vais insérer ce fichier Excel, afin de le diffuser à d'autres personnes. Pour cela, j'utilise la fonction d'insertion d'objets (Insertion / Objet / Créer à partir du fichier / et je viens sélectionner mon fichier Excel (sans faire "Lier au fichier")).

Une fois mon fichier Excel insérer sous forme d'objet dans mon Word, je double clique sur mon icone pour ouvrir mon fichier Excel. Lors de l'ouverture de l'Excel, j'ai des erreurs qui apparaissent, m'indiquant que des objets ne sont pas définis.

Je me suis rendu compte que ce sont les fonctions qui font références aux objets "Actifs" qui ne sont pas fonctionnelles. En effet lors de l'ouverture de mon Excel, j'exécute des procédure utilisant des fonctions comme ActiveSheet ou ActiveWorkbook. J'ai vu que lorsqu'on exécute un fichier Excel via un objet Word, l'Excel est considéré comme "Passif" lors du démarrage, ainsi j'aurais ActiveSheet = Nothing et ActiveWorkbook = Nothing, d'où les erreurs qui apparaissent.

Ainsi ma première question serait : Est-il possible de rendre mon fichier Excel actif lors de son exécution afin d'utiliser les fonctions ActiveSheet ou ActiveWorkbook ?

Néanmoins, j'ai réussi à contourner le problème en utilisant la fonction ThisWorkbook au lieu de ActiveWorkbook et en faisant référence à une feuille en particulier au lieu d'utiliser ActiveSheet. (Mais ce n'est pas la solution que j'aimerais garder)

Ce premier problème ayant été contourné, je décide de ressayer de lancer mon fichier Excel à partir de l'objet insérer dans mon Word. Cependant, une nouvelle erreur apparait. (Voit capture d'écran ci-dessous)

erreur execution

Je n'arrive pas contourner cette erreur. J'ai pu lire sur certains sujets sur des forums que cette erreur peut apparaitre lorsqu'un fichier Excel est ouvert en parallèle. Or, dans mon cas, j'ai bien fait attention à ce qu'aucun fichier Excel ne soit ouvert en fond. J'ai aucune idée pour savoir d'où vient l'erreur.

D'où ma seconde question : Savez-vous d'où peut provenir cette erreur ? Comment la résoudre ?

J'espère avoir bien expliqué les problèmes auxquels je fais face.

Par avance, merci pour votre aide.

Cordialement,

Bonjour,

Ce serait bien de connaître le code qui lance Excel.

Sinon, pour le problème de noms d'onglet, vous pourriez créer des variables Worksheet (Public) dans un module standard et les instancier à l'ouverture de votre fichier, puis les supprimer à la fermeture. Il suffira ensuite de faire référence à ces variables dans votre code.

Bonjour Eric,

Justement, il n'y a aucun code qui lance le fichier Excel. Je le lance depuis mon fichier Word en double cliquant sur le logo Excel associé à mon fichier Excel (sous forme d'objet).

Concernant le nom de mes onglets, je sais déjà comment faire référence à ces noms d'onglets afin de les sélectionner. Ma question concernait plus l'utilisation des fonctions faisant référence à des objets actifs comme ActiveSheet ou ActiveWorksheet, qui ne marchent plus dans mon cas.

Cdlt

Dans votre fichier Excel, vous pourriez déclarer vos variables Worksheet en tant que constantes et faire appel directement à elles dans votre code pour ne plus utiliser ActiveSheet, etc...

Oui, oui, c'est ce que je fais dans mon l'entièreté de mon code. Mais à des moment je n'ai pas d'autres choix que d'utiliser la fonction ActiveSheet, parce que j'ai des procédures adaptative qui s'adapte à la feuille sur laquelle l'utilisateur se trouve.

Concernant ce problème, comme je l'ai indiqué dans mon premier message, ce n'ai pas très grave car j'ai réussi à le contourner. Cependant, auriez vous des solutions ou des pistes concernant mon second problème ?

Désolé, je n'ai jamais été confronté au problème.

Pour la diffusion de mes outils, j'envoie directement le guide utilisateur et le fichier à mes interlocuteurs ou bien je crée un dossier dans Google Drive et je communique le lien avec restriction.

Bon courage.

D'accord, merci beaucoup pour votre aide.

Malheureusement je suis obligé de suivre ce mode opératoire si je veux diffuser ce fichier.

J'espère que quelqu'un aura déjà rencontré ce problème ou alors saura d'où peut venir l'erreur.

Bonne journée,

Avez-vous la possibilité de modéliser un exemple très limité qui reproduirait votre problème sans données confidentielles pour voir ce que nous pourrions faire ?

Je viens de créer des fichier avec le strict nécessaire qui reproduisent les mêmes erreurs.

Dans le fichier Excel "Excel Test Erreur", il y a uniquement une procédure qui va parcourir les feuilles pour les protéger une par une lors de l'ouverture de l'Excel.

Ce fichier est parfaitement fonctionnel lorsqu'on l'ouvre tout seul directement.

Mais, dès qu'on l'ouvre à partir de l'objet créé dans le fichier Word (Voir le Word "Word Test Erreur"), l'erreur que j'ai mit en capture d'écran apparait.

PS: Le premier bloc de code qui se trouve dans ma procédure, fait apparaitre les erreurs dont je parle, et qui empêchent l'utilisation de fonction faisant références à des objets actifs. Mais, mon gros problème, est l'erreur qui apparait lors de l'utilisation du bloc 2, et qui fait apparaitre l'erreur que j'ai mise en capture d'écran.

En double cliquant sur le fichier Excel dans Word, j'ai déjà ce message :

capture

J'essaie de régler mon problème pour continuer.

Moi aussi, j'ai ce pop-up qui apparait, mais c'est normal sur un fichier Excel qui possède des macros.

Par contre, personnellement, j'ai la possibilité d'activer les macros pour continuer à utiliser le fichier. Et ensuite j'ai l'erreur qui apparait.

capture

Bien que mes réglages sécurité acceptent les macros, je n'ai pas la possibilité de débloquer les macros comme dans votre vidage d'écran. Je n'ai donc pu reproduire l'incident.

J'ai essayé également de déposer le fichier par une macro word dans un répertoire, mais rien y fait.

Dans votre procédure de diffusion, pourquoi ne pas ziper ensemble les fichiers Word et Excel ?

Dans mon fichier Word, j'ai juste insérer mon fichier Excel sous forme d'objet : Insertion / Objet / Créer à partir du fichier / Je choisis mon fichier Excel. Peut être que si vous insérez le fichier Excel que j'ai envoyé dans un Word que vous avez vous même créé ca marcherait ? Est-ce que vous arrivez quand même à ouvrir le fichier Excel que j'ai envoyé ? Si non, je peux insérer directement le code dans ma prochaine réponse.

J'aimerais bien changer le process de diffusion ca simplifierait tellement les choses !

Malheureusement, ce n'est pas moi qui choisit et je dois respecter les process qui ont été élaborés, sinon ça passe pas.

A l'apparition du message, si je désactive les macros, le fichier s'ouvre, mais il faut que je le sauvegarde comme un fichier vierge. Et si je le ferme et le rouvre, la macro à l'ouverture fonctionne.

D'accord, très bizarre. Encore un problème qui apparait à cause de l'ouverture via l'objet créé sur Word...

J'utilise beaucoup de macros complémentaires avec mes clients. Avec l'un d'entre eux, j'ai dû mettre en place un certificat d'auto signature numérique. Ci-joint le fichier d'explication de Microsoft.

Je n'ai pas regardé si cela pouvait fonctionner avec.

Je ne suis pas sur d'avoir compris le lien avec le problème dont on parle ?

Logiquement le certificat permet de passer l'étape de blocage des macros.

Bonjour Eric,

Merci pour ta proposition ! Malheureusement je n'arrive pas à utiliser le certificat pour surpasser mon problème.

Rechercher des sujets similaires à "erreur lancement fichier objet doc word"