Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Re : Re: insertion de textes par boites de dialogue

2 réponses
Avatar
Guido
Bonsoir Gloops,

je te remercie pour l'int=E9r=EAt =E0 ma question et concernant les syst=E8=
mes utilis=E9s : =E0 la maison Office 2010 Entreprise et au boulot Office 2=
003 pro.

Ce que tu d=E9cris est bien ce que je d=E9sirerai faire (surtout pour mon b=
oulot). Je trouve r=E9ellement fastidieux le fait de devoir constamment cor=
riger/ajouter =E0 certains endroits pr=E9cis, des morceaux de textes (chois=
is) comme tu le mentionnes. Surtout s'il faut =E0 chaque fois chercher les =
endroits avec la souris et retranscrire deux =E0 trois fois les m=EAmes mot=
s dans le m=EAme texte. La transcription sur ma feuille (Document1.doc) via=
les champs et boites d'invite me paraissait g=E9niale.

Pour expliquer, j'ai quelques fichiers qui me servent de mod=E8les (*.dot) =
et auxquels je d=E9sire am=E9liorer le syst=E8me de saisie individuel pour =
chaque lettre que je devrai produire. Elles sont g=E9n=E9ralement, toujours=
effectu=E9es dans un m=EAme genre de canevas, donc d=E9j=E0 =E9crites. Ne =
reste plus qu'=E0 effectuer les rajouts et correctifs individuels minimes, =
Adresse , No de r=E9f=E9rence, l'appel, etc...

J'avais trouver la commande FILLIN comme une alternative et gr=E2ce =E0 ces=
bo=EEtes d'invites, c'est d=E9j=E0 un pas en avant pour moi. Mais, je dois=
avouer, que je sais pas toujours utiliser la multitude de commandes et aut=
res possibilit=E9s. Par exemple, recopier automatiquement les donn=E9es de =
l'adresse du destinataire =E0 diff=E9rents endroits de la feuille. Cr=E9er =
une base de donn=E9es Adresse, qui selon un chiffre me permettrait de reche=
rcher cette adresse unique selon son num=E9ro et qu'elle s'inscrive toute s=
eule (pas en publipostage)

