Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer :
Navigation en VBA Word
Avec cette nouvelle
astuce VBA Word , nous allons découvrir comment créer des
accès rapides matérialisés par des
boutons . L'objectif est de permettre à l'utilisateur d'atteindre facilement la
fin ou le début du document , mais ce n'est pas tout. Nous pouvons aussi lui offrir la possibilité de remonter sur un titre en particulier, de naviguer au travers des sections ou encore d'entreprendre des déplacements sur un certain nombre de lignes.
Document source
Pour la mise en place de cette nouvelle
astuce , nous suggérons d'opérer sur un
document relativement long, offrant des
sections et des
titres mis en forme avec les styles.
Nous débouchons sur une page d'accueil qui n'est autre qu'une page de garde. En faisant défiler le document vers le bas, vous constatez la présence de quelques éléments clés, utiles à nos besoins. Vous notez que les orientations de page diffèrent, expliquant la présence de
sections .
En cliquant sur un titre et en consultant la
section Styles du
ruban Accueil , vous comprenez qu'un style lui est appliqué. C'est d'ailleurs grâce à lui que la conception d'un sommaire automatique est possible. Mais c'est aussi un élément que le
code VBA Word est capable de détecter pour l'atteindre directement et ainsi offrir une
option de navigation .
Remonter dans le document
L'
objet VBA Selection , encore lui, propose des
méthodes dédiées pour entreprendre des déplacements dans un document. Ces
méthodes requièrent des arguments. Ces arguments permettent de maîtriser les mouvements. La première
méthode qui nous intéresse se nomme
HomeKey . Elle permet de remonter vers le haut. Mais le haut de quoi ? Faut-il encore le préciser.
Cliquer en bas de la page 3 pour y placer le point d'insertion,
Nous sommes ainsi placés au milieu du document, dans la troisième section.
Réaliser le raccourci clavier ALT + F11 pour basculer dans l'éditeur VBA Word ,
Dans l'explorateur de projet, cliquer sur le document Normal pour le sélectionner,
Nous l'avons déjà évoqué au fil des
astuces précédentes, il s'agit du
modèle Word . Un
code VBA enregistré dans ce
modèle sera disponible pour toutes les utilisations à venir de
Word .
En haut de l'éditeur VBA , cliquer sur le menu Insertion ,
Dans les propositions, choisir la commande Module ,
Même si un
module existait déjà , nous choisissons d'en créer un nouveau afin d'organiser les codes que nous développerons par thèmes. Si la fenêtre des propriétés n'est pas visible, elle doit être affichée. Pour cela :
En haut de l'éditeur VBA Word , cliquer sur le menu Affichage ,
En bas des propositions, choisir Fenêtre Propriétés ,
Conventionnellement, elle se greffe sur la gauche, sous l'explorateur de projet.
Dans la zone (Name), remplacer l'intitulé du module par Navigation ,
Puis, valider par la touche Entrée,
Aussitôt, le module est effectivement renommé dans l'explorateur de projet.
Dans la feuille de code au centre de l'écran, créer la procédure hautDoc comme suit :
Sub hautDoc()
End Sub
C'est par ce nom que nous pourrons associer ses actions à un bouton à placer dans un ruban.
Entre les bornes de cette procédure, ajouter la ligne de code suivante :
Sub hautDoc()
Selection.HomeKey wdStory, wdExtend
End Sub
Enfoncer la touche F5 du clavier pour exécuter le code VBA ,
Puis, basculer sur le document Word (ALT + Tab),
Comme vous pouvez le constater, nous sommes remontés tout en haut du document. Mais ce n'est pas tout. En faisant défiler ce document vers le bas, vous remarquez que ce sont tous les éléments situés entre l'emplacement du point d'insertion au départ et le haut du document qui ont été sélectionnés.
Le premier paramètre de la
méthode HomeKey désigne l'unité. En d'autres termes, il s'agit de l'élément dont nous souhaitons atteindre la borne supérieure. La valeur
wdStory désigne l'article. Comprenez le document en cours. L'aide en ligne de Microsoft renseigne sur les valeurs qu'il est possible de passer à ce
paramètre Unit . Le second paramètre désigne la méthode de déplacement. Avec la valeur
wdExtend , le déplacement est effectué en englobant tous les éléments intermédiaires dans la sélection. Là encore, l'aide en ligne renseigne sur les valeurs qu'il est possible de passer à ce
paramètre Extend .
Quant à nous, nous souhaitions créer un bouton permettant à l'utilisateur de remonter tout en haut du document, sans la moindre sélection. C'est d'ailleurs le fonctionnement naturel de la
méthode HomeKey . Il suffit donc de ne pas lui préciser le second argument sur la méthode de déplacement. Ce paramètre est effectivement facultatif.
Cliquer de nouveau à la fin de la page 3 pour y replacer le point d'insertion,
Revenir dans l'éditeur de code VBA Word (ALT + Tab),
Puis, modifier la précédente instruction comme suit :
Selection.HomeKey wdStory
Nous supprimons simplement le second argument.
Enfoncer la touche F5 du clavier puis basculer sur le document Word ,
Le point d'insertion est effectivement placé tout en haut du document mais cette fois, aucune sélection intermédiaire n'a été entreprise. Le
code VBA de notre premier
bouton de navigation est donc prêt. Nous l'associerons en temps voulus.
Atteindre la fin du document
Pour atteindre la toute
fin du document ,
VBA Word offre aussi une méthode dédiée. Elle se nomme
EndKey . Elle agit par rapport à la sélection ou à défaut, par rapport à la position du point d'insertion. Bien entendu, il s'agit d'une méthode de l'
objet Selection . Son exploitation est strictement identique à celle de la
méthode HomeKey .
Revenir dans l'éditeur VBA Word ,
Sous la procédure hautDoc , créer la procédure VBA basDoc comme suit :
Sub basDoc()
Selection.EndKey wdStory
End Sub
Enfoncer la touche F5 du clavier et basculer sur le document Word ,
Comme vous pouvez le voir, la
dernière page est effectivement atteinte. Le
code VBA de notre deuxième
bouton d'accès rapide est donc prêt. Et vous en conviendrez, les instructions sont triviales.
Naviguer dans le document
Maintenant, il est temps d'être plus précis. Nous allons le découvrir, VBA Word offre une méthode permettant de naviguer plus finement au travers du document. Cette
méthode de l'
objet Selection se nomme
GoTo . Elle attend quelques paramètres mais son exploitation est relativement simple. Cette méthode peut recevoir jusqu'à quatre paramètres :
Selection.GoTo(What , Which , Count , Name)
Le premier argument (What) désigne l'élément à atteindre, soit l'élément vers lequel la sélection doit être déplacée. Le deuxième argument (Which) permet de spécifier comment atteindre cet élément. Il peut s'agir de sa position dans la hiérarchie. Le troisième argument (Count) permet de reconnaître cet élément dans le document en fonction de sa position par rapport aux autres. Enfin, le dernier argument est nécessaire lorsque le premier (What) désigne un signet, un commentaire ou encore une page par exemple. La marque qui lui est passée permet d'atteindre directement l'objet désigné.
Cliquer sur le titre de l'avant-dernière page, la cinquième,
Remarque : Il s'agit de la cinquième page en suivant la numérotation inscrite en bas de page. En réalité et étant donnée la présence de la page de garde et du sommaire, il s'agit de la septième page du document.
Revenir dans l'éditeur de code VBA Word ,
Sous la procédure basDoc , créer la procédure versLeHaut comme suit :
Sub versLeHaut()
Selection.GoTo wdGoToLine, wdGoToRelative, 4
End Sub
En premier argument de la
méthode GoTo , nous spécifions que l'objet à atteindre est une ligne. Pour cela, nous exploitons la
valeur wdGoToLine . Une fois encore, l'aide en ligne de Microsoft enseigne les valeurs qu'il est possible de passer à cet argument. En deuxième paramètre, nous lui spécifions le moyen de déplacement. Avec la
valeur wdGoToRelative , nous entreprenons un déplacement relatif à la position de départ, celle du point d'insertion. Enfin, avec le troisième paramètre en valeur numérique, nous lui indiquons d'atteindre la ligne située quatre rangées plus bas.
Exécuter le code avec la touche F5 du clavier puis basculer sur le document Word ,
Comme vous pouvez le voir, le point d'insertion est dorénavant positionné devant la ligne qui est effectivement située quatre lignes plus bas par rapport au titre de départ. En ajustant la valeur du troisième paramètre, cette méthode permet donc de parcourir l'intégralité d'un document selon la séquence que vous avez choisie.
Revenir dans l'éditeur VBA Word ,
Puis, modifier la précédente ligne par la suivante :
Selection.GoTo wdGoToHeading, wdGoToFirst
Avec la
valeur wdGoToHeading en premier paramètre, nous désignons un entête, plus précisément un
titre mis en valeur par un style de mise en forme. Avec la
valeur wdGoToFirst en second paramètre, nous indiquons que nous souhaitons rejoindre le premier d'entre eux.
Exécuter le code VBA (F5) et basculer sur le document Word ,
Comme vous pouvez l'apprécier, le point d'insertion est désormais placé devant le premier titre de ce document. Nous sommes automatiquement remontés en page 3, soit la première page après le sommaire.
Cliquer en bas de la page 3 sur 6 soit la cinquième du document,
Revenir dans l'éditeur VBA Word et modifier la ligne de code comme suit :
Selection.GoTo What:=wdGoToBookmark, Name:="\Page"
Comme les deux et troisième paramètres ne sont pas renseignés, la notation est spécifique. Nous sommes dans l'obligation de rappeler en préfixes les noms de ces paramètres suivis des symboles deux points et égal (:=). Avec la
valeur wdGoToBookmark , nous souhaitons atteindre un signet. Ce signet n'est connu que par
Word . Avec la
valeur "\Page" en second paramètre, nous indiquons que nous souhaitons atteindre le haut de la page en cours.
Exécuter le code (F5) et basculer sur le document Word ,
Nous sommes effectivement remontés sur le haut de la page active. Mais comme nous l'avions constaté à l'occasion d'une précédente manipulation, tous les éléments intercalés ont été sélectionnés.
Pour pallier ce défaut, l'
astuce est simple. Elle consiste dans l'enchaînement de la première action à déplacer le point d'insertion d'un caractère sur la gauche par exemple. Et pour cela, l'
objet VBA Selection propose la
méthode MoveLeft .
Cliquer de nouveau en bas de cette page pour y replacer le point d'insertion,
Revenir dans l'éditeur VBA Word ,
Puis, ajouter l'instruction VBA suivante sous la précédente,
Sub versLeHaut()
Selection.GoTo What:=wdGoToBookmark, Name:="\Page"
Selection.MoveLeft wdCharacter, 1
End Sub
En premier paramètre de la
méthode MoveLeft , nous souhaitons nous déplacer de caractère en caractère comme le stipule la valeur numérique passée en second paramètre. Mais nous pourrions très bien choisir de nous déplacer de mot en mot avec la
valeur wdWord en premier paramètre.
Exécuter le code et basculer sur le document Word ,
Cette fois, c'est bien le haut de la page active qui est atteint et aucune sélection n'est à déplorer. Le
code de notre troisième
bouton de navigation est donc prêt lui aussi.
Boutons de navigation
Il est temps de matérialiser ces
actions de navigation pour offrir plus d'ergonomie à l'utilisateur.
En haut de la fenêtre Word , cliquer droit n'importe où sur le ruban actif,
Dans le menu contextuel qui apparaît, choisir la commande : Personnaliser le ruban ,
Dans la boîte de dialogue qui suit, la
catégorie Personnaliser le ruban est active dans la liste de gauche.
Dans la liste de droite, déployer l'affichage (+) de l'onglet Outils ,
Juste en-dessous, cliquer sur sa section Textes ,
Il s'agit d'un ruban qu enous avons créé à l'occasion d'une
astuce précédente. S'il n'existe pas dans votre environnement, il convient de le créer. L'objectif est de regrouper toutes les commandes personnalisées dans un même espace.
Cliquer ensuite sur le bouton Nouveau groupe ,
Puis, cliquer sur le bouton Renommer ,
Taper l'intitulé : Navigation et valider par Ok,
Cette nouvelle section doit accueillir nos trois boutons.
Déployer la zone déroulante au-dessus de la liste de gauche,
Dans les propositions, choisir : Macros ,
Sélectionner la macro versLeHaut puis cliquer sur le bouton Ajouter au centre de la boîte,
Faire de même avec les macros basDoc et hautDoc ,
Ensuite, Ã l'aide du
bouton Renommer , il convient d'attribuer tour à tour un intitulé à chacun de ces
boutons ainsi qu'une icône graphique, si possible suffisamment explicite.
Dès lors, cliquer sur le bouton Ok pour revenir sur le document Word ,
En haut de la fenêtre, cliquer sur l'onglet Outils pour activer son ruban,
Puis, cliquer tout à tour sur les différents boutons ,
Comme vous pouvez le voir, nous avons amélioré l'ergonomie de l'environnement de travail de l'utilisateur grâce à trois
boutons de navigation codés en
VBA Word .
Nous pouvons désormais atteindre facilement le haut comme le bas du document mais aussi le haut de la page active.