XL 2019 Liaison de données Word Excel et "méthode range de l'objet global a échoué"

Lapinturbo

XLDnaute Nouveau
Bonjour le forum ! :D

1️⃣Mon problème global est de rentrer des données venant d'un Excel, dans un Word. Cet Excel est la base de données et de calculs / graphiques attachée à une affaire de l'entreprise, le Word est le rapport que l'entreprise produit à chaque affaire. Pour une affaire, j'ai donc un couple Word-Excel. Je suis charger de faire évoluer cet outil (il est sous libre office à la base et je le passe sous MS Office) et surtout de l'automatiser au maximum.
La structure de l'Excel ne bouge jamais d'affaires en affaires, il y aura juste des cases vides. Le Word cependant doit être assez souple (adaptable au cas par cas).
J'ai longuement cherché comment lier mes données de sorte à ce que le Word se mette à jour tout seul quand on modifie une valeur dans l'Excel.
Le collage avec liaison ne convient pas car j'ai besoin d'avoir la valeur liée bien intégrée au milieu du texte.
L'insertion d'objet ne convient pas car une donnée être réutilisée plusieurs fois, à plusieurs endroits différents.
Le publipostage non plus puisque je n'ai pas de tête de colonne avec plein de données pour des affaires différentes pour chaque colonne.

Les objets OLE pourraient peut être convenir mais cela me semble bien compliqué et peu adapté. Mais je les connais mal... ActiveX pareil.

La solution que j'ai trouvé est de faire une macro dans Word qui va chercher la valeur d'une cellule Excel définie et donne cette valeur à un signet pré-établi dans Word. Il ne faut pas que ce signet disparaisse, c'est peut-être un problème puisque le signet n'est relier à rien du tout (il a juste un nom) avant d'être rempli par la macro. J'utiliserai ensuite des champs ref pour appeler les valeurs mémorisées dans les signets.

2️⃣Si cette solution vous semble être appropriée pour mon cas, on peut passer au problème qui me bloque dans sa mise en œuvre :
La fameuse erreur 1004 "La méthode range de l'objet global a échoué". Il y a déjà pas mal de documentation à ce sujet mais je n'ai pas réussi à passer cet obstacle.
Pour aller chercher mes données dans l'Excel, j'utilise un bout de code que j'avais trouvé sur un forum et réadapté pour faire importer des données entre deux Excel. Ce code fonctionne très bien sur Excel mais j'ai l'erreur 1004 sur Word. J'ai bien coché les librairies appropriées (voir capture en PJ).

Mon code (dans Word) est le suivant :

Enrichi (BBcode):
Private Function ExtraireValeur(ByVal Chemin As String, ByVal Fichier As String, ByVal Feuille As String, ByVal Cellule As String)
Dim Argument As String
    Chemin = Replace(Chemin, "'", "''")
    Fichier = Replace(Fichier, "'", "''")
    Feuille = Replace(Feuille, "'", "''")

    Argument = "'" & Chemin & "[" & Fichier & "]" & Feuille & "'!" & Range(Cellule).Address(, , xlR1C1)'C'est le Range de cette ligne qui pose problème
    ExtraireValeur = ExecuteExcel4Macro(Argument)
End Function

Sub Main()


sChemin = InputBox("Coller le chemin de l'Excel de l'affaire : ", "Chemin de l'Excel") 'On demande à l'utilisateur de renseigner le chemin de l'Excel qui contient les données
If sChemin <> "" Then 'S'il ne remplit rien, le programme s'arrête
sChemin = sChemin & "\" 'Il faut ajouter un antislash pour que ça marche
sFichier = "data_audit_simplifié"
sFeuille = "data (2)"


WordDoc.Bookmarks("test").Range.Text = ExtraireValeur(sChemin, sFichier, sFeuille, "E28") 'E28 est la cellule qui contient la valeur à importer pour remplir le signet "test"
End If

End Sub

Je met aussi en PJ le Word et l'Excel, largement dégraissés de toute choses inutiles. 🪶

Merci de m'avoir lu (c'est long !) et surtout pour le temps que vous prendrez pour aider ! 🙏

Votre aide sera précieuse pour la rénovation énergétique des maisons individuelles en France !

PS : j'avais mis cette discussion dans la partie Word mais comme il semble que personne n'y aille, je le décale ici.

Regarde la pièce jointe 1110932
 

Pièces jointes

  • Test rapport d'audit.docm
    23.8 KB · Affichages: 19
  • data_audit_simplifié.xlsm
    38.1 KB · Affichages: 12
