Erreur automation

Signaler
Messages postés
45
Date d'inscription
lundi 1 mai 2000
Statut
Membre
Dernière intervention
25 février 2012
-
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
-
bonjour à tous.
depuis que l'on soit passé sous excel 2007 au boulot, une macro vba que j’avais réalisée ne fonctionne plus, j'ai l'erreur:

erreur d'execution '-2147417848 (80010108)':
erreur automation
l'objet invoqué s'est déconnecté de ses clients.

la macro ouvre un fichier word et remplace certain mot par des données d'une page excel

nom = ThisWorkbook.Path
nom = nom + "\Sortie.doc"
Set AppWord = New Word.Application
Application.DisplayAlerts = True
AppWord.ShowMe
AppWord.Visible = True
'Ouvre le document Word
Set DocWord = AppWord.Documents.Open(nom)
   
For i = 2 To 9
  donneA = Me.Controls("TextBox" & i).Text
  donneB = "donne" & i & "x"
  If i = 7 Then
  donneA = TextBox7.Text & " " & TextBox8.Text
  i = 8
  End If
  rechercheword
Next i
Sub rechercheword()
    With AppWord.Selection.Find
        .Text = donneB ' <--- ça se plante ici et excel se ferme
        .Replacement.Text = donneA
        .Forward = True
        .Wrap = wdFindContinue
        .Format = False
        .MatchCase = False
        .MatchWholeWord = False
        .MatchWildcards = False
        .MatchSoundsLike = False
        .MatchAllWordForms = False
    End With
    AppWord.Selection.Find.Execute
    With AppWord.Selection
        If .Find.Forward = True Then
            .Collapse Direction:=wdCollapseStart
        Else
            .Collapse Direction:=wdCollapseEnd
        End If
        
        .Find.Execute Replace:=wdReplaceAll
    End With
End Sub


j'ai chercher sur google en vain, je fais appel à vos compétence pour m'aider.
Merci d'avance pour votre aide.
A voir également:

13 réponses

Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
227
Bonjour,
Référence manquante ou erronée, probablement (concernant Word)

____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne intallée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
227
Et sur quelle ligne du code montré, l'erreur ?


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne intallée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
781
Date d'inscription
lundi 22 janvier 2007
Statut
Membre
Dernière intervention
30 octobre 2013
3
ucfoutu te demande "Et sur quelle ligne du code montré, l'erreur ?".

Pour la trouver il suffi d'aller dans la page de ta macro et de préser la touche "F8" cela te ferra passer en mode pas à pas et là tu verra ou vba n'es pas content.

P.S. Pour passer à la ligne suivante il faut représser F8.
Messages postés
45
Date d'inscription
lundi 1 mai 2000
Statut
Membre
Dernière intervention
25 février 2012

Désolé mais je l'ai écrit dans le code
Sub rechercheword()
    With AppWord.Selection.Find
        .Text = donneB ' <--- ça se plante ici et excel se ferme
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
227
si donneB n'est pas connu de ta sub recherword, donneB = "" (chaine vide) ===>> plantage
Il te faut donc : soit déclarer générale la variable donneB, soit (beaucoup mieux) la passer en paramètre de ta sub recherchword.
Voilà
PS : tu t'en serais rendu compte seul en mode debug (à utiliser en tout premier réflexe) , que donneB était vide !


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne intallée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
227
kif-kif pour donneA (en passant).


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne intallée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
45
Date d'inscription
lundi 1 mai 2000
Statut
Membre
Dernière intervention
25 février 2012

en mode debug les donneA et donneB ne sont pas vide, ce bout de code fonctionnait sous office 2003.
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
227
Puisque tu l'affirmes !
Il nous faut alors supposer (si tu dis vrai) que ces deux variables ont été déclarées en dehors de tes procédures ici montrées !
Bon...
et ceci :
For i = 2 To 9
  donneA = Me.Controls("TextBox" & i).Text
  donneB = "donne" & i & "x"
  If i = 7 Then
  donneA = TextBox7.Text & " " & TextBox8.Text
  i = 8
  End If
  rechercheword
Next i

qui fait que, boucle ou pas boucle, ===>> donneA sera de toutes manières égal à TextBox9.text ?
tu peux nous en dire la raison ?
Idem pour donneB, qui finira de toutes manières par : = "donne9x" ?
tu peux nous l'expliquer ?



____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne intallée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
45
Date d'inscription
lundi 1 mai 2000
Statut
Membre
Dernière intervention
25 février 2012

je recueille des données dans excel, mais imprimer certaine je dois utiliser un document word, pour pouvoir utiliser ce document word j'ai écris à certain endroit spécifique des mots comme donne9x qu'il me suffit ensuite de remplacer.

petite info, j'ai pu essayer ma macro sous office2010 et elle fonctionne, le problème à l'air de provenir de la version d'office2007 mais je n'ai pas le choix c'est celle la qu'ils ont acheté au boulot pour remplacer 2003
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
227
Ah non (excuses) je retire ce que j'ai dit à propos de la boucle. Je n'avais pas vu que ton appel de la fonction de recherche y était.
Désolé.
Reste qu'il y a là un vrai mystère, alors !
Mais on va en avoir le coeur net :
Que se pass-t-il en écrivant ainsi :
For i = 2 To 9
  donneA = Me.Controls("TextBox" & i).Text
  donneB = "donne" & i & "x"
  If i = 7 Then
  donneA = TextBox7.Text & " " & TextBox8.Text
  i = 8
  End If
  rechercheword donneA, donneB
Next i
Sub rechercheword(donneA as string, donneB as string)

....
... etc...
___________________
_
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne intallée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
227
Il se trouve que je viens de lancer avec 2007, sans problème (mais en passant mes variables)



____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne intallée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient
Messages postés
45
Date d'inscription
lundi 1 mai 2000
Statut
Membre
Dernière intervention
25 février 2012

j'ai toujours la même erreur dès que l'on veux lancer la recherche dans un document word, les données se transfèrent bien entre sub
Messages postés
18038
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
227
Ecoute,
je ne ,puis que te confirmer que cela marche chez moi.

Si cela ne marche pas chez toi, commence par faire ce petit test :
- ouvre un NOUVEAU document dans Word (sur la machine où tu as un problème)
- ecris-y quelques lignes
- fais-y (dans VBA/Word) une petite macro utilisant la méthode find

si encore erreur : la référence à VBA n'est peut-être pas cochée ou encore ta version de Word est endommagée (à réinstaller)

si pas d'erreur ainsi ===>> deux possibilités === >>
- références erronées ou manquantes dans ton fichier EXCEL
- ton doc est protégé

Voilà le genre de choses que je vérifierais, personnellement.

J'essaierais également de créer, sur la macine qui pose problème, un nouveau fichier Excel et un nouveau fichier Word
J'injecterais dans VBA Excel mes codes par copier-coller
J'y cocherais les références vers VBA et vers Word
Dans mon nouveau fichier Word, je cocherais la référence VBA Application
Je ferais ensuite mes petits tests, pour voir le comportement.


Autre chose : tu utilises dans ton code actuel une sélection (que tu ne sembles pas avoir faite) sur ton document Word. Essaye d'en faire une (l'ensemble du document) pour voir.
Voilà ! je te laisse avec tous ces petits tests à faire. Ils devraient mettre en exergue le problème réel.


____________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches d'autres forumeurs.
Pas d'aide en ligne intallée ? ==> ne comptez pas sur moi pour simplement vous dire ce qu'elle contient