Pour partager cette vidéo sur les réseaux sociaux ou sur un site, voici son url :
Sujets que vous pourriez aussi aimer :Naviguer dans les lignes et paragraphes
A l'occasion du précédent volet, nous avons découvert quelques
méthodes VBA fort précieuses pour naviguer au travers des éléments d'un
document Word. Ici, nous récidivons pour permettre à l'utilisateur de créer facilement un
nouveau paragraphe, après ou avant celui en cours. Mais nous allons le voir, une petite
astuce est nécessaire pour ce faire.
Document Source
Pour la création de ces
nouveaux outils, nous proposons de réaliser des essais sur un document suffisamment copieux.
Nous retrouvons effectivement ce document avec cette page de garde et ses sections aux orientations alternées.
Fin et début de Ligne
Pour réaliser un constat nécessaire, nous proposons de débuter simplement avec deux
méthodes que nous avions présentées. Il s'agit des
méthodes HomeKey et EndKey de l'
objet VBA Selection. Grâce à elles, nous allons voir comment déplacer le point d'insertion en
fin et début de ligne. Et par extension, nous verrons comment adapter le code pour réaliser les mêmes mouvements dans les
paragraphes.
- Sélectionner un fragment de texte dans le premier paragraphe de l'avant-dernière page,
Cette sélection est destinée à rendre plus visuels les
effets de déplacement que nous allons provoquer. Cette avant-dernière page porte le numéro 5 sur 6. Dans l'absolu, il s'agit de la septième page du document en raison de la présence de la page de garde et du sommaire qui ne sont pas numérotés.
- Réaliser maintenant le raccourci clavier ALT + F11 pour basculer dans l'éditeur VBA Word,
- Dans l'explorateur de projet, double cliquer sur le module Navigation du document Normal,
Il s'agit du
module que nous avons créé à l'occasion de la précédente
astuce.
S'il n'existe pas, il est préférable de le créer (Insertion / Module). Son nom peut alors être modifié grâce à la
fenêtre Propriétés. Nous allons implémenter ce
module sous les procédures existantes, elles aussi créées lors de la précédente
astuce.
- Sous la procédure versLeHaut, créer la procédure debutLigne comme suit :
Sub debutLigne()
Selection.HomeKey wdLine
End Sub
Cette instruction a un air de famille avec celles que nous avons découvertes précédemment. Nous avons simplement modifié l'unité de déplacement (wdLine) passé en argument de la
méthode HomeKey de l'
objet Selection. Nous devrions donc repositionner automatiquement le point d'insertion au début de la ligne active.
- Exécuter le code VBA avec la touche F5 du clavier puis revenir sur le document (ALT + Tab),
Comme vous pouvez le voir, le point d'insertion clignote en effet au tout début de la première ligne que nous avions sélectionnée.
Maintenant et tout aussi simplement, nous allons donc voir comment déplacer automatiquement le point d'insertion en
bout de ligne.
Pour cela et nous le savons, il suffit d'exploiter la
méthode EndKey avec le même argument que nous avons passé à son homologue
HomeKey.
- Revenir dans l'éditeur VBA Word,
- Après la procédure debutLigne, créer la procédure finLigne comme suit :
Sub finLigne()
Selection.EndKey wdLine
End Sub
- Dès lors, enfoncer la touche F5 du clavier pour exécuter le code et revenir sur le document,
Comme vous pouvez le voir, le point d'insertion a effectivement été déplacé
au bout de la ligne active au moment de l'exécution du
code VBA.
Créer de nouveaux paragraphes
Pour atteindre automatiquement les
extrémités des paragraphes, nous pensons naturellement exploiter les mêmes méthodes mais avec l'
unité wdParagraph à la place de l'
unité wdLine.
- Revenir dans l'éditeur VBA Word,
- Puis, après la procédure finLigne, créer la procédure nouvParagAps :
Sub nouvParagAps()
Selection.EndKey wdParagraph
End Sub
Mais en enfonçant la touche F5 du clavier pour exécuter le code, une surprise surgit. Ce paramètre n'est pas disponible avec la
méthode EndKey comme avec la
méthode HomeKey d'ailleurs. Nous allons donc contourner le problème. Et c'est là que l'
astuce réside. Nous avions découvert une autre
méthode de déplacement. A l'instar de la
méthode MoveLeft de l'
objet Selection, il existe en effet les
méthodes MoveRight,
MoveDown et
MoveUp.
- Cliquer sur le bouton Fin de la boîte de dialogue pour revenir en conception,
- Remplacer la précédente ligne par la suivante :
Selection.MoveDown wdParagraph, 1
Nous engageons donc un déplacement d'une unité vers le bas. Comme l'unité est ici le
paragraphe, nous devrions retrouver le point d'insertion dans le
paragraphe du dessous.
- Exécuter le code VBA et revenir sur le document Word,
Comme vous pouvez le voir, le point d'insertion a effectivement été déplacé. Il est maintenant situé en tête du
paragraphe suivant. Mais notre défi consistait à le placer à la fin du
paragraphe en cours. Pour cela, l'astuce semble évidente, il suffit d'engager un déplacement vers l'arrière d'une unité. Et l'unité en l'occurrence doit être le caractère.
- Cliquer n'importe où dans le paragraphe du dessus pour y replacer le point d'insertion,
- Revenir dans le code VBA et ajouter la ligne suivante après la précédente :
Sub nouvParagAps()
Selection.MoveDown wdParagraph, 1
Selection.MoveLeft wdCharacter, 1
End Sub
- Exécuter le code et basculer sur le document Word,
Nous sommes parvenus à nos fins. Désormais le point d'insertion est bien placé
au bout du paragraphe qui était actif au moment de l'exécution du
code VBA. Mais ne l'oublions pas, la finalité de la manipulation est de créer automatiquement un
nouveau paragraphe à la suite de celui en cours. Manuellement, c'est la
touche Entrée du clavier qui permet de créer un
nouveau paragraphe. Et ces actions au clavier peuvent se simuler en
VBA grâce à la
fonction Chr.
- Cliquer au milieu de ce premier paragraphe pour y replacer le point d'insertion,
- Revenir dans l'éditeur VBA et ajouter la ligne suivante à la suite des deux précédentes :
Sub nouvParagAps()
Selection.MoveDown wdParagraph, 1
Selection.MoveLeft wdCharacter, 1
Selection.TypeText Chr(13)
End Sub
Nous l'avions découverte à l'occasion de la première
astuce en VBA Word, c'est la
méthode TypeText de l'
objet Selection qui permet d'insérer du texte à l'emplacement du point d'insertion. Avec la valeur 13 passée en paramètre de la
fonction Chr, nous simulons un retour chariot, comme s'il avait été fait avec la touche Entrée. A la place de la
fonction Chr, il est à noter que nous aurions pu exploiter une action que nous connaissons. Il s'agit de la
méthode TypeParagraph de l'
objet Selection. Mais il est intéressant de découvrir des techniques variées.
- Exécuter le code VBA et basculer sur le document Word,
Comme vous pouvez l'apprécier, un
nouveau paragraphe a bien été automatiquement créé à la suite du précédent.
Il nous reste maintenant à construire l'action consistant Ã
créer un paragraphe au-dessus du paragraphe en cours. La technique est similaire. Mais cette fois, nous allons devoir remonter dans le flux du document avec la
méthode MoveUp. De plus, les deux dernières lignes doivent être inversées pour que la
création du paragraphe intervienne avant le déplacement du point d'insertion en arrière. C'est ainsi que nous pourrons le positionner sur le
nouveau paragraphe.
- Supprimer le paragraphe vierge créé par le code VBA,
- Cliquer n'importe où dans le premier paragraphe de texte,
- Revenir dans l'éditeur de code VBA,
- Puis créer la procédure nouvParagAvt après la procédure nouvParagAps,
Sub nouvParagAvt()
Selection.MoveUp wdParagraph, 1
Selection.TypeText Chr(13)
Selection.MoveLeft wdCharacter, 1 'Inversion
End Sub
Prenez soin donc de bien placer la ligne : Selection.TypeText Chr(13) entre les deux autres.
- Exécuter le code VBA et basculer sur le document,
Cette fois, c'est bien un paragraphe vierge qui a été créé au-dessus du précédent.
Boutons d'actions
Concernant les deux dernières actions, nous souhaitons les matérialiser par des
boutons à placer dans un
ruban dédié, celui qui se nomme
Outils et que nous avons créé à l'occasion des précédentes
astuces.
- En haut de la fenêtre Word, cliquer droit n'importe où sur le ruban actif,
- Dans le menu contextuel, choisir la commande Personnaliser le ruban,
La boîte de dialogue des
options de Word apparaît.
- Dans la liste de droite, déployer l'affichage de l'onglet Outils,
- Déployer l'affichage de son groupe Navigation,
- Puis, cliquer sur le dernier bouton Haut Doc.,
De cette manière, nous spécifions à partir de quelle position les nouveaux boutons doivent être insérés. Nous avons créé l'
onglet Outils et ses
boutons au fil des
astuces précédentes. S'il n'existe pas dans votre environnement, il convient de le créer d'abord.
- Déployer la zone déroulante au-dessus de la première liste,
- Dans la liste des propositions, choisir la catégorie Macros,
- Sélectionner la macro nouvParagAvt, puis cliquer sur le bouton Ajouter,
- Faire de même pour ajouter la macro nouvParagAps dans le ruban Outils,
Ensuite, avec le
bouton Renommer, il convient de leur attribuer des intitulés respectifs comme :
Parag.Avt. et
Parag. Aps. De même, il est intéressant de leur affecter des icônes explicatives. La choix n'est pas large mais l'aspect visuel est important pour l'acclimatation au fil des utilisations.
- Dès lors, cliquer sur le bouton Ok de la boîte de dialogue pour valider la création des boutons,
- De retour sur le document, cliquer sur l'onglet Outils en haut à droite de la fenêtre,
Désormais, à chaque clic sur les deux nouveaux boutons, vous pouvez apprécier la
création d'un nouveau paragraphe, soit avant le paragraphe en cours, soit après.