formateur informatique

Parcourir tous les tableaux d'un document en VBA

Accueil  >  Bureautique  >  Word  >  Word VBA  >  Parcourir tous les tableaux d'un document en VBA
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 :


Analyser les tableaux du document

Avec cette nouvelle astuce, nous allons découvrir que le VBA Word offre des objets et propriétés permettant de parcourir les tableaux d'un document, mais aussi de les manipuler.

Document source
Pour la découverte de cette nouvelle astuce, nous proposons de récupérer un document Word gérant les macros et offrant quelques tableaux aux structures différentes. Nous découvrons un document sobre. Il est constitué de trois tableaux vierges. Pour chacun, les nombres de lignes et de colonnes diffèrent.

Document Word constitué de plusieurs tableaux à parcourir par le code VBA

Deux paragraphes de textes sont intercalés, simplement pour nourrir la présentation.

Procédure et variables
Pour entrer dans le vif du sujet directement, nous proposons de créer la procédure de code destinée à parcourir ces tableaux. Et pour cela, des variables sont nécessaires, notamment pour mémoriser les nombres de tableaux, ainsi que de lignes et de colonnes pour chacun.
  • Réaliser le raccourci clavier ALT + F11 pour basculer dans l'éditeur VBA Word,
  • Dans l'explorateur de projet sur la gauche, double cliquer sur le dossier Modules,
  • Puis, double cliquer sur le module nommé Module1,
Ainsi, nous affichons sa feuille de code au centre de l'écran. Elle est vierge pour l'instant.
  • Dans cette feuille de code, créer la procédure compteLignes comme suit :
Sub compteLignes()

End Sub


Il s'agit d'un nom simple mais explicite. ...
Dim combien As Byte
Dim i As Byte: Dim L As Byte: Dim C As Byte
Dim nbLignes As Byte: Dim nbColonnes As Byte
...


Toutes ces variables sont déclarées comme des entiers courts (Byte). La variable combien doit servir à mémoriser le nombre de tableaux contenus dans le document. C'est grâce à elle que nous pourrons initier une boucle pour les parcourir tous. Et c'est la variable i qui servira de compteur incrémenté dans cette boucle. A l'intérieur de cette boucle, donc pour chaque tableau, nous allons prélever les nombres de lignes et de colonnes, que nous allons stocker temporairement et respectivement dans les variables nbLignes et nbColonnes. Grâce à elles, nous allons pouvoir enclencher deux boucles imbriquées pour parcourir chaque ligne de chaque colonne. Et cette fois, ce sont les variables C et L qui doivent servir de compteurs incrémentés.

Nombre de tableaux dans le document
Tables est un objet enfant de l'objet parent ActiveDocument. Il renvoie la collection des tableaux contenus dans le document en cours. Cet objet offre naturellement des propriétés et méthodes. L'une de ses propriétés renseigne sur le nombre de tableaux.
  • Après les variables, ajouter les lignes VBA suivantes :
...
combien = ActiveDocument.Tables.Count
MsgBox "Le document propose " & combien & " tableaux"
...


C'est donc la propriété Count de l'objet Tables qui renvoie la quantité de tableaux enfermés dans le document actif. Ensuite, pour tester sa cohérence, nous affichons sa valeur dans une boîte de dialogue grâce à la fonction MsgBox.
  • Enregistrer les modifications (CTRL + S),
  • Puis, exécuter le code VBA Word avec la touche F5 du clavier,
Une boîte de dialogue apparaît aussitôt en effet. Et comme vous pouvez le voir, elle confirme que le document en cours propose trois tableaux.

Compter le nombre de tableaux présents dans le document Word en VBA

Cette information est bien sûr dynamique. Elle s'ajustera automatiquement si vous ajoutez ou supprimez des tableaux.
  • Cliquer sur le bouton Ok pour revenir dans l'éditeur VBA,
  • Puis, passer la ligne du MsgBox en commentaire en la préfixant d'une apostrophe ('),
Parcourir les tableaux du document
Maintenant, il est question de passer en revue chacun de ces tableaux. Pour cela, une simple boucle for, correctement bornée, est nécessaire. Il suffit de partir du premier en initialisant notre variable i que nous devons faire rejoindre le dernier grâce à notre variable combien.
  • A la suite du code, créer la boucle For Next, comme suit :
...
For i = 1 To combien

Next i
...


A chaque passage, la variable i va subir un incrément d'une unité pour que le code VBA puisse porter son attention sur le prochain tableau, jusqu'à avoir atteint le dernier.

Nombres de lignes et de colonnes
Désormais, à l'intérieur de cette boucle, pour que nous puissions parcourir les lignes et les colonnes de chaque tableau, nous devons connaître leurs nombres respectifs. La collection Tables permet aussi de pointer sur un tableau précis. Pour cela, il suffit de lui passer le numéro ou la position du tableau dans l'énumération. Et cette position est connue à chaque passage dans la boucle. Elle est renseignée par la variable i.
  • Dans la boucle, ajouter les instructions VBA suivantes :
