Cram_n7
Messages postés4Date d'inscriptionlundi 19 mars 2007StatutMembreDernière intervention19 mars 2007
-
19 mars 2007 à 15:59
Cram_n7
Messages postés4Date d'inscriptionlundi 19 mars 2007StatutMembreDernière intervention19 mars 2007
-
19 mars 2007 à 16:51
Bonjour !
J' ai créé un document Word ("Dossier de candidature TLSE_signets.doc") dans lequel j' ai créé une fonction privée (uniquement pour ce document) :
function ecrire_date()
...
end function
Depuis une autre fonction, qui est elle définie pour tous les documents (pour normal.dot), je voudrais ouvrir ce document, et appeler cette fonction. Mon code est le suivant :
Function ecrire_param()
Dim dossier As Word.Document
Application.Visible = True
Set dossier = Documents.Open("C:\\Marc\\documents word\\test\\Dossier de candidature TLSE_signets.doc")
dossier.ecrire_date
ActiveDocument.Close
EndFunction
et là ça plante, "erreur d' exécution '438' Propriété ou méthode non gérée par cet objet." quand j' appelle ecrire_date.
Comme je suis débutant en VBA, je confond les objets, les documents,
etc... je pense qu' il faut inclure/importer quelque chose, mais je ne
sais pas quoi faire.
Cram_n7
Messages postés4Date d'inscriptionlundi 19 mars 2007StatutMembreDernière intervention19 mars 2007 19 mars 2007 à 16:51
La ligne qui plantait était dossier.ecrire_date (avec l' erreur ci-dessus).
J' ai enfin réussi à appeler la macro avec la ligne de code suivante :
Application.Run "'C:\\Marc\\documents word\\test\\Dossier de candidature TLSE_signets.doc'!ecrire_date"
à la place de :
dossier = Documents.Open("C:\\Marc\\documents word\\test\\Dossier de candidature TLSE_signets.doc")
dossier.ecrire_date
Ca marche pour une sub, il doit y avoir moyen de faire ça avec une fonction aussi :)
Considérons le problème comme résolu, même si je n' ai pas bien compris pourquoi ça ne marchait pas avant.
drikce06
Messages postés2236Date d'inscriptionlundi 29 mai 2006StatutMembreDernière intervention29 mai 200810 19 mars 2007 à 16:26
Salut, si tu as des questions!
Function ecrire_param()
Dim WordApp as Word.Application
Dim dossier As Word.Document
Application.Visible = True
Set WordApp = CreateObject("Word.Application")
Set dossier = WordApp.Documents.Open("C:\\Marc\\documents word\\test\\Dossier de candidature TLSE_signets.doc")
dossier.ecrire_date 'ici que veux tu faire?
dossier.Close True
WordApp.Quit
dossier = Nothing
WordApp = Nothing
End Function
Drikce 06
Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
Cram_n7
Messages postés4Date d'inscriptionlundi 19 mars 2007StatutMembreDernière intervention19 mars 2007 19 mars 2007 à 16:33
je n' ai rien besoin de retourner, ecrire_date pourrait aussi bien etre une sub (d' ailleurs j' ai testé, et même problème).
En fait je veux juste réussir à l' appeler ! Ca marche si je la mets dans le même module que la fonction principale, mais si elle est ailleurs je n' y arrive pas.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Cram_n7
Messages postés4Date d'inscriptionlundi 19 mars 2007StatutMembreDernière intervention19 mars 2007 19 mars 2007 à 16:36
voici le code de ecrire_date à titre indicatif :
Sub ecrire_date()
' aller au signet date, et écrire qq chose.
'
Selection.GoTo What:=wdGoToBookmark, Name:="date"
With ActiveDocument.Bookmarks
.DefaultSorting = wdSortByName
.ShowHidden = False
End With
Selection.TypeText Text:="txt plop"
End Sub
PS je ne trouve pas comment éditer mes messages ...
drikce06
Messages postés2236Date d'inscriptionlundi 29 mai 2006StatutMembreDernière intervention29 mai 200810 19 mars 2007 à 16:39
Si elle est en privée peux l'appeler uniquement comme tu le dis, le mieux c'est de la mettre public dans un module et là tu peux l'appeller d'où tu veux! Après si j'ai pas bien compris, explique mieux parce que c'est pas très claire!
Public Sub ecrire_param()
Set WordApp = CreateObject("Word.Application")
WordApp.Visible = True
Set dossier = WordApp.Documents.Open("C:\Doc3.doc")
'dossier.ecrire_date 'ici que veux tu faire?
dossier.Close True
WordApp.Quit
Set dossier = Nothing
Set WordApp = Nothing
End Sub
Drikce 06
Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas: