Appeler une fonction privée d' un document Word

Résolu
Cram_n7 Messages postés 4 Date d'inscription lundi 19 mars 2007 Statut Membre Dernière intervention 19 mars 2007 - 19 mars 2007 à 15:59
Cram_n7 Messages postés 4 Date d'inscription lundi 19 mars 2007 Statut Membre Dernière intervention 19 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.

Pouvez-vous m' aider svp ?

Merci d' avance.

7 réponses

Cram_n7 Messages postés 4 Date d'inscription lundi 19 mars 2007 Statut Membre Dernière intervention 19 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.

En tout cas merci pour ton aide :)
3
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
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:
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
19 mars 2007 à 16:28
De plus une Sub suffit pas besoin de faire une fonction, une fonction sert à retourner quelque chose.

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
Cram_n7 Messages postés 4 Date d'inscription lundi 19 mars 2007 Statut Membre Dernière intervention 19 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.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Cram_n7 Messages postés 4 Date d'inscription lundi 19 mars 2007 Statut Membre Dernière intervention 19 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 ...
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
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:
0
drikce06 Messages postés 2236 Date d'inscription lundi 29 mai 2006 Statut Membre Dernière intervention 29 mai 2008 10
19 mars 2007 à 16:40
C'est sur quelle ligne de code qu'il te met l'erreur?

 Drikce 06

Si la réponse vous convient: Réponse acceptée. Si la réponse vous convient pas:
0
Rejoignez-nous