XL 2013 Liaisons Word / Excel : quelle solution retenir et comment la mettre en œuvre

LMOAL

XLDnaute Nouveau
Bonjour,
je me permets de remonter cette conversation qui m'intéresse.

J'ai également travaillé ces liaisons word-excel mais je rencontre quelques difficultés qui me posent question.
J'ai un document word "type" qui fait appel à de nombreuses autres références que, pour des raisons de praticité et d'automatisation, je renseigne dans une feuille excel.

Je procède aujourd'hui par la fonction "collage spécial", "coller avec liaison / sans mise en forme". La méthode que j'ai utilisée est celle d'un fichier excel "source" et d'une macro word qui vient changer le chemin d'accès à ce fichier excel pour récupérer les données via une boite d'appel.

ex :

LINK Excel.Sheet.12 "D:\\Prépa\\RAPPORT\\Fichiers source définitifs\\CADRE à remplir.xlsx" "Cadre AG!L1C2" \a \f 5 \h \* MERGEFORMAT

Remplacé par
LINK Excel.Sheet.12 "C:\\DOCUMENTS\\CADRE rempli.xlsx" "Cadre AG!L1C2" \a \f 5 \h \* MERGEFORMAT

Globalement, cela fonctionne... mais lorsque je déplace les fichiers c'est parfois aléatoire et peu satisfaisant et, une fois mon chemin remplacé, tel que j'ai écrit ma macro, je ne peux plus le changer... ce qui est dommage, plus des soucis liés au format.

Je voudrais donc :
1) Remplir un fichier excel avec mes différentes données et informations qui seront reprises dans un fichier word "standard" (plus d'une 100aine de variables : ex. Nom du dossier, adresse, dates, décisions...)
2) A l'entrée dans word, je souhaite pouvoir actualiser mon chemin "à loisir" afin d'intégrer ces données dans le texte "standard" et mettre à jour mon fichier.
3) Enregistrer le word sous sa forme définitive.

J'ai plusieurs interrogations : la méthode "collage spécial" est-elle la plus adaptée ? Ne devrais-je pas partir sur des signets comme évoqué ci-dessus ? Une définition de cellules sous excel ? Quelle méthode me permettrait de conserver l'objectif poursuivi ? Le copier-coller a été fastidieux mais je suis prêt à recommencer si je peux améliorer le tout.

J'ai testé un fichier "modèle" mais c'était lourd, j'ai donc opté pour un .docm et pour ne pas écraser le fichier source, je viens proposer d'enregistrer directement après le choix du chemin... c'est fonctionnel mais pas idéal.

D'avance merci pour vos avis
 

LMOAL

XLDnaute Nouveau
Re

@LMOAL
Pourquoi "différents fichiers EXCEL"
Pourquoi toutes les données ne sont pas dans un seul et même fichier EXCEL ?
(qui fera office de base de données)

Je ne sais plus quoi penser.

Je laisse @laurent950 reprendre la main.
Parce que je ne construis pas une base de donnée. Ce sont par exemple les éléments à mettre dans un PV d'AG avec des données issues de la comptabilité... J'ai un rapport par année et un rapport par structure : rapport 2022 de la société 1, rapport 2023 de la société 2... mais, hormis la "coque" de base, il n'y a pas de lien entre les sociétés...
 

LMOAL

XLDnaute Nouveau
Re

J'avais déjà fait ALT+F9
C'est d'ailleurs ce qui m'a poussé à tout de suite envisager le publipostage
Cela plus cet avertissement
Regarde la pièce jointe 1179529
OK, effectivement... l'avertissement provient du fait que "par défaut" mes signets sont redirigés vers un fichier excel initial... par exemple : c\Fichier source... et je viens dire, le chemin est à modifier pour devenir d\fichier source par ma macro...
 

Staple1600

XLDnaute Barbatruc
Re

@LMOAL
Dans un cas pareil, puisque on parle de tiers avec un SIRET, moi je compilerais (par macro) les N fichiers
avec comme clé le SIRET
Au besoin, si les choses devaient se complexifier, j'utiliserai PowerQuery pour créer des tables
Une fois, toutes mes données dans ma base de données, je tenterai le publipostage
Mais ceci est une autre histoire

Et comme je l'ai déjà dit, je laisse la main à @laurent950 pour la piste VBA
Sub ModifierLiensFichierSourceExcel(ByVal control As IRibbonControl)

Aie...en plus on touche au Ruban, caramba! ;)
 

LMOAL

XLDnaute Nouveau
Voici un test pour les signets... à vérifier sous excel si le principe est bon.
Au final, on inverse ma démarche si je comprends bien.
 

Pièces jointes

  • Rapport OK 092023 - TEST.docm
    47.2 KB · Affichages: 7
  • CADRE PV ET RAPPORT à remplir.xlsx
    13 KB · Affichages: 6

Staple1600

XLDnaute Barbatruc
Re