Autre exemple : La commande ASK, (qui =E0 ce que j'ai compris) me permettra=
it de reprendre les informations ins=E9r=E9es par ma boite d'invite dans l'=
adresse du destinataire. Mais, je n'arrive pas =E0 lier le texte "Monsieur"=
de l'adresse avec "Monsieur" dans l'appel ou les salutations. Je devrais =
=E9galement prendre les infos du nom et pr=E9nom et les recopier automatiqu=
ement (mais chacun individuellement) =E0 diff=E9rents endroits du texte. Do=
nc, je n'ai probablement pas r=E9ussi =E0 saisir une subtilit=E9 dans l'aid=
e MSOffice.

Si tu sais m'aiguiller, c'est sympa et encore merci.

Guido

2 réponses

Avatar
Gloops
Guido a écrit, le 31/05/2011 21:29 :
Bonsoir Gloops,

je te remercie pour l'intérêt à ma question et concernant les sys tèmes utilisés : à la maison Office 2010 Entreprise et au boulot Of fice 2003 pro.

Ce que tu décris est bien ce que je désirerai faire (surtout pour m on boulot). Je trouve réellement fastidieux le fait de devoir constamme nt corriger/ajouter à certains endroits précis, des morceaux de texte s (choisis) comme tu le mentionnes. Surtout s'il faut à chaque fois che rcher les endroits avec la souris et retranscrire deux à trois fois les mêmes mots dans le même texte. La transcription sur ma feuille (Docu ment1.doc) via les champs et boites d'invite me paraissait géniale.

Pour expliquer, j'ai quelques fichiers qui me servent de modèles (*.d ot) et auxquels je désire améliorer le système de saisie individuel pour chaque lettre que je devrai produire. Elles sont généralement, toujours effectuées dans un même genre de canevas, donc déjà éc rites. Ne reste plus qu'à effectuer les rajouts et correctifs individue ls minimes, Adresse , No de référence, l'appel, etc...

J'avais trouver la commande FILLIN comme une alternative et grâce à ces boîtes d'invites, c'est déjà un pas en avant pour moi. Mais, j e dois avouer, que je sais pas toujours utiliser la multitude de commande s et autres possibilités. Par exemple, recopier automatiquement les don nées de l'adresse du destinataire à différents endroits de la feuil le. Créer une base de données Adresse, qui selon un chiffre me permet trait de rechercher cette adresse unique selon son numéro et qu'elle s' inscrive toute seule (pas en publipostage)

Autre exemple : La commande ASK, (qui à ce que j'ai compris) me perme ttrait de reprendre les informations insérées par ma boite d'invite d ans l'adresse du destinataire. Mais, je n'arrive pas à lier le texte "M onsieur" de l'adresse avec "Monsieur" dans l'appel ou les salutations. Je devrais également prendre les infos du nom et prénom et les recopier automatiquement (mais chacun individuellement) à différents endroits du texte. Donc, je n'ai probablement pas réussi à saisir une subtili té dans l'aide MSOffice.

Si tu sais m'aiguiller, c'est sympa et encore merci.

Guido



Bonjour,

(ah, curieusement, un nouveau fil a été ouvert ...)

Hum, à ce que je me rappelle, ASK, non, c'est un champ qui est utilisé
dans le cadre des fusions/publipostages, pour demander de saisir
enregistrement par enregistrement un champ qui ne se trouve pas dans la
base de données. Donc, en dehors d'un publipostage, il ne fera rien. ç a
fait un paquet d'années que j'ai lu ça, si je me trompe il y aura bie n
quelqu'un pour corriger.

Si on veut utiliser des champs, peut-être le champ Fill-in (remplir)
correspond-il plus à ce que tu veux faire. Je te rappelle qu'avec les
touches Alt F9, on peut faire la bascule entre l'affichage des codes des
champs et leurs contenus. ça peut être précieux pour visualiser un champ
qui ne contient rien pendant la conception.

Toutefois, je précise que je n'ai pas réussi à arriver au bout de c ette
piste : le texte est inséré après le signet, donc le champ REF, qui
permet de reproduire son contenu, reproduit ... un champ vide.

Je n'ose pas renvoyer à l'aide en ligne, car elle n'est plus toujours c e
qu'elle était.

Alors pour creuser la question des champs je proposerais bien un coup
d'œil là :

http://heureuxoli.developpez.com/office/word/champs/

On déclenche l'activation d'un champ sélectionné par la touche F9.
Bon, comme je ne suis pas arrivé au bout de la piste, je m'en tiens là .

*

Une autre possibilité d'insérer du texte après saisie, c'est la boî te de
dialogue. Si on utilise une boîte de dialogue, il faudra aussi créer des
signets aux endroits où le texte devra être inséré. Pour visualis er les
signets, on a une case à cocher dans Outils / Options, onglet Affichage .
Dans la même boîte de dialogue, il m'a aussi fallu cocher les marques de
formats (j'ai coché "Tous" histoire de ne pas ma compliquer la vie ;
peut-être qu'on peut affiner).



Là en ce moment ce que j'ai sous la main c'est la version 2002, je ne
sais pas jusqu'à quel point ça donne quelque chose de compatible avec la
version 2010.

En 2002, pour créer une boîte de dialogue, il faut aller dans l'édi teur
VBA (avec les touches Alt F11), et dans la fenêtre Projet, qui est par
défaut à gauche, faire un clic droit sur le projet qu'on souhaite
modifier, cliquer sur Insertion, puis sur UserForm. Dans d'autres
versions, il me semble que la fenêtre projet s'appelle Explorateur de
Solutions. Certaines versions la proposent par défaut à droite.

On va commencer par mettre dans cette nouvelle boîte de dialogue une
zone de texte et un bouton de commande, en cliquant sur les icônes
correspondantes dans la boîte à outils, et ensuite on obtient un curs eur
comportant une croix, qu'il faut faire glisser d'un coin à l'autre de
l'emplacement souhaité.

Reste à double-cliquer sur le bouton, pour se retrouver dans son code.
Par défaut il s'appelle CommandButton1, et admettons qu'auparavant on a
créé un signet qui s'appelle Test, sur lequel on souhaite positionner le
texte qu'on vient de saisir.

Private Sub CommandButton1_Click()
ActiveDocument.Bookmarks("Test").Range.Text = Me.TextBox1.Text
End Sub

Pour le reste il s'agit de s'inspirer de ça.

A noter que là aussi le signet, après l'instruction indiquée, se tr ouve
placé au début du texte inséré. Si on relance ultérieurement un e
insertion de la même manière, le nouveau texte viendra se placer avan t
celui qui a été inséré précédemment. On peut repositionner le signet
pour éviter ça mais il y a plus de boulot. En fait à ce que je me
rappelle il s'agirait de supprimer le signet et le recréer.

Le champ REF, pour cette raison, ne donnera rien de fameux dans ce contex te.

Ce n'est pas gênant, il suffira de reporter autant de fois que souhaité
le texte de la zone de saisie de la boîte de dialogue, directement.

ActiveDocument.Bookmarks("IntroSlts").Range.Text = Me.Salutation.Text
ActiveDocument.Bookmarks("SltsFin").Range.Text = Me.Salutation.Text
ActiveDocument.Bookmarks("Autre").Range.Text = Me.Salutation.Text

(Pour faire ça j'invite à avoir au préalable créé manuellement les
signets IntroSlts, SltsFin, et Autre.)

Le code ci-dessus est placé dans le module de la boîte de dialogue, b ien
entendu, puisque Me signifie le module courant.


Ne pas oublier une dernière instruction :
Unload Me

de façon que la boîte de dialogue se ferme.



Pour lancer la boîte de dialogue il faudra écrire une macro à cet e ffet
(dans un module ; pas le sien).
La macro contiendra le nom de la boîte de dialogue, par exemple
UserForm1, suivi de .Show

Par exemple :

Public Sub LancerBoite()
UserForm1.Show
End Sub

Ainsi, dans le document, on pourra lancer la boîte avec Alt F8, puis
sélectionner LancerBoite et presser Entrée. On peut aussi utiliser le s
commandes de personnalisation pour créer un bouton ou un raccourci
clavier. Toutefois dans le contexte visé on ira sur le module Document
du nouveau modèle, et on placera l'instruction UserForm1.Show dans la
procédure Document_New(). Enfin ça, on le fera une fois arrivé à un
certain point du débogage, bien entendu.

Là, j'ai traité la question de saisir un texte dans une boîte de
dialogue, et l'insérer à différents endroits du document.

Je propose de vérifier qu'il n'y a pas de difficulté particulière d e
mise en œuvre, avant de s'occuper de réfléchir aux différents typ es de
documents, voir si il vaut mieux créer un modèle pour chacun, ou les
générer tous à partir du même modèle.
Avatar
Gloops
Guido a écrit, le 31/05/2011 21:29 :
Bonsoir Gloops,

je te remercie pour l'intérêt à ma question et concernant les sys tèmes utilisés : à la maison Office 2010 Entreprise et au boulot Of fice 2003 pro.

Ce que tu décris est bien ce que je désirerai faire (surtout pour m on boulot). Je trouve réellement fastidieux le fait de devoir constamme nt corriger/ajouter à certains endroits précis, des morceaux de texte s (choisis) comme tu le mentionnes. Surtout s'il faut à chaque fois che rcher les endroits avec la souris et retranscrire deux à trois fois les mêmes mots dans le même texte. La transcription sur ma feuille (Docu ment1.doc) via les champs et boites d'invite me paraissait géniale.

Pour expliquer, j'ai quelques fichiers qui me servent de modèles (*.d ot) et auxquels je désire améliorer le système de saisie individuel pour chaque lettre que je devrai produire. Elles sont généralement, toujours effectuées dans un même genre de canevas, donc déjà éc rites. Ne reste plus qu'à effectuer les rajouts et correctifs individue ls minimes, Adresse , No de référence, l'appel, etc...

J'avais trouver la commande FILLIN comme une alternative et grâce à ces boîtes d'invites, c'est déjà un pas en avant pour moi. Mais, j e dois avouer, que je sais pas toujours utiliser la multitude de commande s et autres possibilités. Par exemple, recopier automatiquement les don nées de l'adresse du destinataire à différents endroits de la feuil le. Créer une base de données Adresse, qui selon un chiffre me permet trait de rechercher cette adresse unique selon son numéro et qu'elle s' inscrive toute seule (pas en publipostage)

Autre exemple : La commande ASK, (qui à ce que j'ai compris) me perme ttrait de reprendre les informations insérées par ma boite d'invite d ans l'adresse du destinataire. Mais, je n'arrive pas à lier le texte "M onsieur" de l'adresse avec "Monsieur" dans l'appel ou les salutations. Je devrais également prendre les infos du nom et prénom et les recopier automatiquement (mais chacun individuellement) à différents endroits du texte. Donc, je n'ai probablement pas réussi à saisir une subtili té dans l'aide MSOffice.

Si tu sais m'aiguiller, c'est sympa et encore merci.

Guido



Finalement avec les champs ce n'était pas si dur.
Donc c'est une voie différente, ici on aura une boîte de saisie
différente pour chaque champ à renseigner. Si il y en a plusieurs, ce
sera certainement plus commode pour l'utilisateur d'avoir affaire à une
boîte de dialogue avec tous les champs.

En revanche c'est plus facile, plus rapide, de placer trois champs que
de monter une boîte de dialogue et de la coder ensuite, alors je donne
aussi le processus pour l'utilisation des champs.

Alors Fill-in et Ask sont deux champs servant aux publipostages, mais il
s'avère qu'on peut aussi s'en servir autrement.

Lorsqu'on insère un champ ASK, le nom de signet qu'on précise dans la
boîte de dialogue de création sert à créer un signet sous ce nom, si il
y en avait déjà un il est supprimé.

Contrairement à Fill-In, avec ASK le texte n'est pas inséré dans le
document de façon visible, mais seulement dans le signet. Le champ REF
sert à le faire apparaître, l'avantage étant que rien n'empêche d 'en
mettre plusieurs.

Au départ la différence entre ASK et Fill-in, c'est que ASK demande u ne
valeur à chaque enregistrement de la source de données, alors que
Fill-in n'en demande qu'une en début de traitement, et elle est
reproduite à chaque enregistrement. Ici nous n'envisageons pas de fusio n
de données, donc cet aspect nous est un peu égal.

Il y a une autre différence entre les deux, c'est la gestion du signet,
qui fait que c'est plus commode d'utiliser ASK dans cet objectif que
Fill-In.

En insérant par le menu un champ ASK et deux champs REF y faisant
référence, on obtient, en mode de visualisation des codes de champs ( sur
lequel on passe par Alt F9) ce qui suit. On peut taper la même chose au
clavier à condition d'obtenir les paires d'accolades non pas par AltGr 4
suivi de AltGr +, mais par Ctrl F9.

{ ASK Test "Quel texte ?" d Aucun * MERGEFORMAT }

{ REF Test }

{ REF Test }

Une fois que les champs sont en place, on peut quitter le mode
d'affichage des codes de champs (par Alt F9), sélectionner tout le
document par Ctrl A, et lancer l'exécution des champs par la touche F9.

On voit alors apparaître une boîte de dialogue qui demande "Quel text e
?", et qui répond par défaut "Aucun".

Attention, si on presse Entrée, ça efface le contenu de la zone de
saisie, puisque tout est sélectionné (ce champ permet de saisir un te xte
comportant plusieurs lignes). Si on veut valider au clavier, il faut
d'abord sélectionner le bouton OK en pressant Tabulation. Ensuite, la
touche Entrée permet de valider. Il est possible aussi de valider à l a
souris, il suffit de cliquer sur OK, pas de commentaire particulier.

Une fois que c'est fait, le texte qui était dans la zone de saisie
apparaît à l'emplacement de chacun des champs REF qui reprennent le m ême
nom de signet.

On peut appliquer le même principe à d'autres données avec d'autres noms
de signets, comme je le disais au début l'utilisateur verra s'ouvrir
successivement autant de boîtes de saisie.