formateur informatique

Aérer automatiquement la présentation d'un document Word

Accueil  >  Bureautique  >  Word  >  Word VBA  >  Aérer automatiquement la présentation d'un document Word
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 :


Aérer automatiquement la présentation

A l'occasion d'une précédente astuce VBA Word nous avons appris à parcourir tous les paragraphes d'un document grâce à une boucle For Each. Avec cette nouvelle astuce, nous allons voir qu'il est possible de parcourir l'intégralité d'un document Word grâce à une boucle For Next classique. L'idée est de pouvoir engager des traitements sur la totalité de l'article. Pour l'exemple, nous allons nous contenter d'aérer la présentation en ajoutant automatiquement un paragraphe vierge entre chaque paragraphe de texte.

Document source
Pour la découverte de cette nouvelle astuce, nous proposons d'appuyer les travaux sur un document hébergeant des blocs de paragraphes compacts. Document Word avec des blocs de paragraphes rapprochés à aérer

Nous découvrons effectivement un article compact. Ses paragraphes ont été insérés automatiquement grâce à l'une des fonctions que propose Word à ce sujet.

Coder dans le modèle
Comme cette macro Word peut s'avérer utile pour de nombreuses présentations, nous proposons de créer une procédure dans le modèle Word. C'est ainsi que la macro sera disponible pour tous les documents.
  • Réaliser le raccourci clavier ALT + F11 pour basculer dans l'éditeur VBA Word,
  • Dans l'explorateur de projet sur la gauche de l'écran, cliquer sur l'élément Normal,
C'est lui qui désigne le modèle (Normal.dotm).
  • En haut de la fenêtre, cliquer sur le menu Insertion,
  • Dans les propositions, choisir la commande Module,
Nous créons ainsi un nouveau module pour accueillir notre code VBA. Il est toujours judicieux d'attribuer des noms explicites à ces modules, surtout quand leur nombre augmente. Lorsque le module est sélectionné, c'est la propriété Name de la fenêtre Propriétés qui permet de changer ce nom. Si elle n'est pas visible dans votre environnement, vous pouvez la rendre disponible par le menu Affichage puis en cliquant sur Fenêtre Propriétés.
  • Dans la feuille de code au centre de l'écran, créer la procédure Aerer, comme suit :
Créer une procédure VBA dans le modèle Word

Sub Aerer()

End Sub


Déclarer les variables
Désormais et comme il est de coutume, nous devons commencer par déclarer les variables nécessaires au bon fonctionnement de la procédure.

Sub Aerer()
Dim nbParag As Integer: Dim texteParag As String: Dim j As Integer

End Sub


La variable nbParag est déclarée comme un entier. Nous l'utiliserons pour stocker le nombre de paragraphes que possède le document à traiter. Cette information est incontournable pour que la boucle sache jusqu'où poursuivre son traitement. La variable texteParag est déclarée comme un texte. Nous l'utiliserons pour stocker temporairement le contenu du paragraphe en cours d'analyse. Ainsi, nous pourrons lui ajouter un retour à la ligne pour le remplacer dans le document. C'est de cette manière que nous allons pouvoir intercaler une ligne vide entre chaque paragraphe. Enfin, j est la variable de boucle à utiliser pour le traitement récursif.
  • A la suite du code de la procédure, ajouter l'affectation suivante :
Sub Aerer()
Dim nbParag As Integer: Dim texteParag As String: Dim j As Integer

nbParag = (ActiveDocument.Paragraphs.Count * 2) - 2

End Sub


La propriété Paragrahs de l'objet VBA Word ActiveDocument renvoie une collection matérialisant tous les paragraphes sous la forme d'un tableau. De fait, sa propriété Count retourne le nombre de paragraphes contenus dans le document. Naturellement, nous doublons ce décompte (*2), puisque nous allons ajouter un paragraphe sur 2. Sans ce réajustement, la boucle que nous devons entreprendre arrêterait sont traitement à la moitié du document remanié. Nous retranchons néanmoins deux unités à ce résultat (-2). En effet, il n'est pas question d'ajouter un paragraphe vierge après le dernier paragraphe qui dans ce décompte virtuel est devenu l'avant dernier, soit -1-1 pour arrêter le traitement sur l'antépénultième.

Parcourir les paragraphes
Maintenant que nous connaissons les bornes, nous pouvons enclencher la boucle permettant de parcourir tous les paragraphes du document sans omettre ceux que nous allons ajouter pour aérer la présentation.
  • A la suite du code de la procédure, ajouter la boucle suivante :
Sub Aerer()
Dim nbParag As Integer: Dim texteParag As String: Dim j As Integer

nbParag = (ActiveDocument.Paragraphs.Count * 2) - 2

For j = 1 To nbParag

j = j + 1
Next j


End Sub


Bien sûr elle n'est pas complétée puisqu'il manque son traitement. Elle est initialisée pour démarrer l'analyse à partir du premier paragraphe (j=1) et la poursuivre jusqu'au dernier (nbParag), en tous cas jusqu'à l'antépénultième comme nous l'avons expliqué. Et à chaque passage dans la boucle, après le traitement à intégrer, nous incrémentons la variable d'une unité qui va être augmentée dans la foulée d'une nouvelle unité par la boucle elle-même. C'est de cette façon que nous portons l'étude sur un paragraphe sur deux, pour ignorer les paragraphes vides que nous allons insérer.
  • Dans les bornes de la boucle, ajouter les deux instructions suivantes avant l'incrémentation,
Sub Aerer()
Dim nbParag As Integer: Dim texteParag As String: Dim j As Integer

nbParag = (ActiveDocument.Paragraphs.Count * 2) - 2

For j = 1 To nbParag
texteParag = ActiveDocument.Paragraphs(j).Range.Text
ActiveDocument.Paragraphs(j).Range.Text = texteParag & Chr(13)

j = j + 1
Next j

End Sub


Nous l'avons évoqué précédemment, la propriété Paragraphs est un tableau des paragraphes contenus dans le document. C'est la raison pour laquelle nous lui passons la variable de boucle en paramètre, pour pointer sur celui qui doit être analysé dans la chronologie. Grâce à la propriété dérivée Text de sa propriété Range, nous stockons son contenu dans la variable texteParag.

Dès lors, par affectation inverse, nous remplaçons ce contenu par ce même contenu auquel nous avons greffé un retour à la ligne grâce à la fonction VBA Chr à laquelle nous passons la valeur 13.
  • Enregistrer les modifications (CTRL + S) et exécuter le code (F5),
  • Puis, basculer sur le document Word.
Aérer automatiquement la présentation du document Word avec un paragraphe vide sur deux grâce au code VBA

Comme vous pouvez l'apprécier, la présentation a effectivement été aérée de façon automatisée. Une ligne vide a bien été intercalée entre chaque paragraphe de texte. Nous avons donc démontré avec succès une nouvelle technique pour parcourir un à un tous les paragraphes d'un document Word.

 
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