Solution
Re,
En correction ci-dessous
ici
Code:
' Documents Word de Réference devant être completé.
    Dim ExcelDoc As Excel.Workbook
        Set ExcelDoc = Excel.Workbooks(CheminEtFichierExcel)   'La ligne 17
On Error GoTo 0
' Si le Documents Excel Excel qui contient les données est fermé l'Ouvrir.
    If ExcelDoc Is Nothing Then
        MsgBox "Le document est fermé / Ouvrir le document"   'La ligne 21
        Set ExcelDoc = ExcelApp.Workbooks.Open(CheminEtFichierExcel)
    End If
    Dim FeuiData As Excel.Worksheet
        Set FeuiData = Worksheets("data (2)")    'C'est elle, la ligne 25 qui fait l'erreur

Correction
Code:
Documents Word de Réference devant être completé.
    Dim ExcelDoc As Excel.Workbook
On Error GoTo 0
'...

laurent950

XLDnaute Accro
Bonsoir @Lapinturbo

Il faut décrire les étapes pour :
1️⃣Mon problème global est de rentrer des données venant d'un Excel, dans un Word. = Résolu
ici pour 1 signet exemple
Dim signet(1 To 1) As Word.Bookmark, LeMot(1 To 1) As String, i As Integer
Set signet(1) = WordDoc.Bookmarks("Date_construction") '[Date_construction] : nom du signet
LeMot(1) = FeuiData.Range("E28").Value

Pour de multiple signet Augmenter la variable tableau Signet et Lemot
Exemple :
Dim signet(1 To 3) As Word.Bookmark, LeMot(1 To 3) As String, i As Integer
Voir Signet 2 et 3 (Non Utiliser mais laissé pour exemple)

2️⃣Si cette solution vous semble être appropriée pour mon cas, on peut passer au problème qui me bloque dans sa mise en œuvre :
Ici il faut décrire Etapes par Etapes les actions.

VB:
Sub CompleterWordDepuisExcel()
' On demande à l'utilisateur de renseigner le chemin de l'Excel qui contient les données
    Chemin = InputBox("Excel", "Excel", "Nom du chemin de l'Excel qui contient les données ?", 2)
    FichierExcel = "data_audit_simplifié.xlsm"
    CheminEtFichierExcel = Chemin & "\" & FichierExcel
' Test Ouverture Application Excel, si pas déjà Ouvert.
On Error Resume Next
    Dim ExcelApp As Excel.Application
        Set ExcelApp = GetObject(, "Excel.Application")
            If Err <> 0 Then
                Err.Clear
                Set ExcelApp = CreateObject("Excel.Application")
            End If
        ExcelApp.Visible = True 'affiche le document Word
' Documents Word de Réference devant être completé.
    Dim ExcelDoc As Excel.Workbook
        Set ExcelDoc = Excel.Workbooks(CheminEtFichierExcel)
On Error GoTo 0
' Si le Documents Excel Excel qui contient les données est fermé l'Ouvrir.
    If ExcelDoc Is Nothing Then
        MsgBox "Le document est fermé / Ouvrir le document"
        Set ExcelDoc = ExcelApp.Workbooks.Open(CheminEtFichierExcel)
    End If
    Dim FeuiData As Excel.Worksheet
        Set FeuiData = Worksheets("data (2)")
