Salut à tous.
J'ai des signets dont le texte est déterminé par un
.Bookmark("MonSignet").Range.Text = "Texte de mon signet"
Jusque là , tout baigne.
Etant donné que je dois reproduire ce texte ailleurs qu'à l'endroit du
signet dans mon document, j'ai introduit à ces endroits un
Insertion/champs/ref/MonSignet, qui s'affiche comme il se doit avec shiftF9
{ REF MonSignet}.
Problème, quand je lance ma macro et que je fais un enregistrer sous de mon
doc, ou que je l'imprime, les champs {} deviennent Erreur ! Source de renvoi
introuvable.
Et je m'arrache les cheveux...
Merci de votre aide.
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
Anacoluthe
Bonjour !
'Gadget' nous a écrit ...
J'ai des signets dont le texte est déterminé par un .Bookmark("MonSignet").Range.Text = "Texte de mon signet" Jusque là , tout baigne. Problème, quand je lance ma macro et que je fais un enregistrer sous de mon doc, ou que je l'imprime, les champs {} deviennent Erreur ! Source de renvoi introuvable.
Votre macro place le texte au signet mais DÉTRUIT le signet !
C'est une erreur hyperclassique en VBA Word qui s'explique assez bien avec la structure double des signets à la fois emplacements dans le document et conteneurs variables de texte.
Utilisez une procédure de ce type :
Public Sub RemplirSignet(S As String, T As String) ' Remplit le signet S avec le texte T sans supprimer S On Error GoTo rien ' au cas où S n'existe pas ! Dim Place As Long Place = ActiveDocument.Bookmarks(S).Range.Start ActiveDocument.Bookmarks(S).Range.Text = T ActiveDocument.Bookmarks.Add Name:=S, _ Range:¬tiveDocument.Range(Place, Place + Len(T)) rien: End Sub
Anacoluthe « Le champ du signe. » - Umberto ECO
Bonjour !
'Gadget' nous a écrit ...
J'ai des signets dont le texte est déterminé par un
.Bookmark("MonSignet").Range.Text = "Texte de mon signet"
Jusque là , tout baigne.
Problème, quand je lance ma macro et que je fais un enregistrer sous de mon
doc, ou que je l'imprime, les champs {} deviennent Erreur ! Source de renvoi
introuvable.
Votre macro place le texte au signet mais DÉTRUIT le signet !
C'est une erreur hyperclassique en VBA Word qui s'explique assez
bien avec la structure double des signets à la fois emplacements
dans le document et conteneurs variables de texte.
Utilisez une procédure de ce type :
Public Sub RemplirSignet(S As String, T As String)
' Remplit le signet S avec le texte T sans supprimer S
On Error GoTo rien ' au cas où S n'existe pas !
Dim Place As Long
Place = ActiveDocument.Bookmarks(S).Range.Start
ActiveDocument.Bookmarks(S).Range.Text = T
ActiveDocument.Bookmarks.Add Name:=S, _
Range:¬tiveDocument.Range(Place, Place + Len(T))
rien:
End Sub
J'ai des signets dont le texte est déterminé par un .Bookmark("MonSignet").Range.Text = "Texte de mon signet" Jusque là , tout baigne. Problème, quand je lance ma macro et que je fais un enregistrer sous de mon doc, ou que je l'imprime, les champs {} deviennent Erreur ! Source de renvoi introuvable.
Votre macro place le texte au signet mais DÉTRUIT le signet !
C'est une erreur hyperclassique en VBA Word qui s'explique assez bien avec la structure double des signets à la fois emplacements dans le document et conteneurs variables de texte.
Utilisez une procédure de ce type :
Public Sub RemplirSignet(S As String, T As String) ' Remplit le signet S avec le texte T sans supprimer S On Error GoTo rien ' au cas où S n'existe pas ! Dim Place As Long Place = ActiveDocument.Bookmarks(S).Range.Start ActiveDocument.Bookmarks(S).Range.Text = T ActiveDocument.Bookmarks.Add Name:=S, _ Range:¬tiveDocument.Range(Place, Place + Len(T)) rien: End Sub
Anacoluthe « Le champ du signe. » - Umberto ECO
Gadget
Effectivement, on ne peut pas deviner cette nature des signets. Quelle drôle d'idée qu'un objet qui est détruit quand on change une de ses propriétés... Merci.
"Anacoluthe" a écrit dans le message de news:
Bonjour !
'Gadget' nous a écrit ...
J'ai des signets dont le texte est déterminé par un .Bookmark("MonSignet").Range.Text = "Texte de mon signet" Jusque là , tout baigne. Problème, quand je lance ma macro et que je fais un enregistrer sous de mon doc, ou que je l'imprime, les champs {} deviennent Erreur ! Source de renvoi introuvable.
Votre macro place le texte au signet mais DÉTRUIT le signet !
C'est une erreur hyperclassique en VBA Word qui s'explique assez bien avec la structure double des signets à la fois emplacements dans le document et conteneurs variables de texte.
Utilisez une procédure de ce type :
Public Sub RemplirSignet(S As String, T As String) ' Remplit le signet S avec le texte T sans supprimer S On Error GoTo rien ' au cas où S n'existe pas ! Dim Place As Long Place = ActiveDocument.Bookmarks(S).Range.Start ActiveDocument.Bookmarks(S).Range.Text = T ActiveDocument.Bookmarks.Add Name:=S, _ Range:¬tiveDocument.Range(Place, Place + Len(T)) rien: End Sub
Anacoluthe « Le champ du signe. » - Umberto ECO
Effectivement, on ne peut pas deviner cette nature des signets. Quelle drôle
d'idée qu'un objet qui est détruit quand on change une de ses propriétés...
Merci.
"Anacoluthe" <nopub_anacoluthe@Ouanadoo.fr> a écrit dans le message de news:
e6OefynEJHA.4420@TK2MSFTNGP06.phx.gbl...
Bonjour !
'Gadget' nous a écrit ...
J'ai des signets dont le texte est déterminé par un
.Bookmark("MonSignet").Range.Text = "Texte de mon signet"
Jusque là , tout baigne.
Problème, quand je lance ma macro et que je fais un enregistrer sous de
mon doc, ou que je l'imprime, les champs {} deviennent Erreur ! Source de
renvoi introuvable.
Votre macro place le texte au signet mais DÉTRUIT le signet !
C'est une erreur hyperclassique en VBA Word qui s'explique assez
bien avec la structure double des signets à la fois emplacements
dans le document et conteneurs variables de texte.
Utilisez une procédure de ce type :
Public Sub RemplirSignet(S As String, T As String)
' Remplit le signet S avec le texte T sans supprimer S
On Error GoTo rien ' au cas où S n'existe pas !
Dim Place As Long
Place = ActiveDocument.Bookmarks(S).Range.Start
ActiveDocument.Bookmarks(S).Range.Text = T
ActiveDocument.Bookmarks.Add Name:=S, _
Range:¬tiveDocument.Range(Place, Place + Len(T))
rien:
End Sub
Effectivement, on ne peut pas deviner cette nature des signets. Quelle drôle d'idée qu'un objet qui est détruit quand on change une de ses propriétés... Merci.
"Anacoluthe" a écrit dans le message de news:
Bonjour !
'Gadget' nous a écrit ...
J'ai des signets dont le texte est déterminé par un .Bookmark("MonSignet").Range.Text = "Texte de mon signet" Jusque là , tout baigne. Problème, quand je lance ma macro et que je fais un enregistrer sous de mon doc, ou que je l'imprime, les champs {} deviennent Erreur ! Source de renvoi introuvable.
Votre macro place le texte au signet mais DÉTRUIT le signet !
C'est une erreur hyperclassique en VBA Word qui s'explique assez bien avec la structure double des signets à la fois emplacements dans le document et conteneurs variables de texte.
Utilisez une procédure de ce type :
Public Sub RemplirSignet(S As String, T As String) ' Remplit le signet S avec le texte T sans supprimer S On Error GoTo rien ' au cas où S n'existe pas ! Dim Place As Long Place = ActiveDocument.Bookmarks(S).Range.Start ActiveDocument.Bookmarks(S).Range.Text = T ActiveDocument.Bookmarks.Add Name:=S, _ Range:¬tiveDocument.Range(Place, Place + Len(T)) rien: End Sub
Anacoluthe « Le champ du signe. » - Umberto ECO
Anacoluthe
Bonjour !
'Gadget' nous a écrit ...
Quelle drôle qu'un objet qui est détruit quand on change une de ses propriétés...
C'est un peu surprenant mais quand vous écrivez
.Bookmark("MonSignet").Range.Text = "Texte de mon signet"
vous ne modifiez pas une propriété d'un objet signet vous modifiez un objet RANGE référencé par un signet or le signet a ses propres limites /dans/ ce RANGE.
On comprend mieux le travail avec les signets en les affichant (Options d'affichage) sous forme de I ou [ ] gris non imprimables.
Anacoluthe « Le champ du signe. » - Umberto ECO
Bonjour !
'Gadget' nous a écrit ...
Quelle drôle qu'un objet qui est détruit quand on change une de ses propriétés...
C'est un peu surprenant mais quand vous écrivez
.Bookmark("MonSignet").Range.Text = "Texte de mon signet"
vous ne modifiez pas une propriété d'un objet signet
vous modifiez un objet RANGE référencé par un signet
or le signet a ses propres limites /dans/ ce RANGE.
On comprend mieux le travail avec les signets en les affichant
(Options d'affichage) sous forme de I ou [ ] gris non imprimables.
Quelle drôle qu'un objet qui est détruit quand on change une de ses propriétés...
C'est un peu surprenant mais quand vous écrivez
.Bookmark("MonSignet").Range.Text = "Texte de mon signet"
vous ne modifiez pas une propriété d'un objet signet vous modifiez un objet RANGE référencé par un signet or le signet a ses propres limites /dans/ ce RANGE.
On comprend mieux le travail avec les signets en les affichant (Options d'affichage) sous forme de I ou [ ] gris non imprimables.