formateur informatique

Boutons de déplacement en VBA Word

Accueil  >  Bureautique  >  Word  >  Word VBA  >  Boutons de déplacement en VBA Word
Livres à télécharger


Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :


Inscription Newsletter    Inscription Newsletter
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.

Styles de mise en forme dans le document Word pour détecter automatiquement les titres par le code VBA

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,
Renommer un module de code VBA Word avec la fenêtre Propriétés

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),
Sélectionner jusqu-en haut du document en VBA Word

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,
Atteindre la fin du document en VBA 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,
Atteindre une ligne dans le document Word avec le code VBA

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,
Atteindre le premier titre du document Word par le code VBA

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.

Sélectionner en remontant en haut de la page active en VBA Word

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,
Personnaliser le ruban Word pour ajouter des boutons de macro VBA

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.

Nouveau groupe dans un ruban personnalisé pour accueillir les boutons de macro VBA Word
  • 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,
Ajouter les boutons de macro dans le nouveau ruban Word

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.

Noms et icônes graphiques des boutons de macro VBA Word
  • 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.

Boutons de navigation dans le document Word créés en VBA

Nous pouvons désormais atteindre facilement le haut comme le bas du document mais aussi le haut de la page active.

 
Sur Facebook
Sur Youtube
Les livres
Contact
Mentions légales



Abonnement à la chaîne Youtube
Partager la formation
Partager sur Facebook
Partager sur Twitter
Partager sur LinkedIn