' A l'aide de VBA Remplire :
' Le documents Word de référence en lien avec Excel.
    Dim WordApp As Word.Application
        Set WordApp = GetObject(, "Word.Application")
    Dim WordDoc As Word.Document
        Set WordDoc = WordApp.Documents(Chemin & "\" & "Test rapport d'audit.docm")
' Comment insérer du texte dans un signet.
' Remplis le signet SignetOrigine avec le texte "LeMot" sans détruire SignetOrigine
' Exemple ci-dessous (Choisir les bonnes Référence excel pour LeMot
    Dim signet(1 To 1) As Word.Bookmark, LeMot(1 To 1) As String, i As Integer
    Dim Place As Long, SignetOrigine As String
        Set signet(1) = WordDoc.Bookmarks("Date_construction") '[Date_construction] : nom du signet
            LeMot(1) = FeuiData.Range("E28").Value
        'Set signet(2) = WordDoc.Range("B6").Value
            'LeMot(2) = FeuiData.Range("T5").Value
        'Set signet(3) = WordDoc.Bookmarks("Adresse") '[Adresse] : nom du signet
            'LeMot(3) = FeuiData.Range("B6").Value
' Remplir le document Word modele.
        For i = LBound(LeMot) To UBound(LeMot)
        ' Depart du signet
            Place = signet(i).Range.Start
        ' Nom du signet d'Origine
            SignetOrigine = signet(i).Name
        ' Substitue par le Mot (qui remplace le signet)
            signet(i).Range.Text = LeMot(i)
        ' Options \ Options Avancées \ Affichér les signets [...]
        ' Ne pas perdre le Signet d'origine [...] et sa mise en forme entre crochet
            WordDoc.Bookmarks.Add Name:=SignetOrigine, Range:=WordDoc.Range(Place, Place + Len(LeMot(i)))
        Next i
' Enregistrer le document sous (Exemple : LeMot(1) & "-" & LeMot(2))
            'Dim fichier As String
            'fichier = "DocumentWordFichier " & LeMot(1) & "-" & LeMot(2) & ".docx"
            'WordDoc.SaveAs2 DossierSauvegard & fichier
End Sub
 

Lapinturbo

XLDnaute Nouveau
Ouwa !! C'est vachement détaillé, aussi bien en étapes qu'en commentaires ! 🤩
Merci beaucoup pour ce travail !!

Toutefois, lorsque je teste sur mon pc perso (ceux de l'entreprise ont une licence Office 2019 mais un collègue et moi-même avons 365, ce qui peut être gênant, peut-être ?), lorsque je teste avec 365, ça me met une erreur 1004 "La méthode 'Worksheets' de l'objet '_global' a échoué" au niveau de la ligne 25 :
VB:
' Documents Word de Réference devant être completé.
    Dim ExcelDoc As Excel.Workbook
        Set ExcelDoc = Excel.Workbooks(CheminEtFichierExcel)   'La ligne 17
On Error GoTo 0
' Si le Documents Excel Excel qui contient les données est fermé l'Ouvrir.
    If ExcelDoc Is Nothing Then
        MsgBox "Le document est fermé / Ouvrir le document"   'La ligne 21
        Set ExcelDoc = ExcelApp.Workbooks.Open(CheminEtFichierExcel)
    End If
    Dim FeuiData As Excel.Worksheet
        Set FeuiData = Worksheets("data (2)")    'C'est elle, la ligne 25 qui fait l'erreur

Tout semble bien déclaré et défini pourtant...

De plus, la MsgBox de la ligne 21 s'affiche toujours, même quand le document est déjà ouvert. En soi, ce n'est pas un problème mais ça signifie que ExcelDoc est vide alors qu'on l'a rempli à la ligne 17, non ?
 

soan

XLDnaute Barbatruc
Inactif
Bonsoir Lapinturbo, Laurent,

à propos de l'erreur 1004, essaye à tout hasard :

Set FeuiData = ExcelDoc.Worksheets("data (2)")

si ça marche : ok ! sinon, c'est peut-être le nom "data (2)" qui pose problème ?



pour la ligne 21, c'est bizarre que le Msgbox s'affiche toujours !

ça voudrait dire que ExcelDoc est toujours la valeur Nothing !

or un peu plus haut, cette ligne est toujours exécutée :

Set ExcelDoc = Excel.Workbooks(CheminEtFichierExcel)

donc ça devrait être ok, et ne pas être à Nothing ... sauf si CheminEtFichierExcel ne contient pas la bonne valeur ! ➯ il faut regarder plus en amont dans le code VBA pour vérifier ça !​

soan
 
Dernière édition:

soan

XLDnaute Barbatruc
Inactif
@Lapinturbo

il faudrait vérifier ça :

VB:
Chemin = InputBox("Excel", "Excel", "Nom du chemin de l'Excel qui contient les données ?", 2)
FichierExcel = "data_audit_simplifié.xlsm"
CheminEtFichierExcel = Chemin & "\" & FichierExcel

vérifie d'abord le nom du fichier : "data_audit_simplifié.xlsm" ; ensuite, si c'est ok, il faut aussi que le chemin saisi par l'utilisateur soit un chemin valide ! or y'aura une erreur si le chemin n'existe pas ! et si ça s'trouve, c'est arrivé à cause d'une bête et simple erreur de saisie ! ➯ mettre dans le code VBA une vérif que le chemin existe, pour éviter de faire la suite si le chemin n'existe pas ; je n'ai pas voulu passer trop de temps sur cet exo, car j'en ai un autre en cours à terminer, mais si le code de la vérif est déjà inclus dans le code VBA, c'est qu'alors il ne marche pas comme il faut ! ➯ à déboguer !

je te laisse voir la suite avec Laurent. :)

soan
 
Dernière édition:

laurent950

XLDnaute Accro
Re,
En correction ci-dessous
ici
Code:
' Documents Word de Réference devant être completé.
    Dim ExcelDoc As Excel.Workbook
        Set ExcelDoc = Excel.Workbooks(CheminEtFichierExcel)   'La ligne 17
On Error GoTo 0
' Si le Documents Excel Excel qui contient les données est fermé l'Ouvrir.
    If ExcelDoc Is Nothing Then
        MsgBox "Le document est fermé / Ouvrir le document"   'La ligne 21
        Set ExcelDoc = ExcelApp.Workbooks.Open(CheminEtFichierExcel)
    End If
    Dim FeuiData As Excel.Worksheet
        Set FeuiData = Worksheets("data (2)")    'C'est elle, la ligne 25 qui fait l'erreur

Correction
Code:
Documents Word de Réference devant être completé.
    Dim ExcelDoc As Excel.Workbook
On Error GoTo 0
' Si le Documents Excel Excel qui contient les données est fermé l'Ouvrir.
    If ExcelDoc Is Nothing Then
        MsgBox "Le document est fermé / Ouvrir le document"   'La ligne 21
        Set ExcelDoc = ExcelApp.Workbooks.Open(CheminEtFichierExcel)
    End If
    'Set ExcelDoc = Excel.Workbooks(CheminEtFichierExcel)   'La ligne 17
    Dim FeuiData As Excel.Worksheet
        Set FeuiData = ExcelDoc.Worksheets("data (2)")    'C'est elle, la ligne 25 qui fait l'erreur

J'ai modifier le code ci-dessous

VB:
Sub CompleterWordDepuisExcel()
' On demande à l'utilisateur de renseigner le chemin de l'Excel qui contient les données
    Chemin = InputBox("Excel", "Excel", "Nom du chemin de l'Excel qui contient les données ?", 2)
    FichierExcel = "data_audit_simplifié.xlsm"
    CheminEtFichierExcel = Chemin & "\" & FichierExcel
' Test Ouverture Application Excel, si pas déjà Ouvert.
On Error Resume Next
    Dim ExcelApp As Excel.Application
        Set ExcelApp = GetObject(, "Excel.Application")
            If Err <> 0 Then
                Err.Clear
                Set ExcelApp = CreateObject("Excel.Application")
            End If
        ExcelApp.Visible = True 'affiche le document Word
On Error GoTo 0
' Documents Excel qui contient les données.
    Dim ExcelDoc As Excel.Workbook
    Dim FeuiData As Excel.Worksheet
' Si le Documents Excel qui contient les données est fermé l'Ouvrir.
    If ExcelDoc Is Nothing Then
        MsgBox "Le document est fermé / Ouvrir le document"
        Set ExcelDoc = ExcelApp.Workbooks.Open(CheminEtFichierExcel)
    End If
' Feuille excel en mémoire "data (2)"
        Set FeuiData = ExcelDoc.Worksheets("data (2)")
' A l'aide de VBA Remplire :
' Le documents Word de référence en lien avec Excel.
    Dim WordApp As Word.Application
        Set WordApp = GetObject(, "Word.Application")
        Set WordDoc = WordApp.Documents(Chemin & "\" & "Test rapport d'audit.docm")
' Comment insérer du texte dans un signet.
' Remplis le signet SignetOrigine avec le texte "LeMot" sans détruire SignetOrigine
' Exemple ci-dessous (Choisir les bonnes Référence excel pour LeMot
    Dim signet(1 To 1) As Word.Bookmark, LeMot(1 To 1) As String, i As Integer
    Dim Place As Long, SignetOrigine As String
        Set signet(1) = WordDoc.Bookmarks("Date_construction") '[Date_construction] : nom du signet
            LeMot(1) = FeuiData.Range("E28").Value
        'Set signet(2) = WordDoc.Range("B6").Value
            'LeMot(2) = FeuiData.Range("T5").Value
        'Set signet(3) = WordDoc.Bookmarks("Adresse") '[Adresse] : nom du signet
            'LeMot(3) = FeuiData.Range("B6").Value
' Remplir le document Word modele.
        For i = LBound(LeMot) To UBound(LeMot)
        ' Depart du signet
            Place = signet(i).Range.Start
        ' Nom du signet d'Origine
            SignetOrigine = signet(i).Name
        ' Substitue par le Mot (qui remplace le signet)
            signet(i).Range.Text = LeMot(i)
        ' Options \ Options Avancées \ Affichér les signets [...]
        ' Ne pas perdre le Signet d'origine [...] et sa mise en forme entre crochet
            WordDoc.Bookmarks.Add Name:=SignetOrigine, Range:=WordDoc.Range(Place, Place + Len(LeMot(i)))
        Next i
' Enregistrer le document sous (Exemple : LeMot(1) & "-" & LeMot(2))
            'Dim fichier As String
            'fichier = "DocumentWordFichier " & LeMot(1) & "-" & LeMot(2) & ".docx"
            'WordDoc.SaveAs2 DossierSauvegard & fichier
End Sub
 

laurent950

XLDnaute Accro
Bonsoir @soan, @Lapinturbo

C'est dans le principe, en fonction du Poste #1 il faut une description très détaillée de la procédure à suivre.
Le principe c'est de pouvoir importer des données Excel vers Word en utilisant les signets.

Ce n'est pas le bon concept pour ce que vous avez à faire @Lapinturbo ... c'est un exemple il faut détailler la procédure comme su ce poste que j'ai résolu.

Tout décrire pour passé en Module de classe puis ensuite tout automatisé pour ensuite passer en Mode Lapintwinscrollturbo :) :)