@LMOAL
J'ai regardé les liens dans ton fichier Word
Sauf erreur, c'est toujours le même fichier et la même feuille
"C:\\Users\\712\\Desktop\\Fichiers source définitifs\\CADRE PV ET RAPPORT à remplir.xlsx" "Cadre AG!L15C2
Donc
CADRE PV ET RAPPORT à remplir.xlsx
et
Cadre AG

Si tu as N fichiers XL (avec la même structure) dans le dossier Fichiers source définitifs, pourquoi ne pas simplement réaliser un publipostage en VBA (avec une boucle qui changera de fichier)

Ca doit être réalisable, non ? (A confirmer/infirmer)
 

LMOAL

XLDnaute Nouveau
Re

@LMOAL
J'ai regardé les liens dans ton fichier Word
Sauf erreur, c'est toujours le même fichier et la même feuille
"C:\\Users\\712\\Desktop\\Fichiers source définitifs\\CADRE PV ET RAPPORT à remplir.xlsx" "Cadre AG!L15C2
Donc
CADRE PV ET RAPPORT à remplir.xlsx
et
Cadre AG

Si tu as N fichiers XL (avec la même structure) dans le dossier Fichiers source définitifs, pourquoi ne pas simplement réaliser un publipostage en VBA (avec une boucle qui changera de fichier)

Ca doit être réalisable, non ? (A confirmer/infirmer)
Ca me semble cohérent...
On a un fichier word à mettre à jour. On peut imaginer que chaque année, pour une société, je vienne prendre ma trame word et que je cherche à l'alimenter par le fichier excel de l'année en question. Pour une autre société, c'est le même principe.

Publipostage ou signets... j'ai l'impression que, dans tous les cas au vu de vos réactions, mes données devront se retrouver sur une deuxième feuille excel qui reprend les données de la première mais en les mettant "à l'horizontale". C'est l'idée que poursuit @laurent950 avec les signets.

Qu'entends-tu par publipostage en VBA ? C'est le publipostage classique ? Tu faisais allusion à mon ruban ; j'avais juste intégré mes macros de manière à ce qu'elle restent spécifiques à ce fichier word de base.

Le fichier word est toujours le même... les fichiers excel ont toujours la même structure et seront logés dans différents dossiers millésimés : ex : Société 1 / 2022 puis Société 1 / 2023 et Société 2 / 2022 puis Société 2 / 2023, etc. L'idée est d'enregistrer le fichier word mis à jour dans son dossier millésimé correspondant.

Au final, je veux juste simplifier la tâche à différents utilisateurs... dont moi !
 

laurent950

XLDnaute Barbatruc
Bonsoir @LMOAL , @Staple1600

Bonsoir LMOAL avant de passer au code VBA il faut bien comprendre le principe des Signets avec WORD, j'ai corrigé vos deux fichier sans Code VBA

Le titre de la ligne 1 d'Excel est le Titre du signet dans Word
Le VBA substituera le signet par la suite.

Je vous laisse ajouter des signets dans le documents Excel et Word.
Ensuite on passe au Code VBA

Vous Poster les deux fichiers pour voir avant de passer a la suite
de mon côté le code VBA fonctionne très bien
 

Pièces jointes

  • Rapport OK 092023 - TEST_Sans Code VBA.docm
    24.3 KB · Affichages: 4
  • CADRE PV ET RAPPORT à remplir_LMOAL.xlsx
    12.8 KB · Affichages: 4

Staple1600

XLDnaute Barbatruc
Re

Voilà un exemple du test que j'ai en réalisé VBA
Condition du test
3 fichiers XL en guise de base de données dans un dossier donnée
1 document Word (avec des champs de fusion et une macro qui gère le publipostage et créé les PDF)

Ci-dessous, ce que cela donne
RES_PUBLI_VBA.png
 

LMOAL

XLDnaute Nouveau
Bonsoir @LMOAL , @Staple1600

Bonsoir LMOAL avant de passer au code VBA il faut bien comprendre le principe des Signets avec WORD, j'ai corrigé vos deux fichier sans Code VBA

Le titre de la ligne 1 d'Excel est le Titre du signet dans Word
Le VBA substituera le signet par la suite.

Je vous laisse ajouter des signets dans le documents Excel et Word.
Ensuite on passe au Code VBA

Vous Poster les deux fichiers pour voir avant de passer a la suite
de mon côté le code VBA fonctionne très bien
Bonjour, voici un nouveau test...
D'avance merci !

PS Le pdf ne me convient pas vraiment, j'ai besoin de pouvoir modifier le document word après coup...mais ce n'est sans doute pas un problème. Par ailleurs, la compilation sou forme de base de données avec plusieurs lignes n'est pas satisfaisante : une ligne pourra être générée en janvier, donnant lieu à un word, une autre en septembre, etc...
 

Pièces jointes

  • Rapport OK 092023 - TEST_Sans Code VBA.docm
    34.6 KB · Affichages: 3
  • CADRE PV ET RAPPORT à remplir_LMOAL.xlsx
    13.4 KB · Affichages: 3

