Word 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 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 chamin 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 !

1626192954745.png
 

Pièces jointes

  • data_audit_simplifié.xlsm
    38.1 KB · Affichages: 2
  • Test rapport d'audit.docm
    23.8 KB · Affichages: 2

Lapinturbo

XLDnaute Nouveau
Bonjour bonjour,

Quelqu'un aurait un éclairage à apporter à mon problème, s'il vous plait ?

Je vous remercie d'avance.

Bonne journée,

Lapinturbo

Edit : j'ai ouvert la même discussion dans la partie Excel car il semble qu'il y a très peu d'activité par ici.
 
Dernière édition:

soan

XLDnaute Barbatruc
Inactif
Bonjour Lapinturbo,

désolé, je n'ai pas de solution à te proposer. 😭



Edit : j'ai ouvert la même discussion dans la partie Excel car il semble qu'il y a très peu d'activité par ici.

oui, tu t'en es aperçu, toi aussi ? 😜 tu es tombé ici sur le « No man's land » ! 😄

après la traversée du désert, un petit rafraîchissement ? 🌴🍹

soan
 

Lapinturbo

XLDnaute Nouveau
Bonjour Lapinturbo,

désolé, je n'ai pas de solution à te proposer. 😭





oui, tu t'en es aperçu, toi aussi ? 😜 tu es tombé ici sur le « No man's land » ! 😄

après la traversée du désert, un petit rafraîchissement ? 🌴🍹

soan
😆 Haha !

Est-il préférable que je supprime ce fil du coup ? Je n'ai pas trouvé le moyen de le faire toutefois.

Dans le forum Excel, Laurent950 m'a apporté une solution bien qu'il y ait encore deux trois petits ajustements.
 

soan

XLDnaute Barbatruc
Inactif
@Lapinturbo

non, laisse quand même ce fil ; on ne sait jamais, si un contributeur errant, à la dérive, passe par ici... 😜

bonne chance pour ton exo du forum Excel, je suis sûr que Laurent950, ou un autre contributeur, pourront t'aider à régler les deux ou trois petits ajustements, et ainsi arriver à finaliser ton projet. 🍀

soan
 

Discussions similaires

Statistiques des forums

Discussions
312 104
Messages
2 085 349
Membres
102 869
dernier inscrit
radyreth