à propos de l'erreur 1004, essaye à tout hasard :

Set FeuiData = ExcelDoc.Worksheets("data (2)")
@soan a vu juste

pour la ligne 21, c'est bizarre que le Msgbox s'affiche toujours !

ça voudrait dire que ExcelDoc est toujours la valeur Nothing !

or un peu plus haut, cette ligne est toujours exécutée :

Set ExcelDoc = Excel.Workbooks(CheminEtFichierExcel)
@soan a vu juste aussi je ne me suis pas penché sur cette problématique, qui n'a pas de valeur ajoutée avec votre Poste #1

Avec le détail en Pas a Pas très détaillé de votre projet on peux automatisé

Je pense que le principe du poste est résolu en Partie 1 (Liaison de données Word Excel)

En Partie 2 l'automatisation (qui n'a pas été traité ici)
 
Dernière édition:

Lapinturbo

XLDnaute Nouveau
Bonjour @laurent950, @soan, visiteur !

Après corrections de Laurent, plus d'erreur 1004 et commentaires plus clairs. Top ! 😍

J'ai juste enlevé la MsgBox ligne 21 et tout roule ! 🚗
Puisque qu'on a dim ExcelDoc juste au-dessus, ExcelDoc est systématiquement Nothing et la MsgBox devient intempestive.

