jraynald
Messages postés45Date d'inscriptionlundi 1 mai 2000StatutMembreDernière intervention25 février 2012
-
18 août 2011 à 18:38
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018
-
21 août 2011 à 08:26
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.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 18 août 2011 à 19:05
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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 18 août 2011 à 19:09
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
4u4me4us
Messages postés780Date d'inscriptionlundi 22 janvier 2007StatutMembreDernière intervention30 octobre 20133 19 août 2011 à 11:18
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.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 19 août 2011 à 18:57
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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 19 août 2011 à 18:59
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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 20 août 2011 à 19:40
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
jraynald
Messages postés45Date d'inscriptionlundi 1 mai 2000StatutMembreDernière intervention25 février 2012 20 août 2011 à 19:51
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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 20 août 2011 à 19:54
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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 20 août 2011 à 19:56
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
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 21 août 2011 à 08:26
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