g0belin
Messages postés155Date d'inscriptionjeudi 6 décembre 2001StatutMembreDernière intervention19 avril 2010
-
19 avril 2010 à 09:49
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 2015
-
19 avril 2010 à 12:44
Bonjour,
Merci déjà à ceux qui me liront et essayeront de m'aider.
Mon problème est le suivant, je souhaiterai remplacer des caractères spéciaux dans les champs d'un formulaire.
J'ai commencé à me renseigner et j'ai trouvé comment remplacer les caractères mais je suis bloqué à plusieurs autre endroit :
(1) J'ai trouvé qu'il est possible d'exécuter une macro à la sortie d'un champs text. Mais j'aimerai savoir comment récupérer le champs texte dans le quel j'étais afin d'automatiser la procedure pour tous les champs avec une unique macro.
Actuellement je fais comme cela :
ActiveDocument.Bookmarks("champs1").Range.Text = chaine Mais cela me permet uniquement de récupérer la valeur d'un champs en particulier (champs1). Est il possible de faire quelque chose de ce style :
ActiveDocument.ActiveBookmarks.Range.Text = chaine
(2) Une fois que j'ai reussi à editer ma chaine de caractère je souhaiterai effectuer le changement à la sortie du champs avec quelque chose de ce style :
Mais quand je teste, le debuggeur m'averti que ce n'est pas possible car le formulaire est protégé, est il possible d'éditer la valeur entrée par l'utilisateur ?
cs_Jack
Messages postés14006Date d'inscriptionsamedi 29 décembre 2001StatutModérateurDernière intervention28 août 201579 19 avril 2010 à 10:52
Salut
(1) Le seul moyen d'uniformiser la macro pour n'importe quel signet, c'est de fournir le not ou l'index de ce signet, genre :
Sub maMacro(ByRef monSignet As Bookmark)
et d'utiliser monSignet comme objet sur lequel travailler.
Cela sous-entend bien sûr que, au moment de lancer la macro, tu connaisses l'identité du signet et de lancer la mcro sous cette forme :
Call maMacro("Champ1")
Pour info, pour lister tous les signets d'un document :
Dim xxx As Bookmark
For Each xxx In ActiveDocument.Bookmarks
Debug.Print xxx.Range.BookmarkID, xxx.Name, xxx.Range.Text
Next
(2) Non, un document protégé est ... protégé.
Il te faut lever la protection pour pouvoir le modifier.
Extrait de l'aide :
If ActiveDocument.ProtectionType <> wdNoProtection Then
ActiveDocument.Unprotect Password:=strPassword
End If
Vala
Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
g0belin
Messages postés155Date d'inscriptionjeudi 6 décembre 2001StatutMembreDernière intervention19 avril 2010 19 avril 2010 à 11:09
Hello jack merci pour ta réponse rapide, j'aurai besoin d'un petit complément. Dans mon champs "TextFormField" j'ai la possibilité d'appeler une macro à l'entrée et à la sortie du formulaire. Mais est-il possible d'appeler une macro avec des arguments tel que tu l'as décrit précédemment ?
Par exemple [mrprpopre(ActiveField)].
Car les options du champs ont l'air de me proposer que des macros sans arguments. Ce qui est ennuyant.