|
Publicité ' | ||||||||||||||||||||||
|
|
#1 |
|
Invité régulier
![]() Inscription : octobre 2005 Messages : 40 ![]() |
Bonjour,
Dans un modèle, j'ai une procédure exécutée à la création d'un nouveau document qui ouvre un autre document (en l'occurence un modèle) et exécute une procédure d'un module défini dans ce dernier document. Le but cherché (sic...) est de faire de l'héritage de modèle et d'y inclure bookmark, champs, etc... J'utilise pour ce faire les vbcomponents afin de référencer correctement le module et la fonction "callbyname" pour exécuter la procédure. A l'exécution, l'interpréteur me dit que le code n'existe pas. Une idée pour me dépanner? Merci d'avance et cordiales salutations OW |
|
|
00
|
|
|
#2 |
|
Inactif
Inscription : février 2005 Messages : 12 466 ![]() |
Ta ligne de code, peut-être ? Juste pour qu'on voit
|
|
|
00
|
|
|
#3 |
|
Invité régulier
![]() Inscription : octobre 2005 Messages : 40 ![]() |
Salut,
je poste un bout de code dès demain matin, du bureau... Merci en tous cas de ton intérêt et de ton aide. Bonne soirée. OW |
|
|
00
|
|
|
#4 | ||
|
Invité régulier
![]() Inscription : octobre 2005 Messages : 40 ![]() |
Voilà le bout de code en question:
Code :
|
||
|
|
00
|
|
|
#5 | ||
|
Inactif
Inscription : février 2005 Messages : 12 466 ![]() |
Est-tu certain de l'utilisation que tu fais de CallByName ?
Si tu veux exécuter une macro placée dans un modèle, fais un test avec Application.run. Regarde dans l'aide. Pour une macro nommée Aperçu, placée dans le module NewMacro1, dans le fichier Normal.dot, ces deux syntaxes fonctionnent Code :
|
||
|
|
00
|
|
|
#6 | ||||
|
Invité régulier
![]() Inscription : octobre 2005 Messages : 40 ![]() |
Salut Ouskel'n'or et merci.
La solution avec Application.run fonctionne en prenant garde de référencer correctement le projet...Des fois, je m'en veux! Pour continuer la discussion, je ne parviens pas à passer des paramètres à la méthode appelée: Voici l'appel: Code :
Code :
Merci encore de ton aide. OW |
||||
|
|
00
|
|
|
#7 |
|
Inactif
Inscription : février 2005 Messages : 12 466 ![]() |
Je ne sais pas si ça va t'aider mais j'ai lu ça, tu peux toujours y jeter un oeil mais je ne sais pas si j'ai bien compris ta question.
Pour les paramètres, je ne l'ai jamais fait dans Word. Tu as regardé dans l'aide, à run ? A+ Edit Si c'est pour activer une référence, regarde à Addins dans l'aide, je ne pourrais pas te l'expliquer mieux. Bref, je n'ai pas compris Edit2 Si, j'ai finalement compris mais là je ne sais pas. |
|
|
00
|
|
|
#8 |
|
Invité régulier
![]() Inscription : octobre 2005 Messages : 40 ![]() |
Salut,
merci de ta réponse. Effectivement, le lien que tu me conseilles ne correspond pas exactement à ce que je cherche. A mon avis, le problème n'est pas précisément lié à Word mais à VB. Dans le principe, j'essaie d'appeler une procédure ayant des paramètres déclarés par référence. Code :
public Sub test(ByRef param1 as String)... En dehors de cette question, même le passage par valeur ne fonctionne pas. Peut-être s'agit-il de l'appel lui-même qui est faux Code :
Application.run "Project1.Module1.test", "toto" Une idée? Bonne journée. OW |
|
|
00
|
|
|
#9 | ||
|
Inactif
Inscription : février 2005 Messages : 12 466 ![]() |
As-tu essayé
Code :
|
||
|
|
00
|
|
|
#10 |
|
Invité régulier
![]() Inscription : octobre 2005 Messages : 40 ![]() |
Essais non transformés...Est-ce que cela fonctionne chez toi?
|
|
|
00
|
|
|
#11 |
|
Inactif
Inscription : février 2005 Messages : 12 466 ![]() |
Non, je n'ai pas testé. C'était à tout hasard puisque tu avais testé les autres syntaxes
|
|
|
00
|
|
|
#12 |
|
Invité régulier
![]() Inscription : octobre 2005 Messages : 40 ![]() |
Voilà, voilà...que de sueur!
La solution réside en effet dans les addins sur lesquels j'étais passé trop vite et dont je n'avais pas bien compris l'utilité. Merci à toi ouskel'n'or et à charge de revanche Cordialement, OW |
|
|
00
|
|
|
#13 |
|
Inactif
Inscription : février 2005 Messages : 12 466 ![]() |
Si tu pouvais indiquer quelle macro complémentaire a résolu le pb, ce serait tout à fait parfait
|
|
|
00
|
|
|
#14 |
|
Invité régulier
![]() Inscription : octobre 2005 Messages : 40 ![]() |
Salut le monde en général, salut Ousk' en particulier,
je m'étais sans doute emballé un peu... Après avoir creusé la chose, je constate que: - Les addins répondent bien au problème d'importer des méthodes dans un code VB existant et par conséquent de pouvoir appeler ce code en y passant des variables; - Les addins n'autorisent pas la définition de bookmarks, styles, etc... éléments que je suis sensé devoir importer dans le document appelant. En conclusion, retour à la case départ... J'ai maintenant revisé mes ambitions à la baisse et vais simplement depuis mon document de base: - ouvrir une template (voir post dans word) et insérer dans le code de la sub document_new, l'appel à la première UserForm en vue de compléter les champs de la couche active; - copier la couche dans le document parent; ça enlève passablement de possibilité et de réutilisabilité mais je m'en contenterai. Suis volontiers à dispo pour discuter de ce projet qui, à mon avis, à un certain intérêt. Merci, Ousk, de ton aide et au plaisir de te lire. OW |
|
|
00
|
|
|
#15 |
|
Inactif
Inscription : février 2005 Messages : 12 466 ![]() |
Hello owsion,
Ton problème sortant des sentiers battus, il m'intéresse. Ce serait dommage d'en rester là... J'ai donc eu une idée. Puisque tu cherches à exécuter une macro dans word depuis ton code, qu'on ne peut lancer une macro que si ton document est ouvert, je pense que tu as créé une instance sous word. Auquel cas, une variable crée dans Word peut parfaitement prendre la valeur d'une variable crée dans l'appli qui lance la macro. Avant que je me lance dans le code (que tu as certainement en magasin - instanciation, ouverture du fichier, etc.) cette solution te conviendrait-elle ? J'ai fait ça dans Excel, si le coeur t'en dit... A+ |
|
|
00
|
|
|
#16 |
|
Invité régulier
![]() Inscription : octobre 2005 Messages : 40 ![]() |
Salut Ousk,
merci bcp de ton intérêt à mon problème. Je me permets de te décrire de façon je l'espère complète, la situation: Contexte: ======= Je travaille dans une entreprise qui a la fâcheuse tendance à changer de charte graphique assez fréquemment, notamment pour ce qui concerne les entêtes, pieds de pages, styles, etc... Constatant l'impossibilité de mettre à jour en bloc les modèles issus d'un même modèle de base (ce qu'on aurait peut-être pu attendre de Word...), l'idée me vint de découper les documents Word en couche dont l'une devant contenir les styles. Application: ======== Un modèle de base a pour charge de, sur la base d'un fichier de configuration décrivant les couches à importer, de: - Mettre à jour les styles définis dans le document de style adhoc; - Importer chaque couche dans le document final. Pour corser le sujet, les couches contiennent des signets et des variables de document. Les variables de doc sont mises à jour depuis le fichier de config alors que l'idée était, dans le doc de base, de générer un masque de saisie pour les signets. Note: J'ai tenté par ce biais de limiter au maximum les possibilités laissées à l'utilisateur final de modifier la forme des documents, chacun y allant de sa petite cuisine perso... Je suis surpris que personne n'aie jamais été confronté à ce problème et attend donc avec impatience tout aide que tu voudras bien me fournir. Merci d'avance et à bientôt. OW |
|
|
00
|
|
|
#17 | |
|
Inactif
Inscription : février 2005 Messages : 12 466 ![]() |
Citation:
De mon point de vue à moi, et pour avoir été confronté à la dure réalité de gérer une charte de présentation des documents, la solution consistant à limiter les possibilités de Word aux utilisateurs n'est pas la bonne solution. Nous avons (à peu près) résolu le pb sur plus de cinq-cents postes en définissant pour word les répertoires des modèles des utilisateurs sur serveur. Chaque utilisateur ayant son propre répertoire, les besoins n'étant pas les mêmes selon les services. Ceci fait, une mise à jour périodique de ces modèles et une note de service "imposant" la charte, ont vite découragé les utilisateurs de modifier les modèles. Le seul pb est alors d'empêcher les utilisateurs d'enregistrer les modifs dans les modèles. Cette solution n'empêche pas celui qui connaît de modifier les répertoires par défaut, mais j'ai toujours considéré que "ce petit malin", s'il sait faire ça, saura de toute façon blouser le système aussi élaboré soit-il puisqu'il est clair qu'il en a la volonté et du temps à perdre. Par contre, un utilisateur qui ne peut utiliser une fonctionnalité de Word alors qu'il la connaît, et l'a déjà utilisée chez lui, se sent brimé. Et ça je le comprends. Nous avions tenté l'expérience mais il n'a pas fallu six mois pour faire marche arrière devant les plaintes de la plupart des services. Ceci dit, je ne connais pas le contexte... C'est donc toi qui vois. Bon... pour la dernière solution que je t'ai proposée, faut oublier, elle ne répondait pas à ton "cahier des charges" A+ Edit J'allais oublier : Bon courage |
|
|
|
00
|
|
|
#18 |
|
Invité régulier
![]() Inscription : octobre 2005 Messages : 40 ![]() |
Re Ousk,
j'approuve la quasi totalité de tes commentaires: ça m'étonnerait assez peu que nous ayons le même type de boulot! Un seul point que j'aimerais compléter: - Les utilisateurs sont, pour la plupart, peu voire très peu expérimentés. Ils ignorent bien souvent la différence entre un modèle et un document. Pour preuve, le copier-coller est la pratique la plus courante, avec les risques d'erreur que cela représente: oubli de modifier un élément, écrasement du document source, etc...S'agissant de document légaux, ce genre d'erreur est inadmissible et peut impliquer des conséquences graves. Heureusement (ou en conséquence...), le chef relit tout. - Comme tu le dis justement, rien ni personne n'empêchera le petit malin de sortir du chemin tracé. Toutefois, la mise en place de pareils outils (visant à simplifier le travail de la majorité) permet d'exiger une certaine rigueur. J'ai, je dois dire, l'avantage de travailler pour une société relativement 'militaire' et hiérarchisée où les moyens de pression sont encore possibles. Voilà, je te tiendrai au courant de la mise en application. Je n'y joue, par chance, pas ma tête Avec mes cordiales salutations helvétiques. OW |
|
|
00
|
Copyright © 2000-2012 - www.developpez.com