J'ai un signet dans une zone de texte que je veux utiliser dans une macro
qui «Atteindrait» ce signet pour y inscrire du texte dans la zone de texte où
il se trouve. Lorsque je déroule le menu Insertion, Signet, il est dans la
liste. Cependant, si je veux l'atteindre avec F5, Signet, Nom du signet, il
n'y est pas.
Comment puis-je dire, simplement, à une macro: «Atteindre» un signet s'il ne
le voit pas parce qu'il est dans une zone de texte?
La ligne d'instruction est simple mais ne fonctionnera pas dans une macro si
Word ne peut atteindre un signet dans une zone de texte. (Ex: Selection.GoTo
What:=wdGoToBookmark, Name:="NomDuSignet"). Que faire?
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
Jean-Guy Marcil
Marie-Michel was telling us: Marie-Michel nous racontait que :
Bonjour,
J'ai un signet dans une zone de texte que je veux utiliser dans une macro qui «Atteindrait» ce signet pour y inscrire du texte dans la zone de texte où il se trouve. Lorsque je déroule le menu Insertion, Signet, il est dans la liste. Cependant, si je veux l'atteindre avec F5, Signet, Nom du signet, il n'y est pas.
Comment puis-je dire, simplement, à une macro: «Atteindre» un signet s'il ne le voit pas parce qu'il est dans une zone de texte?
La ligne d'instruction est simple mais ne fonctionnera pas dans une macro si Word ne peut atteindre un signet dans une zone de texte. (Ex: Selection.GoTo What:=wdGoToBookmark, Name:="NomDuSignet"). Que faire?
Il faut éviter l'objet Selection. Il cause toutes sortes d'ennuis et nous force à faire des détours pour atteindre nos objectifs avec le code. L'objet Range est beaucoup plus flexible, solide et efficace; mais plus difficile à apprendre car l'enregistreur de macros n'utilise pas l'objet Range (qui veut dire "Plage de texte"). Aussi, quand on travaille avec des signets, si tu trouve le signet et remplace le texte, le signet disparait. Ce qui veut dire que le code ne peut qu'être exécuté une seule fois. Je crois que c'est une bonne idée de "sauver" le signet. Le code que je te propopse utilise l'objet Range (ce qui veut dire qu'on a pas besoin de sélectionner quoi que ce soit) et replace le signet une fois le texte remplacé.
'_______________________________________ 'Déclarer les variables et leur type Dim BookMarkName As String Dim BookMarkRange As Range
'Définir le nom du signet BookMarkName = "test" 'Définir le Range de texte représenté par le signet Set BookMarkRange = _ ActiveDocument.Bookmarks(BookMarkName).Range
'Remplacer le texte BookMarkRange.Text = "Nouveau joli texte" 'Recréer le signet ActiveDocument.Bookmarks.Add _ Name:=BookMarkName, Range:=BookMarkRange '_______________________________________
-- Salut! _______________________________________ Jean-Guy Marcil - Word MVP
Word MVP site: http://www.word.mvps.org
Marie-Michel was telling us:
Marie-Michel nous racontait que :
Bonjour,
J'ai un signet dans une zone de texte que je veux utiliser dans une
macro qui «Atteindrait» ce signet pour y inscrire du texte dans la
zone de texte où il se trouve. Lorsque je déroule le menu Insertion,
Signet, il est dans la liste. Cependant, si je veux l'atteindre avec
F5, Signet, Nom du signet, il n'y est pas.
Comment puis-je dire, simplement, à une macro: «Atteindre» un signet
s'il ne le voit pas parce qu'il est dans une zone de texte?
La ligne d'instruction est simple mais ne fonctionnera pas dans une
macro si Word ne peut atteindre un signet dans une zone de texte.
(Ex: Selection.GoTo What:=wdGoToBookmark, Name:="NomDuSignet"). Que
faire?
Il faut éviter l'objet Selection. Il cause toutes sortes d'ennuis et nous
force à faire des détours pour atteindre nos objectifs avec le code. L'objet
Range est beaucoup plus flexible, solide et efficace; mais plus difficile à
apprendre car l'enregistreur de macros n'utilise pas l'objet Range (qui veut
dire "Plage de texte").
Aussi, quand on travaille avec des signets, si tu trouve le signet et
remplace le texte, le signet disparait. Ce qui veut dire que le code ne peut
qu'être exécuté une seule fois. Je crois que c'est une bonne idée de
"sauver" le signet. Le code que je te propopse utilise l'objet Range (ce qui
veut dire qu'on a pas besoin de sélectionner quoi que ce soit) et replace le
signet une fois le texte remplacé.
'_______________________________________
'Déclarer les variables et leur type
Dim BookMarkName As String
Dim BookMarkRange As Range
'Définir le nom du signet
BookMarkName = "test"
'Définir le Range de texte représenté par le signet
Set BookMarkRange = _
ActiveDocument.Bookmarks(BookMarkName).Range
'Remplacer le texte
BookMarkRange.Text = "Nouveau joli texte"
'Recréer le signet
ActiveDocument.Bookmarks.Add _
Name:=BookMarkName, Range:=BookMarkRange
'_______________________________________
--
Salut!
_______________________________________
Jean-Guy Marcil - Word MVP
jmarcilREMOVE@CAPSsympatico.caTHISTOO
Word MVP site: http://www.word.mvps.org
Marie-Michel was telling us: Marie-Michel nous racontait que :
Bonjour,
J'ai un signet dans une zone de texte que je veux utiliser dans une macro qui «Atteindrait» ce signet pour y inscrire du texte dans la zone de texte où il se trouve. Lorsque je déroule le menu Insertion, Signet, il est dans la liste. Cependant, si je veux l'atteindre avec F5, Signet, Nom du signet, il n'y est pas.
Comment puis-je dire, simplement, à une macro: «Atteindre» un signet s'il ne le voit pas parce qu'il est dans une zone de texte?
La ligne d'instruction est simple mais ne fonctionnera pas dans une macro si Word ne peut atteindre un signet dans une zone de texte. (Ex: Selection.GoTo What:=wdGoToBookmark, Name:="NomDuSignet"). Que faire?
Il faut éviter l'objet Selection. Il cause toutes sortes d'ennuis et nous force à faire des détours pour atteindre nos objectifs avec le code. L'objet Range est beaucoup plus flexible, solide et efficace; mais plus difficile à apprendre car l'enregistreur de macros n'utilise pas l'objet Range (qui veut dire "Plage de texte"). Aussi, quand on travaille avec des signets, si tu trouve le signet et remplace le texte, le signet disparait. Ce qui veut dire que le code ne peut qu'être exécuté une seule fois. Je crois que c'est une bonne idée de "sauver" le signet. Le code que je te propopse utilise l'objet Range (ce qui veut dire qu'on a pas besoin de sélectionner quoi que ce soit) et replace le signet une fois le texte remplacé.
'_______________________________________ 'Déclarer les variables et leur type Dim BookMarkName As String Dim BookMarkRange As Range
'Définir le nom du signet BookMarkName = "test" 'Définir le Range de texte représenté par le signet Set BookMarkRange = _ ActiveDocument.Bookmarks(BookMarkName).Range
'Remplacer le texte BookMarkRange.Text = "Nouveau joli texte" 'Recréer le signet ActiveDocument.Bookmarks.Add _ Name:=BookMarkName, Range:=BookMarkRange '_______________________________________
-- Salut! _______________________________________ Jean-Guy Marcil - Word MVP
Word MVP site: http://www.word.mvps.org
Anacoluthe
Bonjour !
'Marie-Michel' nous a écrit ...
J'ai un signet dans une zone de texte que je veux utiliser dans une macro qui «Atteindrait» ce signet pour y inscrire du texte dans la zone de texte où il se trouve. Lorsque je déroule le menu Insertion, Signet, il est dans la liste. Cependant, si je veux l'atteindre avec F5, Signet, Nom du signet, il n'y est pas. Comment puis-je dire, simplement, à une macro: «Atteindre» un signet s'il ne le voit pas parce qu'il est dans une zone de texte? La ligne d'instruction est simple mais ne fonctionnera pas dans une macro si Word ne peut atteindre un signet dans une zone de texte. (Ex: Selection.GoTo What:=wdGoToBookmark, Name:="NomDuSignet"). Que faire?
Nous avons répondu à ça il y a peu : votre méthode GoTo ne permet pas de sortir la sélection de sa 'story' ('article' ou zone de texte continue). Selection.GoTo ne peut pas aller depuis le corps de texte dans un signet d'un entête, un pied de page ou une zone de texte par exemple.
Essayez donc tout simplement : ActiveDocument.Bookmarks("NomduSignet").Select Qu'en pensez-vous ? :-)
Anacoluthe « La vraie question est : pourquoi sélectionner? Et je ne connais pas la réponse. » - Albert JACQUARD
Bonjour !
'Marie-Michel' nous a écrit ...
J'ai un signet dans une zone de texte que je veux utiliser dans une macro
qui «Atteindrait» ce signet pour y inscrire du texte dans la zone de texte où
il se trouve. Lorsque je déroule le menu Insertion, Signet, il est dans la
liste. Cependant, si je veux l'atteindre avec F5, Signet, Nom du signet, il
n'y est pas.
Comment puis-je dire, simplement, à une macro: «Atteindre» un signet s'il ne
le voit pas parce qu'il est dans une zone de texte?
La ligne d'instruction est simple mais ne fonctionnera pas dans une macro si
Word ne peut atteindre un signet dans une zone de texte. (Ex: Selection.GoTo
What:=wdGoToBookmark, Name:="NomDuSignet"). Que faire?
Nous avons répondu à ça il y a peu : votre méthode GoTo
ne permet pas de sortir la sélection de sa 'story'
('article' ou zone de texte continue). Selection.GoTo ne
peut pas aller depuis le corps de texte dans un signet d'un
entête, un pied de page ou une zone de texte par exemple.
Essayez donc tout simplement :
ActiveDocument.Bookmarks("NomduSignet").Select
Qu'en pensez-vous ? :-)
Anacoluthe
« La vraie question est : pourquoi sélectionner?
Et je ne connais pas la réponse. »
- Albert JACQUARD
J'ai un signet dans une zone de texte que je veux utiliser dans une macro qui «Atteindrait» ce signet pour y inscrire du texte dans la zone de texte où il se trouve. Lorsque je déroule le menu Insertion, Signet, il est dans la liste. Cependant, si je veux l'atteindre avec F5, Signet, Nom du signet, il n'y est pas. Comment puis-je dire, simplement, à une macro: «Atteindre» un signet s'il ne le voit pas parce qu'il est dans une zone de texte? La ligne d'instruction est simple mais ne fonctionnera pas dans une macro si Word ne peut atteindre un signet dans une zone de texte. (Ex: Selection.GoTo What:=wdGoToBookmark, Name:="NomDuSignet"). Que faire?
Nous avons répondu à ça il y a peu : votre méthode GoTo ne permet pas de sortir la sélection de sa 'story' ('article' ou zone de texte continue). Selection.GoTo ne peut pas aller depuis le corps de texte dans un signet d'un entête, un pied de page ou une zone de texte par exemple.
Essayez donc tout simplement : ActiveDocument.Bookmarks("NomduSignet").Select Qu'en pensez-vous ? :-)
Anacoluthe « La vraie question est : pourquoi sélectionner? Et je ne connais pas la réponse. » - Albert JACQUARD