fixou81
Messages postés200Date d'inscriptionlundi 9 mai 2005StatutMembreDernière intervention12 juin 2007
-
25 mai 2007 à 09:26
cavo789
Messages postés168Date d'inscriptionvendredi 9 janvier 2004StatutMembreDernière intervention28 juillet 2009
-
25 mai 2007 à 16:03
Bonjour a tous,
voila j'ai vu que mon probleme était deja traité mais malgré cela je ne vois pas concretement ce qui ne vas pas. Pour savoir ce probleme a était traité ici http://www.vbfrance.com/infomsg_462-SERVEUR-DISTANT-EXISTE-PAS-OU-EST-PAS_401893.aspx' target='_blank'>http://www.vbfrance.com/infomsg_462-SERVEUR-DISTANT-EXISTE-PAS-OU-EST-
Je vais vous exposer mon probleme : Depuis access je pilote word, je fais plusieurs copier-coller automatique. Tout fonctionne bien sauf quand je fais mon operation une deuxieme fois d'affilée. J'ai alors l'erreur 462 "Le serveur distant n'existe pas ou n'est pas dispo..."
voici mon code : il se fait dans l'evenement click bouton (je n'ai pas mis tout end sub...je ai mis l'interessant)
Set WordApp = CreateObject("Word.Application")
WordApp.Visible = True
Set WrdDoc = WordApp.Documents.Open("C:\Documents and Settings\...\Document de base")
Set wrdRange = WrdDoc.Bookmarks("Nom").Range
wrdRange.Text = "" & nom
Selection.EndKey Unit:=wdStory
With WordApp
.TypeParagraph
.TypeText Text:="A faire3 fois"
End With
Selection.EndKey Unit:=wdStory
chemindoc = "C:\...\document
Cree_Document (chemindoc) 'appelle une fonction qui fait des copier-coller tout simple
'Document de destination
WordApp.ActiveDocument.SaveAs FileName:= _
"C:\Documents and Settings\....\Patients" & nom, FileFormat:= _
wdFormatDocument
WordApp.ActiveDocument.Close
WordApp.Quit
Set WrdDoc = Nothing
Set WordApp = Nothing
end sub
Donc la ou sa marche pas la deuxieme fois c'est a Selection.EndKey Unit:=wdStory
J'ai bien compris que à chaque appel à un objet, une méthode ou une propriété Word soit qualifié avec la variable objet appropriée.
Mais comment faire pour faire ceci correctement?
Merci de votre aide!
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 25 mai 2007 à 12:19
Si je comprends bien, tu ne voudrais pas que l'action puisse être faite 2 fois , c'est ça ?
Si oui, et en utilisant la méthode que je décrivais, ton objet Word serait toujours "actif" après un premier passage.
Il suffirait de voir si l'objet Is Nothing ou pas.
If Not WordApp Is Nothing then Exit sub ' en début de procédure
WordApp devra préférablement être déclaré dans un module en Public (ou peut-être dans l'entête de la page de code de ce formulaire en Private ...)
Qu'est-ce que Selection.EndKey ? Il me semble que c'est une propriété de Word et pas d'Access. Ne devrais-tu pas écrire plutôt ceci : WordApp.Selection.EndKey voire mieux; mettre le .Selection dans ton With
cs_MPi
Messages postés3877Date d'inscriptionmardi 19 mars 2002StatutMembreDernière intervention17 août 201823 25 mai 2007 à 11:13
Salut,
Je ne programme jamais avec Word et n'ai pas l'intention de commencer...
Mais, logiquement, si tu dois faire plusieurs passage dans ta macro, il ne sert à rien de créer une instance à chaque fois et de la fermer.
Essaie en créant ton instance une première fois, appelle ta macro le nombre de fois nécessaire, puis ferme l'instance une fois que tout est terminé.
fixou81
Messages postés200Date d'inscriptionlundi 9 mai 2005StatutMembreDernière intervention12 juin 2007 25 mai 2007 à 11:25
c'est a dire qu'a la base j'utilise mon instance une seule fois. Mais mon probleme est si l'utilisateur reclique une deuxieme fois alors ca ne marche pas.
En fait l'action que j'ai decrite lors du click sur un bouton valide des selection qu'a fait l'utilisateur puis un document se créé selon les selections lors du click. Si l'utilisateur change ses selections et reclique alors ca ne marche plus la ou je l'ai decrit. Je n'ai donc pas interet a appeler ma macro le nombre de fois souhaitée.
Merci tout de meme
fixou81
Messages postés200Date d'inscriptionlundi 9 mai 2005StatutMembreDernière intervention12 juin 2007 25 mai 2007 à 14:26
Tu as raison Cavo789 il fallait bien a chaque fois specifier WordApp.selectione t comme a chaque fois a la fin je fais set wordapp=nothing, je peux reutiliser ensuite wordapp.
Merci aussi a Mpi de son aide car déclarer wordapp public est judicieux!
cavo789
Messages postés168Date d'inscriptionvendredi 9 janvier 2004StatutMembreDernière intervention28 juillet 20091 25 mai 2007 à 16:03
Merci pour ton ... merci. C'est sympa de prendre le temps de donner un feedback quand la solution proposée convient car cela peut aussi aider d'autre par la suite. ;-)