Super l'astuce d'afficher les signets, ça permet de bien repérer les endroits, sans avoir à ajouter de QuickPart ref, qui de toute façon crée un doublon.

Est-ce ce que vous vouliez dire, Laurent, dans :
Ce n'est pas le bon concept pour ce que vous avez à faire @Lapinturbo...
?
La solution telle que développée dans ce fil (et adaptée de celui que vous avez mis en lien) me parait très satisfaisante, ce qui répond aux deux parties de mon poste.

Quand vous dites que la partie 2 automatisation n'a pas été traité, vous voulez dire qu'on pourrait automatiser encore plus ? Avec votre code, je pense qu'on est déjà en mode Lapintwinscrollturbo ! 😆

Pour la petite histoire, mon pseudo me vient de lorsque je jouait en famille à Virtual Régata, jeu en ligne de courses de voilier ! ⛵ Il fallait bien du turbo ! J'ai gardé le pseudo sur tous mes comptes et jeux depuis, ça fait une dizaine d'années maintenant ! 😁

Un grand merci à vous deux !
 
Dernière édition:

Etoto

XLDnaute Barbatruc
Bonjour à tous,
Mon pseudo me vient de lorsque je jouait en famille à Virtual Régata, jeu en ligne de courses de voilier ! ⛵ Il fallait bien du turbo ! J'ai gardé le pseudo sur tous mes comptes et jeux depuis, ça fait une dizaine d'années maintenant ! 😁
Ha l'histoire des pseudos !! Je me rappelle de moi qui regardais les blagues de Toto quand j'était petit et je me suis dit que j'allait créer un nom secondaire basé de "Toto" et de la première lettre de mon prénom "E", ce qui donne "Etoto" et depuis tous mes pseudos des jeux vidéos sont :

Etoto
Et0t0
Etoto0026
Etoto000

Belle histoire les pseudos ;) 😁

Fait intéressant : "Etoto" est une société de paris en ligne 🤣 .
 

