Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

Lapinturbo

XLDnaute Nouveau
Bonjour le forum !

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.

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 !

 

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
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
 

soan

XLDnaute Barbatruc
Inactif
@Lapinturbo

même si tu voulais supprimer ton fil, tu ne peux pas le faire toi ; ni moi, qui suis Barbatruc ; c'est seulement l'Administrateur David Aubert qui peut le faire ; peut-être le Modo Yeahou ? mais je ne crois pas : pour supprimer toute une conversation, j'crois que même lui doit en faire la demande à David.

soan​
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…