laurent950

XLDnaute Barbatruc
Bonsoir @LMOAL

J'ai examiné votre fichier Word, et il y a effectivement des progrès. Cependant, les signets ne sont pas tous remplis correctement, ce qui provoque des erreurs dans la procédure VBA que j'ai contournée avec une gestion d'erreur.

En d'autres termes, le document Word est partiellement rempli (Signets Manquants), et dont voici la liste des signets manquants dans Word :
Le signet 'HEUREREUNION' n'a pas été trouvé.
Le signet 'Dateconvocation' n'a pas été trouvé.
Le signet 'DateAGn-1' n'a pas été trouvé.
Le signet 'Secrétaire' n'a pas été trouvé.
Le signet 'RESULTAT1' n'a pas été trouvé.
Le signet 'RESULTAT2' n'a pas été trouvé.
Le signet 'RESULTAT3' n'a pas été trouvé.

Ces signets manquants ne seront jamais mis à jour dans votre document Word.

Voici la procédure : VBA

1 ) Créez un dossier
L'adresse que vous modifierez dans la macro du document Word (VBA).
Dans la macro pour que cela se vois bien !
Chemin = "C:NOUBLIER PAS DE CHANGER LE CHEMIN DE VOTRE DOSSIER ICI !!!!"

2 ) Copiez les deux fichiers (Excel et Word) dans ce dossier (Créer) .
Les fichiers sont :
CADRE PV ET RAPPORT à remplir_LMOAL.xlsx (Excel)
Rapport OK 092023 - TEST_Code VBA.docm (Word)

3 ) Excel servira de base de données avec sa feuille 'CADRE AG BASE',
Le document Word sera lui un modèle invariable (Ne pas l'enregistrer après la VBA).

4 ) Une fois la macro VBA lancée, elle créera un document Word avec l'extension .docx (sans macro).
Le nom du fichier est défini dans la macro VBA (A Vous de choisir le nom de votre fichier)
Le Troisième document créer sera celui la dans le dossier créer)
Ici l'exemple : 'DocumentWordFichier Test V0 - LMOAL.docx'.

N'oubliez pas de remplir correctement les signets dans Word et de vérifier.
Les erreurs générées lors de l'exécution de la macro (Sont Neutralisé avec On Error Resume Next) .
En résumé, le document Word sera rempli en fonction du contenu de votre travail et de votre précision !

Nota : J'ai peut-être une astuce pour automatiser la récupération des titres associés aux valeurs dans Excel (Votre fichier en Feuille 1 = Oui en Feuille 1) et simplifier ce travail fastidieux Via un code a créer.

Nota : Aussi pour établir une connexion avec Excel, n'oubliez pas de vous connecter avec le VBE (Visual Basic for Excel)."
Voici comment ce fait la connexion avec Excel ne pas oublié de faire la connexion avec le VBE
1695762164225.png


Si vous avez envie de poursuivre au plaisir de vous répondre

Laurent
 

Pièces jointes

  • CADRE PV ET RAPPORT à remplir_LMOAL.xlsx
    13.3 KB · Affichages: 6
  • Rapport OK 092023 - TEST_Code VBA.docm
    36.8 KB · Affichages: 7
Dernière édition:

Staple1600

XLDnaute Barbatruc
Bonsoir @laurent950
LMOAL à dit:
Le fichier word est toujours le même... les fichiers excel ont toujours la même structure et seront logés dans différents dossiers millésimés : ex : Société 1 / 2022 puis Société 1 / 2023 et Société 2 / 2022 puis Société 2 / 2023, etc. L'idée est d'enregistrer le fichier word mis à jour dans son dossier millésimé correspondant.
Moi j'ai compris qu'il y avait plusieurs fichiers Excel
et apparemment N dossier pour N fichiers

Comme faire pour gérer cela avec des liaisons ?
 

laurent950

XLDnaute Barbatruc
Bonjour @Staple1600

Je ne sais pas trop comment est organisé sont travail.
La difficulté est de comprendre avec qu'elle document il souhaite récupérer les informations pour remplir les signets dans Word, au passage j ai aussi étudié les Publipostage.
Le document Word qui contient la macro sera lui invariable.
A chaque enregistrement de nouveaux signets le document Word sera enregistré sous (.docx) avec un nom de fichier
Après c'est de la gestion et de l'organisation @Staple1600
Donc enregistré sous avec un numéro de dossier, siret etc.
L'idée est d'enregistrer le fichier word mis à jour dans son dossier millésimé (ca je sais pas se que ça veut dire !)
Enfin c est très gerable tous cela et pas un souci

Le point essentiel, récupérer les valeurs dans le document Excel pour les envoyer vers word, c'est cela qu il doit organiser.
Pour ma part j ai la solution une astuce

Je sais pas si j ai répondu à ta question j ai fait de mon mieux
 

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
315 111
Messages
2 116 340
Membres
112 720
dernier inscrit
henri marc michel