laurent950

XLDnaute Accro
Bonsoir @Lapinturbo , @soan , @Etoto , Le Forum...

L'idée :
  • Mon problème global est de rentrer des données venant d'un Excel, dans un Word :
  • Cet Excel est la base de données et de calculs / graphiques attachée à une affaire de l'entreprise
  • Proposition :
  • En bleu : valeur à saisir
  • En rouge : valeur calculée
  • En noir : valeur identique à celle de la colonne précédente, faite pour être modifiée ou pour ou pré-saisie rapidement
  • En gris : rappel d'une valeur précédente. La modifier influe sur les calculs suivants et crée des incohérences.
  • Les Valeurs qui sont à Importé dans Word depuis Excel :
  • Les identifiée dans Excel
  • Plusieurs solutions
  • Créer une Feuil sous forme de Base de données
  • Avantage (cette base peut pré-remplir Excel aussi)
  • Cette base pourrait être aussi une variable tableau
  • Le nom du fichier Word pourrait y être prés écrit
  • L’idée est de sélectionner le fichier Excel (sans rentrer le chemin) puis ensuite à l’aide de cette structure de feuil sous forme de base de données, le fichier Word sera renseigné instantanément
  • Autres avantage
  • La mise à jour peut se faire dans les deux sens
  • Excel depuis Word ou Word depuis Excel
  • Je n’ai pas la connaissance de votre projet de travail, mais c’est très automatisable…
  • Autres avantage
  • Ont peux actualiser aussi un nombre infini de fichier Word depuis Excel et vice versa
  • Avec le lien dans le fichier Word ou Excel
  • Il Faut Partir de Word (VBA dans Word) et Récupérer les données dans Excel (En tous premier lieux)
  • Donner un Nom au fichier Excel en Rapport avec le fichier Word
  • Word (on part d’un modèle standard) On le remplit et en enregistre sous (avec le nom du fichier final Word récupérer dans Excel (ou Le même nom que celui d’Excel) Ou un autre (Aucun soucis sur ce point)
  • Au Final le fichier Word et créer (Le Modèle Word est intacte) puis le fichier Excel sera en rapport avec Word
  • Possibilité d’une Modification dans Word qui modifiera Excel
  • Possible depuis Excel de renseigner la base (Qui alimentera votre modèle Excel) soit :
  • En bleu : valeur à saisir (En Directe ou depuis la base)
  • En rouge : valeur calculée (Rien à saisir)
  • En noir : valeur identique à celle de la colonne précédente, faite pour être modifiée ou pour ou pré-saisie rapidement (A vous de voir en fonction de la facilité de l’endroit où cela doit être saisie)
  • En gris : rappel d'une valeur précédente. La modifier influe sur les calculs suivants et crée des incohérences. (Ici je ne connais pas la régle)

  • C’est un type de projet qui peut être automatisé
  • En Utilisant des Variables Objets
  • Des Variables tableaux
  • Fonction / Procédure
  • Peut-être module de classe (si besoin d’être évoluer à voir)
  • Il faut partir sur 3 fichiers Excel
  • 1 Modèle Word (Qui sera le fichier de référence en sauvegarde)
  • A Partir du fichier Modèle Word (Importer les valeurs d’Excel) Enregistrer sous le fichier Word (dans le bon répertoire avec le bon nom) / Cela pour les 3 Word et le travail est fini (Pour cette section)
  • Ensuite pour Modifier d’Excel Vers Word / OU / de Word vers Excel (Peut-être faire évoluer le code avec un Module de classe)…
L’idée est là je ne connais pas votre métier mais c’est une base à développer, à écrire puis être rigoureux…

Bien sûr il faut écrire le code en fonction de votre besoin métier et de bien respecter l’étape et procédure… Ensuite cela devient plus dynamique (Pour gérer les Modification et cohérence entre les deux Fichier source (Excel en Rapport avec Word)… Le lien en lieux deux fichiers peut être un ID (Dans le nom de fichier qui les rends unique avec 2 extensions différentes « Word et Excel » à y réfléchir en fonction de votre besoin métier)

Peut-être que cette idée vous parle (sans penser en code) en faisant le travail à la main en établissant un processus de fonctionnement qui sera automatisé par la suite (Le code sera assez simple pour celui qui le maitrise)

Vous pouvez ouvrir un autres Poste pour résoudre cela. Reprendre mes idées et développer pour créer un code adapté
 

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
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 913
Membres
101 837
dernier inscrit
Ugo