OVH Cloud OVH Cloud

Ce déplacer dans Word en VBA.

2 réponses
Avatar
Pyngu
Bonjour à tous.

Voilà, j'ai une série de documents (+/-100) qui commencent tous de la même
manière sur les deux premières pages, mais pour automatiser une mise à jour
(vba excel), je veux y incorporer un signet dans chaque fichier.
Je voulais donc une petite macro pour ce faire, mais je me rend compte que
le déplacement dans word se fait de manière peu intuitive (MoveLeft,
MoveDown,...)
Sachant que le signet doit toujours être insérer sur la deuxième page, 7ème
ligne, colonne 12 à 34.
Evidement si je n'ai pas le choix, je ferait bien avec les MoveBlaBla.

Merci de vos conseils.
Mathieu

2 réponses

Avatar
Circé
Bonjour Mathieu,

C'est une mauvaise idée en VBA de vouloir se déplacer.
Le mieux est d'utiliser l'objet RANGE qui va te permettre de définir
une plage de ton document.
Seulement l'objet RANGE prend en compte les mots, les paragraphes, les
caractères, mais pas les pages ni les lignes qui peuvent être
fluctuantes puisque c'est fonction de la police et de l'imprimante.
Donc, regarde si l'objet range (avec paragraphes et caractères par
exemple) peut s'appliquer à tes documents.

Dans ce cas, ta macro ressemblerait à ça :

Sub signet()

Dim emplacement As Range
Set doc = ActiveDocument
Set emplacement =
ActiveDocument.Range(Start:=doc.Paragraphs(4).Range.Start,
End:=doc.Paragraphs(5).Range.End)

doc.Bookmarks.Add Name:="mon_signet", Range:=emplacement

End Sub

Circé
http://faqword.free.fr


Pyngu a émis l'idée suivante :
Bonjour à tous.

Voilà, j'ai une série de documents (+/-100) qui commencent tous de la même
manière sur les deux premières pages, mais pour automatiser une mise à jour
(vba excel), je veux y incorporer un signet dans chaque fichier.
Je voulais donc une petite macro pour ce faire, mais je me rend compte que le
déplacement dans word se fait de manière peu intuitive (MoveLeft,
MoveDown,...)
Sachant que le signet doit toujours être insérer sur la deuxième page, 7ème
ligne, colonne 12 à 34.
Evidement si je n'ai pas le choix, je ferait bien avec les MoveBlaBla.

Merci de vos conseils.
Mathieu


Avatar
Circé
Bonjour,

J'ai oublié d'ajouter que, une fois ta macro écrite pour un fichier, il
te suffira de lancer la batchmacro magique d'anacoluthe pour l'exécuter
sur tous tes documents.

La batchmacro se trouve sur la faq :
http://faqword.free.fr/download.php?lng=fr&pgs6

Circé
http://faqword.free.fr

Circé a émis l'idée suivante :
Bonjour Mathieu,

C'est une mauvaise idée en VBA de vouloir se déplacer.
Le mieux est d'utiliser l'objet RANGE qui va te permettre de définir une
plage de ton document.
Seulement l'objet RANGE prend en compte les mots, les paragraphes, les
caractères, mais pas les pages ni les lignes qui peuvent être fluctuantes
puisque c'est fonction de la police et de l'imprimante.
Donc, regarde si l'objet range (avec paragraphes et caractères par exemple)
peut s'appliquer à tes documents.

Dans ce cas, ta macro ressemblerait à ça :

Sub signet()

Dim emplacement As Range
Set doc = ActiveDocument
Set emplacement = ActiveDocument.Range(Start:=doc.Paragraphs(4).Range.Start,
End:=doc.Paragraphs(5).Range.End)

doc.Bookmarks.Add Name:="mon_signet", Range:=emplacement

End Sub

Circé
http://faqword.free.fr


Pyngu a émis l'idée suivante :
Bonjour à tous.

Voilà, j'ai une série de documents (+/-100) qui commencent tous de la même
manière sur les deux premières pages, mais pour automatiser une mise à jour
(vba excel), je veux y incorporer un signet dans chaque fichier.
Je voulais donc une petite macro pour ce faire, mais je me rend compte que
le déplacement dans word se fait de manière peu intuitive (MoveLeft,
MoveDown,...)
Sachant que le signet doit toujours être insérer sur la deuxième page, 7ème
ligne, colonne 12 à 34.
Evidement si je n'ai pas le choix, je ferait bien avec les MoveBlaBla.

Merci de vos conseils.
Mathieu