...
nbLignes = ActiveDocument.Tables(i).Rows.Count
nbColonnes = ActiveDocument.Tables(i).Columns.Count
MsgBox "Le tableau " & i & " contient " & nbLignes & " lignes et " & nbColonnes & " colonnes."
...


Nous l'avons dit, l'objet Tables offre un certain nombre de propriétés et méthodes. Les propriétés Rows et Columns sont elles aussi des collections. Elles représentent respectivement les lignes et les colonnes du tableau en cours d'analyse (Tables(i)). De fait, elles offrent elles aussi des propriétés. Et c'est donc la propriété Count qui renseigne sur ces quantités de rangées. Ensuite et à titre de vérification, nous affichons ces informations dans une boîte de dialogue, de nouveau avec la fonction VBA MsgBox.
  • Enregistrer les modifications (CTRL + S) et exécuter le code (F5),
Compter les nombres de lignes et de colonnes des tableaux du document Word en VBA

Comme vous pouvez l'apprécier, grâce à notre boucle, tous les tableaux du document sont passés en revue. Il suffit de cliquer sur le bouton Ok des boîtes de dialogue qui se succèdent. Et pour chacun, les nombres de lignes et de colonnes sont parfaitement retournés.
  • Cliquer sur le bouton Ok de la dernière boîte de dialogue pour revenir dans l'éditeur VBA,
  • Puis, préfixer la ligne du MsgBox d'une apostrophe pour la passer en commentaire,
Sa vocation n'était que de réaliser une vérification.

Parcourir les lignes et les colonnes
Maintenant, pour démontrer qu'il est possible de maîtriser les tableaux d'un document Word dans les moindres détails, nous devons franchir un palier avec une double boucle, elle-même incrustée dans la première, celle des tableaux. Il est question de parcourir chaque ligne de chaque colonne et ce, pour chaque tableau. Et pour démontrer le bon fonctionnement de la technique, nous proposons d'écrire dans chaque cellule de chaque tableau, avec des informations contextuelles.
  • Dans la boucle, à la suite du code VBA, créer la double boucle suivante :
...
For C = 1 To nbColonnes
For L = 1 To nbLignes
ActiveDocument.Tables(i).Cell(L, C).Range.Text = "L:" & L & "C:" & C
Application.ScreenRefresh
Next L
Next C
...


Puisque nous sommes embarqués dans la boucle des tableaux, cette première nouvelle boucle (For C = 1 To nbColonnes) est destinée à parcourir chaque colonne de chaque tableau. Celle qui lui est imbriquée (For L = 1 To nbLignes) permet alors de parcourir chaque ligne de chaque colonne passée en revue pour chaque tableau. Dès lors, nous pointons sur chaque cellule ainsi parcourue grâce à la propriété Cell de l'objet Tables. Comme avec l'objets Cells en VBA Excel, nous lui passons l'indice de ligne en cours d'analyse (L) ainsi que l'indice de colonne (C). Puis, nous descendons hiérarchiquement jusqu'à sa propriété Text de manière à y incruster ces informations incrémentées à chaque passage. Enfin, nous exploitons la méthode ScreenRefresh de l'objet Application pour rafraîchir l'écran à chaque traitement réalisé par ces boucles. L'objectif est de visualiser l'inscription progressive des données dans chaque cellule de chaque tableau.
  • Enregistrer les modifications (CTRL + S) et basculer sur le document Word (ALT + Tab),
  • En haut de la fenêtre Word, cliquer sur l'onglet Développeur pour activer son ruban,
  • Tout à fait à gauche du ruban, cliquer alors que le bouton Macros,
  • En bas de la boîte de dialogue qui suit, choisir le document en cours avec la liste déroulante,
  • Dans la zone centrale, cliquer ensuite sur la macro compteLignes pour la sélectionner,
  • Puis, cliquer sur le bouton Exécuter pour visualiser le traitement,
Exécuter la macro VBA pour compter les lignes et colonnes des tableaux du document Word

Comme vous pouvez l'apprécier visuellement, les tableaux sont effectivement passés en revue tour à tour. Et chaque cellule de chaque colonne est effectivement remplie des informations numériques contextuelles.

Ecrire dans chaque cellule de chaque tableau Word en VBA

Le code VBA Word complet que nous avons construit pour parcourir chaque tableau du document et inscrire des informations dans chaque cellule, est le suivant :

Sub compteLignes()
Dim combien As Byte
Dim i As Byte: Dim L As Byte: Dim C As Byte
Dim nbLignes As Byte: Dim nbColonnes As Byte

combien = ActiveDocument.Tables.Count
'MsgBox "Le document propose " & combien & " tableaux"

For i = 1 To combien
nbLignes = ActiveDocument.Tables(i).Rows.Count
nbColonnes = ActiveDocument.Tables(i).Columns.Count
'MsgBox "Le tableau " & i & " contient " & nbLignes & " lignes et " & nbColonnes & " colonnes."
For C = 1 To nbColonnes
For L = 1 To nbLignes
ActiveDocument.Tables(i).Cell(L, C).Range.Text = "L:" & L & "C:" & C
Application.ScreenRefresh
Next L
Next C
Next i

End Sub


 
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