formateur informatique

Nouveaux paragraphes avant et après la sélection

Accueil  >  Bureautique  >  Word  >  Word VBA  >  Nouveaux paragraphes avant et après la sélection
Livres à télécharger


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


Inscription Newsletter    Abonner à Youtube    Vidéos astuces Instagram
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,
Sélectionner une portion de texte dans un paragraphe Word

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.

Module code VBA dans modèle Word Normal dotm

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),
Placer le curseur du point d-insertion en début de ligne par le code VBA Word

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,
Déplacer automatiquement le curseur de la souris en fin de ligne par le code VBA Word

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


Paramètre non reconnu en VBA Word pour la méthode EndKey

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,
Déplacer le point insertion dans le paragraphe suivant en VBA 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,
Créer automatiquement un nouveau paragraphe vierge avec le code VBA 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,
Créer un paragraphe vierge au-dessus du précédent avec le code VBA

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,
Boutons de macro VBA Word dans ruban personnalisé pour créer des nouveaux paragraphes avant et après la sélection

  • 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.

 
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