Bonjour,
Je développe actuellement une application Access qui génère des documents
Word via Automation.
Comme le pied de page de ces documents dépend des données saisies dans
l'application, et est le
même quel que soit le type de document (il en existe une dizaine environ),
j'ai crée une fonction "GenererPiedDePage" qui serait appelée depuis les
fonctions de génération de documents (une fonction par type de document).
Ma fonction donne ça :
Sub GenererPiedDePage(ByVal appWord as Object)
Dim [...]
MsgBox "test"
[...]
End Sub
Dans mes fonctions de gén. de doc, je crée mon instance de Word en utilisant
une variable de type Object, pour avoir le "late binding" qui me permet de
ne pas avoir à mettre la référence à Word dans mon projet, et donc de le
faire marcher avec les différentes versions de Word utilisées par mes
clients.
Donc prenons l'exemple de la commande, la fonction ressemble à ça :
Sub GenererCommande(CommandeID as Long)
Dim appWord as Object
[...]
Set appWord = CreateObject("Word.Application")
[...] <-- Création et remplissage du document, tout va bien
GenererPiedDePage(appWord) <---- Proutch je ramasse une erreur 424 "Objet
requis" avant même de voir le MsgBox "test"
J'ai essayé dans l'appel de remplacer "appWord" par un
GetObject("Word.Application") et là je ramasse une "erreur de syntaxe
Automation" ...
J'ai essayé un appel GenererPiedDePage(CreateObject("Word.Application")) et
là ça passe...
Bref il doit y avoir moyen de passer mon objet appWord, ça doit être tout
bête, mais pour l'instant je n'ai pas eu l'idée qui marche,
et Google ne m'a pour l'instant pas beaucoup avancé...Bref je m'en remets à
votre érudition :)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
Raymond [mvp]
Bonjour.
A mon avis tu n'as pas besoin de passer ton objet Word dans la sub. Pour cela il suffit que ton Dim appWord soit placé dans les déclaratives en début de module et l'objet sera accessible par toutes les sub et fonctions du module. si cet objet est utilisé par plusieurs modules il faudra le placer en public dans un module standard, mais la tâche est un peu plus compliquée pour gérer l'objet et bien souvent n'en vaut pas le coup.
Bonjour, Je développe actuellement une application Access qui génère des documents Word via Automation. Comme le pied de page de ces documents dépend des données saisies dans l'application, et est le même quel que soit le type de document (il en existe une dizaine environ), j'ai crée une fonction "GenererPiedDePage" qui serait appelée depuis les fonctions de génération de documents (une fonction par type de document).
Ma fonction donne ça : Sub GenererPiedDePage(ByVal appWord as Object) Dim [...]
MsgBox "test" [...] End Sub
Dans mes fonctions de gén. de doc, je crée mon instance de Word en utilisant
une variable de type Object, pour avoir le "late binding" qui me permet de ne pas avoir à mettre la référence à Word dans mon projet, et donc de le faire marcher avec les différentes versions de Word utilisées par mes clients.
Donc prenons l'exemple de la commande, la fonction ressemble à ça : Sub GenererCommande(CommandeID as Long) Dim appWord as Object [...] Set appWord = CreateObject("Word.Application") [...] <-- Création et remplissage du document, tout va bien GenererPiedDePage(appWord) <---- Proutch je ramasse une erreur 424 "Objet requis" avant même de voir le MsgBox "test"
J'ai essayé dans l'appel de remplacer "appWord" par un GetObject("Word.Application") et là je ramasse une "erreur de syntaxe Automation" ... J'ai essayé un appel GenererPiedDePage(CreateObject("Word.Application")) et
là ça passe...
Bref il doit y avoir moyen de passer mon objet appWord, ça doit être tout bête, mais pour l'instant je n'ai pas eu l'idée qui marche, et Google ne m'a pour l'instant pas beaucoup avancé...Bref je m'en remets à
votre érudition :)
Bonjour.
A mon avis tu n'as pas besoin de passer ton objet Word dans la sub. Pour
cela il suffit que ton Dim appWord soit placé dans les déclaratives en début
de module et l'objet sera accessible par toutes les sub et fonctions du
module. si cet objet est utilisé par plusieurs modules il faudra le placer
en public dans un module standard, mais la tâche est un peu plus compliquée
pour gérer l'objet et bien souvent n'en vaut pas le coup.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum
"Alex" <Alex@nospam.com> a écrit dans le message de
news:ummBUqo3DHA.488@TK2MSFTNGP12.phx.gbl...
Bonjour,
Je développe actuellement une application Access qui génère des documents
Word via Automation.
Comme le pied de page de ces documents dépend des données saisies dans
l'application, et est le
même quel que soit le type de document (il en existe une dizaine environ),
j'ai crée une fonction "GenererPiedDePage" qui serait appelée depuis les
fonctions de génération de documents (une fonction par type de document).
Ma fonction donne ça :
Sub GenererPiedDePage(ByVal appWord as Object)
Dim [...]
MsgBox "test"
[...]
End Sub
Dans mes fonctions de gén. de doc, je crée mon instance de Word en
utilisant
une variable de type Object, pour avoir le "late binding" qui me permet de
ne pas avoir à mettre la référence à Word dans mon projet, et donc de le
faire marcher avec les différentes versions de Word utilisées par mes
clients.
Donc prenons l'exemple de la commande, la fonction ressemble à ça :
Sub GenererCommande(CommandeID as Long)
Dim appWord as Object
[...]
Set appWord = CreateObject("Word.Application")
[...] <-- Création et remplissage du document, tout va bien
GenererPiedDePage(appWord) <---- Proutch je ramasse une erreur 424 "Objet
requis" avant même de voir le MsgBox "test"
J'ai essayé dans l'appel de remplacer "appWord" par un
GetObject("Word.Application") et là je ramasse une "erreur de syntaxe
Automation" ...
J'ai essayé un appel GenererPiedDePage(CreateObject("Word.Application"))
et
là ça passe...
Bref il doit y avoir moyen de passer mon objet appWord, ça doit être tout
bête, mais pour l'instant je n'ai pas eu l'idée qui marche,
et Google ne m'a pour l'instant pas beaucoup avancé...Bref je m'en remets
à
A mon avis tu n'as pas besoin de passer ton objet Word dans la sub. Pour cela il suffit que ton Dim appWord soit placé dans les déclaratives en début de module et l'objet sera accessible par toutes les sub et fonctions du module. si cet objet est utilisé par plusieurs modules il faudra le placer en public dans un module standard, mais la tâche est un peu plus compliquée pour gérer l'objet et bien souvent n'en vaut pas le coup.
Bonjour, Je développe actuellement une application Access qui génère des documents Word via Automation. Comme le pied de page de ces documents dépend des données saisies dans l'application, et est le même quel que soit le type de document (il en existe une dizaine environ), j'ai crée une fonction "GenererPiedDePage" qui serait appelée depuis les fonctions de génération de documents (une fonction par type de document).
Ma fonction donne ça : Sub GenererPiedDePage(ByVal appWord as Object) Dim [...]
MsgBox "test" [...] End Sub
Dans mes fonctions de gén. de doc, je crée mon instance de Word en utilisant
une variable de type Object, pour avoir le "late binding" qui me permet de ne pas avoir à mettre la référence à Word dans mon projet, et donc de le faire marcher avec les différentes versions de Word utilisées par mes clients.
Donc prenons l'exemple de la commande, la fonction ressemble à ça : Sub GenererCommande(CommandeID as Long) Dim appWord as Object [...] Set appWord = CreateObject("Word.Application") [...] <-- Création et remplissage du document, tout va bien GenererPiedDePage(appWord) <---- Proutch je ramasse une erreur 424 "Objet requis" avant même de voir le MsgBox "test"
J'ai essayé dans l'appel de remplacer "appWord" par un GetObject("Word.Application") et là je ramasse une "erreur de syntaxe Automation" ... J'ai essayé un appel GenererPiedDePage(CreateObject("Word.Application")) et
là ça passe...
Bref il doit y avoir moyen de passer mon objet appWord, ça doit être tout bête, mais pour l'instant je n'ai pas eu l'idée qui marche, et Google ne m'a pour l'instant pas beaucoup avancé...Bref je m'en remets à
votre érudition :)
Alex
Merci pour le conseil, je vais essayer ! Ah au fait la solution de mon problème était de faire l'appel sans parenthèses... ("GenererPiedDePage appWord" au lieu de "GenererPiedDePage(appWord)")
"Raymond [mvp]" a écrit dans le message de news:
Bonjour.
A mon avis tu n'as pas besoin de passer ton objet Word dans la sub. Pour cela il suffit que ton Dim appWord soit placé dans les déclaratives en début
de module et l'objet sera accessible par toutes les sub et fonctions du module. si cet objet est utilisé par plusieurs modules il faudra le placer en public dans un module standard, mais la tâche est un peu plus compliquée
pour gérer l'objet et bien souvent n'en vaut pas le coup.
Merci pour le conseil, je vais essayer !
Ah au fait la solution de mon problème était de faire l'appel sans
parenthèses...
("GenererPiedDePage appWord" au lieu de "GenererPiedDePage(appWord)")
"Raymond [mvp]" <XYZ.access.seneque@free.fr> a écrit dans le message de
news:uugFEwo3DHA.536@tk2msftngp13.phx.gbl...
Bonjour.
A mon avis tu n'as pas besoin de passer ton objet Word dans la sub. Pour
cela il suffit que ton Dim appWord soit placé dans les déclaratives en
début
de module et l'objet sera accessible par toutes les sub et fonctions du
module. si cet objet est utilisé par plusieurs modules il faudra le placer
en public dans un module standard, mais la tâche est un peu plus
compliquée
pour gérer l'objet et bien souvent n'en vaut pas le coup.
--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum
Merci pour le conseil, je vais essayer ! Ah au fait la solution de mon problème était de faire l'appel sans parenthèses... ("GenererPiedDePage appWord" au lieu de "GenererPiedDePage(appWord)")
"Raymond [mvp]" a écrit dans le message de news:
Bonjour.
A mon avis tu n'as pas besoin de passer ton objet Word dans la sub. Pour cela il suffit que ton Dim appWord soit placé dans les déclaratives en début
de module et l'objet sera accessible par toutes les sub et fonctions du module. si cet objet est utilisé par plusieurs modules il faudra le placer en public dans un module standard, mais la tâche est un peu plus compliquée
pour gérer l'objet et bien souvent n'en vaut pas le coup.