1. Introduction▲
Dans les articles précédents, nous avons découvert les bases du VBA.
Le dernier en date vous à proposé de minipuler l'Objet Application Word et les documents.
Cet article va vous apprendre à manipuler les paragraphes et les tableaux contenus dans vos documents .
2. Range et Selection▲
Avant d'aborder le contenu du document, nous allons voir deux objets : Range et Selection. Ces deux objets sont
fort semblables. L'objet Range représente une plage de données alors que l'objet Selection est la Selection opérée par le curseur.
Le point d'insertion dans votre document est la plus simple expression de votre Selection.
Mais un exemple est bien plus pratique pour la compréhension.
Tapez un texte dans un document, si vous n'avez pas vraiment envie d'écrire, utiliser l'expression suivante :
=
Rand
(
10
,10
)
suivi de Enter dans votre document, vous verrez qu'il se remplit tout seul d'un texte sans queue ni tête qui est malgé tout utilisable pour nos manipulation.
Sélectionnez une portion de texte à la souris et exécutez ce code :
Sub
AfficherSelection
(
)
Debug.Print
Selection.Text
End
Sub
Vous venez de découvrir l'objet Selection.
Il ne peut y avoir qu'un seul objet Selection !
Pour imager un objet Range, nous allons procéder différemment, toujours avec le même texte utilisez ce code :
Sub
AfficherRange
(
)
Debug.Print
ActiveDocument.Paragraphs
(
2
).Range.Text
End
Sub
L'objet Range réprésente la plage de données contenue dans un objet Paragraphe.
Essayez cette fois le même code sans faire appel à l'objet Range.
Sub
AfficherRange
(
)
Debug.Print
ActiveDocument.Paragraphs
(
2
).Text
End
Sub
Vous recevez un magnifique message : Erreur de compilation !
Il est possible d'obtenir un objet sélection au départ du code, essayez :
Sub
SelectionnerTexte
(
)
ActiveDocument.Paragraphs
(
4
).Range.Select
End
Sub
Vous verrez que le quatrième paragraphe de votre document est sélectioné comme si vous l'aviez fait à la souris.
Nous aurons l'occasion de revenir plus en détail sur ces objets. Mais il était nécessaire de les aborder sommairement pour la suite.
3. Les paragraphes▲
La collection la plus importante d'un document est celle qui contient les paragraphes "Paragraphs". Ce sont eux qui contiennent le texte, la mise en forme, ...
Comme nous travaillons avec une collection, il est possible d'atteinde un membre de cette collection par son Index.
Si vous désirez atteindre le quatrième paragraphe de votre document, vous devrez utiliser :
ActiveDocument.Paragraphs
(
4
)....
Dans ce cas, vous renvoyez un objet Paragraph de la collection
3-A. En pratique▲
3-A-1. Récupérer l'Id d'un paragraphe▲
Pour récupérer l'ID d'un paragraphe, il est nécessaire de ruser.
Dans le code ci-dessous, nous partons du point d'insertion, nous étendons la sélection jusqu'au début du document,
il ne nous reste qu'à compter le nombre de paragraphes que la sélection contient.
Sub
RecuperationIDPara
(
)
Selection.HomeKey
Unit:=
wdStory, Extend:=
wdExtend
Debug.Print
Selection.Paragraphs.Count
End
Sub
3-A-2. Les styles et les caractères d'un paragraphe▲
Comme déjà mentionné, le style ainsi que la police de caractère ne sont pas appliqués aux paragraphes mais aux données qu'ils contiennent.
Sub
AppliquerStyle
(
)
ActiveDocument.Paragraphs
(
1
).Range.Style
=
"Titre 1"
End
Sub
Pour appliquer un style, vous avez plusieurs possibilités pour le nom du style. Vous pouvez utiliser le nom qui apparait dans la galerie des styles, dans notre exemple "Titre 1", ou utiliser une constante Word : wdStyleHeading1.
De la même manière nous pouvons récupérer le style apliqué au paragraphe :
Sub
RecupererStyle
(
)
Debug.Print
ActiveDocument.Paragraphs
(
1
).Range.Style
End
Sub
Si vous appliquez le style au paragraphe et pas à son contenu, vous ne rencontrerez pas de problème, mais par habitude travaillez avec l'objet Range.
Dans la même optique, vous pouvez modifier la police de caractère d'un paragraphe sans passer par les styles.
Sub
ModifierPolice
(
)
With
ActiveDocument.Paragraphs
(
3
).Range.Font
.Name
=
"Arial"
.Bold
=
True
.StrikeThrough
=
True
End
With
End
Sub
Nous l'avons vu plus tôt, With permet d'appliquer à un même objet plusieurs instructions. Instruction With ... End With
3-A-3. Parcourir les paragraphes d'un document▲
Pour parcourir les paragraphes d'un document, nous allons avoir besoin d'utiliser une boucle.
Les boucles
Les paragraphes (Paragraph) font partie de la collection Paragraphs, nous allons utiliser une boucle For Each ... Next.
Sub
ParcourirParagraphes
(
)
'Déclaration de l'objet paragraphe
Dim
pAra As
Paragraph
'Comme nous allons parcourir la collection, il n'est pas utile d'utiliser
'l'opérateur d'affectation Set
For
Each
pAra In
ActiveDocument.Paragraphs
Debug.Print
Len
(
pAra.Range.Text
)
Next
pAra
End
Sub
La variable pAra a volontairement été écrite avec une majuscule en seconde posisition. De cette manière, lorsque vous saissisez le nom de la variable en minuscule, le VBE corrige automatiquement et vous êtes certain de la bonne orthographe.
Une paragraphe peut contenir des phrases Sentences. Créez un document vierge, tapez : =rand(1,10) suivi Enter pour ensuite essayer ce code.
Sub
CompterPhrases
(
)
Debug.Print
ActiveDocument.Paragraphs
(
1
).Range.Sentences.Count
End
Sub
Vous devriez obtenir 10. Ce code compte le nombre de phrases contenue dans le premier paragraphe du documet.
Malheureusement, les mots ne sont pas des objets en Word, mais malgré tout, il existe une collection Words qui représente les mots contenus dans une portion du document.
Sub
CompterMots
(
)
Debug.Print
ActiveDocument.Paragraphs
(
1
).Range.Words.Count
End
Sub
Exercice :
Dans ce même morceau de document, vous allez compter le nombre de mots dans chaque phrase du premier paragraphe.
Attention, l'objet Word n'existe pas, vous devrez le déclarer en tant que variant.
Exercice :
Créez un nouveau document, remplissez le avec : =rand(10,2), supprimez le dernier paragraphe vide
Mettez en gras et double souligné le troisième mot de chaque paragraphe.
3-B. Méthodes▲
3-B-1. Add▲
Comme pour toutes les collections, cette méthode va ajouter un paragraphe.
Sub
AjouterParagraph
(
)
ActiveDocument.Paragraphs.Add
Range:=
Paragraphs
(
3
).Range
End
Sub
L'argument Range passé à la méthode peut être omis et dans ce cas, le paragraphe est ajouté au point d'insertion.
Sub
AjouterParagraph
(
)
ActiveDocument.Paragraphs.Add
End
Sub
Il existe une méthode de l'objet Selection qui produit le même effet :
Sub
AjouterParagraphe
(
)
Selection.InsertParagraph
End
Sub
3-B-2. Space1 - Space15 - Space2▲
Cette méthode ajoute un interligne Simple, de 1,5 ou double aux paragraphes spécifiés.
La mise en oeuvre est assez simple :
ActiveDocument.Paragraphs.Space15
Cette méthode peut s'appliquer à la collection ou à un membre de la collection.
ActiveDocument.PAragraphs
(
1
).Space2
3-B-3. OutlineDemote - OutlinePromote▲
Ces deux propriétés sont similaires, seule leur action est différente. Dans le case de Promote, on va changer le niveau de titre des paragraphes spécifiés pour monter le niveau de titre de 1 et pour Demote, on va diminuer le niveau de titre de 1.
Si vous avez un paragraphe de niveau de titre 2 et que vous lui appliquez la méthode OutlinePromote, vous aurez un
paragraphe de niveau de titre 1.
De la même manière, la méthode OutlineDemote va diminuer le niveau de titre de 1, si vous appliquez cette méthode à
un paragraphe de titre 2, vous obtiendrez un titre de niveau 3.
Il est beaucoup plus facile d'attribuer un style de titre que de passer par cette méthode.
ActiveDocument.Paragraphs
(
4
).OutlineDemote
3-C. Propriétés▲
Les propriétés pour les objets paragraphes sont plus interressantes que les methodes.
3-C-1. Alignment▲
Cette propriété permet l'alignement du paragraphe, vous avez plus de possibilités qu'avec l'interface graphique.
ActiveDocument.Paragraphs
(
1
).Alignment
=
wdAlignParagraphRight
L'alignement peut prendre les valeurs ci-dessous :
Valeur | Description |
---|---|
wdAlignParagraphCenter | Aligné au centre. |
wdAlignParagraphDistribute | Les caractères du paragraphe sont distribués équitablement pour remplir toute la largeur du paragraphe. |
wdAlignParagraphJustify | Totalement justifié. |
wdAlignParagraphJustifyHi | Justifié avec un rapport élévé de compression de caractères. |
wdAlignParagraphJustifyLow | Justifié avec un faible rapport de compression de caractères. |
wdAlignParagraphJustifyMed | Justifié avec un rapport moyen de compression de caractères. |
wdAlignParagraphLeft | Aligné à gauche. |
wdAlignParagraphRight | 2 Aligné à droite. |
3-C-2. Borders▲
Ajoute des bordures au paragraphe spécifié. Un exemple sera plus intéressant qu'une description.
Sub
AjouterBordure
(
)
'Ajoute les bordures au paragraphe
With
ActiveDocument.Paragraphs
(
6
)
.Borders
(
wdBorderLeft).Visible
=
True
.Borders
(
wdBorderBottom).Visible
=
True
.Borders
(
wdBorderTop).Visible
=
True
.Borders
(
wdBorderRight).Visible
=
True
End
With
'Modifie l'aspect de la bordure
With
ActiveDocument.Paragraphs
(
6
).Borders
.OutsideLineStyle
=
wdLineStyleDashDot
End
With
End
Sub
4. Les tableaux▲
4-A. En pratique▲
Les tableaux font partie de la collection Tables. Le plus simple pour les adresser est de passer par leur index.
ActiveDocument.Tables
(
1
)
Il est possible de parcourir les différentes tables de votre document à l'aide d'une boucle.
Sub
ParcourirTables
(
)
Dim
oTbl As
Table
For
Each
oTbl In
ActiveDocument.Tables
...
Next
oTbl
End
Sub
Il n'est pas possible d'affecter un nom à une table en Word.
Les tableaux sont constitués de lignes et de colonnes.
Sub
CompterLignesEtColonnes
(
)
Debug.Print
ActiveDocument.Tables
(
1
).Rows.Count
'Nombre de lignes
Debug.Print
ActiveDocument.Tables
(
1
).Columns.Count
'Nombre de colonnes
End
Sub
En plus de l'addressage des tableaux, il est possible d'adresser chaque cellule de chaque table. Pour l'adressage des cellules,
c'est toujours le même principe, on utilise les coordonées de la cellule.
Pour ajouter du texte dans une cellule, vous devez l'adresser et ensuite affecter à l'objet Range de la cellule le texte voulu.
Sub
AjouterTexte
(
)
ActiveDocument.Tables
(
1
).Cell
(
1
,1
).Range.Text
=
"A1"
End
Sub
Exercice
Récuperez le texte que vous venez d'ajouter dans la cellule avec un Debug.Print.
4-A-1. Ajout d'un tableau dans un document▲
Comme pour beaucoup d'objet, la méthode pour ajouter est Add.
Sub
AjouterTableau
(
)
ActiveDocument.Tables.Add
Range:=
Selection.Range
, numrows:=
5
, numcolumns:=
6
End
Sub
Cette table de 5 lignes et 6 colonnes sera ajoutée à l'emplacement du curseur de la souris.
Exercice
En vous basant sur le tuto précédent sur les documents, vous allez sur le document actif créer un table de 3 colonnes et
3 lignes.
Par le code, vous allez créer un nouveau document dans lequel vous allez ajouter une table contenant le même nombre de
lignes et de colonnes.
4-A-2. Ajouter une ligne ou colonne à un tableau▲
En Word, un tableau ou table est constitué de lignes et de colonnes, vous avez utilisé l'exercice précédent deux arguments pour ces objets. Vous pouvez récupérer le nombre de lignes et de colonnes de votre tableau en utilisant la propriété Count.
Sub
AfficherLignesEtColonnes
(
)
Dim
intR As
Integer
Dim
intC As
Integer
Dim
strMessage As
String
'Récupération du nombre de lignes et de colonnes
intR =
ActiveDocument.Tables
(
1
).Rows.Count
intC =
ActiveDocument.Tables
(
1
).Columns.Count
'Élaboration du message par concaténation
strMessage =
"Votre tableau contient : "
&
vbCrLf
strMessage =
strMessage &
intC &
" colonnes "
&
vbCrLf
strMessage =
strMessage &
intR &
" lignes."
'Affichage du message
MsgBox
strMessage
End
Sub
Pour ajouter une ligne ou une colonne à un tableau, nous allons procéder de la même façon, mais nou sallons utiliser la méthode Add au lieu de la propriété Count.
Sub
AjouterLigneEtColonne
(
)
Dim
oTbl As
Table
Set
oTbl =
ActiveDocument.Tables
(
1
)
oTbl.Rows.Add
oTbl.Columns.Add
Set
oTbl =
Nothing
End
Sub
Ce code va simplement ajouter un ligne et une colonne à la fin de votre tableau pour la ligne et à la droite pour la colonne.
Ce serait beaucoup plusinéteressant de pouvoir ajouter cette ligne ou cette colonne à un endroit de votre choix.
La méthode Add peut prendre un argument pour l'ajout.
Sub
AjouterLigneEtColonne
(
)
Dim
oTbl As
Table
Set
oTbl =
ActiveDocument.Tables
(
1
)
oTbl.Rows.Add
BeforeRow:=
oTbl.Rows
(
2
)
oTbl.Columns.Add
BeforeColumn:=
oTbl.Columns
(
2
)
Set
oTbl =
Nothing
End
Sub
Dans l'exemple ci-dessus, nous ajoutons un ligne avant la seconde et pareil pour la colonne. La seule difficulté est la valeur passée à l'argument, ce n'est pas un entier, mais un objet ligne ou colonne.
4-A-3. Contenu d'une cellule▲
Lorsque vous ajoutez ou utilisez une table dans un document, vous pouvez aussi ajouter des données dans les cellules. Pour ajouter des données dans une cellule, la méthode est assez simple, il suffit d'adresser cette cellule est d'affecter les données au Range de la cellule
ActiveDocument.Tables
(
1
).Cell
(
1
,1
).Range.Text
=
"Mon Texte"
Pour récupérer le contenu d'une cellule, la méthode est le même que pour l'ajout de données.
Debug.Print
ActiveDocument.Tables
(
1
).Cell
(
1
,1
).Range.Text
Nous avons vu comment ajouter un contenu à une cellule et un exercice pour le récupérer. Lors de cette récupération, vous aurez pobablement remarqué que le texte récupéré est plus long que le texte ajouté. Ce phénomène est dû aux caractères non imprimables qui délimitent la cellule. Pour remédier à cet inconvénient, nous allons fabriquer une petite fonction utilisant certaines fonctions que nous avons vu dans les chapitres précédents, les fonctions Len et Left.
Nous allons récupérer le contenu, mesurer sa taille en comptant le nombre de caractères présents et nous allons prendre tous les caractères sans les deux derniers. Nous allons appeler cette fonction NetText et lui passer en paramètre le texte contenu dans la cellule qui est à traiter.
Petit rappel
Appel d'une procédure
Public
Function
NetText
(
stTemp As
String
) As
String
'Nous utilisans les caractères de la chaîne sans les deux derniers
NetText =
Left
(
stTemp , Len
(
stTemp) -
2
)
End
Sub
Souvenez vous de cette focntion, vous en aurez souvent besoin.
L'utilisation de l'ensemble est assez simple :
Debug.Print
NetText ActiveDocument.Tables
(
1
).Cell
(
1
,1
).Range.Text
Il est fréquent que l'on soit tenu d'ajouter un ligne à un table pour y injecter des données. Pour y parvenir nous allons utiliser la méthode Add et ensuite la propriété Count pour obtenir le nombre de ligne et de cette manière, nous pourrons adresser la dernière.
Sub
AjouterLigneEtDonnees
(
)
Dim
oTbl As
Table
Set
oTbl =
ActiveDocument.Tables
(
1
)
oTbl.Rows.Add
oTbl.Rows
(
oTbl.Rows.Count
).Cell
(
1
).Range.Text
=
"Dernière Ligne"
Set
oTbl =
Nothing
End
Sub
Exercice
Nous avons vu comment ajouter un tableau à un document et comment adresser les cellules de ce tableau.
Vous allez créer un nouveau document y ajouter un table qui sera une table de multiplication pour les nombres de
1 à 10 et 20 valeurs par nombre. Vous ajouterez des titres aux colonnes et aux lignes.
4-A-4. Format d'une cellule▲
En plus d'un contenu, le Range de la cellule possède des attributs permettant de définir le format du texte contenu et de la cellule elle-même.
ous aurez probablement remarqué que lorsque vous insérez un tableau dans un document, toutes les lignes sont transparentes. Le code ci-dessous va ajouter une bordure au tableau et definir des lignes pour border les cellules.
Sub
AjouterContour
(
)
Dim
oTbl As
Table
Set
oTbl =
ActiveDocument.Tables
(
1
)
With
oTbl.Borders
.Enable
=
True
.InsideLineStyle
=
wdLineStyleDot
.OutsideLineStyle
=
wdLineStyleSingle
.InsideLineWidth
=
wdLineWidth050pt
.OutsideLineWidth
=
wdLineWidth100pt
End
With
End
Sub
Le texte que vous allez insérer aura le format par défaut des cellules, mais vous pouvez modifier le format du texte contenu dans une cellule.
With
oTbl.Rows
(
1
).Range.Font
.Bold
=
True
.Underline
=
wdUnderlineDouble
.UnderlineColor
=
wdColorBrightGreen
End
With
4-B. Méthodes▲
4-B-1. Add▲
Nous avons déjà utilisé cette méthode, elle permet l'ajout d'une table à la collection des tables du document.
ActiveDocument.Tables.Add
Range:=
Selection.Range
, numrows:=
5
, numcolumns:=
6
Les trois arguments ne sont pas facultatifs, Range représente l'endroit où la table sera ajoutée, numrows le nombre de lignes et numcolumns le nombre de colonnes.
4-B-2. Delete▲
Sans aucune surprise, cette méthode va supprimer une table de votre document.
ActiveDocument.Tables
(
1
).Delete
4-B-3. Select▲
Cette méthode va sélectionner une table de votre document. Vous pourrez ensuite utiliser l'objet Selection pour effectuer certaines actions.
ActiveDocument.Tables
(
1
).Select
Selection.Copy
Documents.Add
ActiveDocument.Select
Selection.Paste
4-B-4. Sort▲
Méthode intéressante, elle permet de trier le contenu d'une table. Il existe trois méthodes de tri pour une table :
- SortAscending
- SortDescending
- Sort
Les deux premières méthodes permettent un tri rapide d'une table. Le tri sera croissant ou décroisant selon que l'on utilise l'un ou l'autre. Leur utilisation est simple et ne comporte pas d'argument.
Sub
TriTable
(
)
ActiveDocument.Tables
(
1
).SortDescending
End
Sub
La première ligne de la table est systématiquement exclue du tri avec ces deux méthodes.
La méthode Sort est un peu plus complexe, mais plus performante. Vous pouvez avec cette méthode effectuer un tri sur plusieurs colonnes, inclure la première ligne dans votre tri,...
4-C. Propriétés▲
4-C-1. Count▲
La propriété la plus universelle s'applique aussi aux tables d'un document, elle va renvoyer le nombre d'objets de la collection.
debug.Print
ActiveDocument.Tables.Count
4-C-2. AllowAutofit▲
Si vous voulez redimentionner un tableau en fonction de son contenu, c'est la propriété que vous devez utiliser.
ActiveDocument.Tables
(
1
).AllowAtofit
4-C-3. AllowPageBreaks ▲
Il est très embêtant de voir un tableau coupé en deux par un saut de page. Lorsque cette propriété est sur False, votre tableau sera en un seul morceau si c'est possible. En effet, si votre tableau fait plusieurs pages, vous n'aurez pas d'autre solution que de le scinder.
ActiveDocument.Tables
(
1
).AllowPageBreaks
=
False
4-C-4. Borders ▲
4-C-5. Range▲
Cette propriété renvoie la partie du document cntenue dans un tableau.
Sub
TablesRange
(
)
Debug.Print
ActiveDocument.Tables
(
2
).Range.Text
End
Sub
Ce code va renvoyer le contenu de toutes les cellules de votre tableau.
4-C-6. Tables▲
Cette propriété peut parraître déplacée, mais une table peut contenir une autre table.
Sub
AjouterTables
(
)
Dim
oTbl As
Table
Set
oTbl =
ActiveDocument.Tables.Add
(
Range:=
Selection.Range
, numrows:=
2
, numcolumns:=
2
)
oTbl.Cell
(
1
, 1
).Select
Selection.Tables.Add
Range:=
Selection.Range
, numrows:=
1
, numcolumns:=
2
End
Sub
5. Solutions▲
5-A. Compter les mots des phrases▲
Nous allons parcourir la collection des phrases pour compter le nombre de mots contenu dans chaque phrase. du premier paragraphe.
Sub
CompterMots
(
)
Dim
wdSentence
' ne pas donner de type à la variable équivaut à la déclarer
' comme variant
' Faire une boucle sur la collection Sentence et en compter les mots
For
Each
wdSentence In
ActiveDocument.Paragraphs
(
1
).Range.Sentences
Debug.Print
wdSentence.Words.Count
Next
wdSentence
End
Sub
Ne pas déclarer le type de la variable ne doit être utilisé que si ce type n'existe pas.
5-B. Mettre troisième mot en gras et double souligné▲
Comme nous devons parcourir tous les paragraphes de la collection, nous allons déclarer un objet paragraphe et une boucle For Each ... Next. Pour chaque paragraphe, nous allons adresser le troisième mot de la collection des mots de ce paragraphe.
Sub
MettreMot3Gras
(
)
'Déclaration des variable
Dim
pAra As
Paragraph
'Boucle sur les paragraphes du document
For
Each
pAra In
ActiveDocument.Paragraphs
With
pAra.Range.Words
(
3
).Font
.Bold
=
True
.Underline
=
wdUnderlineDouble
End
With
Next
pAra
End
Sub
5-C. Ajouter un document contenant une table▲
Pour ajouter une table vous devez spécifier le nombre de lignes et de colonnes que votre table va contenir. Pour y parvenir, nous allons utiliser deux variables qui vont contenir le nombre de lignes (intR) et de colonnes (intC). Pour l'ajout de la nouvelle table, nous utiliserons ces deux variables.
Sub
AjouterDocEtTable
(
)
Dim
intR As
Integer
Dim
intC As
Integer
With
ActiveDocument.Tables
(
1
)
intR =
.Rows.Count
'Nombre de lignes
intC =
.Columns.Count
'Nombre de colonnes
End
With
'Ajout du nouveau document
Documents.Add
'Ajout d'une table
ActiveDocument.Tables.Add
Range:=
Selection.Range
, numrows:=
intR, numcolumns:=
intC
End
Sub
Comme le document ajouté devient le Document Actif, pour ajouter la table, nous utiliserons l'ActiveDocument.
5-D. Table de multiplication▲
Avant de créer notre document, nous devons déterminer combien lignes et de colonnes votre table va comporter.
L'ennoncé demande 10 nombres, 20 valeurs et un titre par colonne et par ligne. Ce qui va nous donner 11 colonnes et
21 lignes.
Nous allons en profiter pour changer l'apparence de notre table en ajoutant des bordures extérieures et intérieures, les
titres des lignes et colonnes seront en gras souligné.
Pour l'ajout d'un nouveau document, nous l'avons déjà vu plus tôt.
Dim
oDoc As
Document
Set
oDoc =
Application.Documents.Add
Pour l'ajout d'une table, vous l'avez déjà fait.
Dim
oTbl As
Table
Dim
intR As
Integer
'Nombre de lignes
Dim
intC As
Integer
'Nombre de colonnes
' Ajout de notre table
Set
oTbl =
oDoc.Tables.Add
(
Range:=
Selection.Range
, NumRows:=
21
, NumColumns:=
11
)
Pour les résultats, nous allons utiliser une boucle
For
intR =
2
To
21
For
intC =
2
To
11
oTbl.Cell
(
intR, intC).Range.Text
=
(
intC -
1
) *
(
intR -
1
)
Next
intC
Next
intR
Il nous manque les données pour les titres des lignes et colonnes et nous allons en profiter pour mettre notre test en forme.
For
intR =
2
To
21
'Données de la première ligne
oTbl.Cell
(
intR, 1
).Range.Text
=
intR -
1
'Mise en forme de chaque cellule
With
oTbl.Cell
(
intR, 1
).Range.Font
.Bold
=
True
.Underline
=
wdUnderlineDouble
.UnderlineColor
=
wdColorBlack
End
With
Next
intR
For
intC =
2
To
11
'Données de la première colonnes
oTbl.Cell
(
1
, intC).Range.Text
=
intC -
1
'Mise en forme
With
oTbl.Cell
(
1
, intC).Range.Font
.Bold
=
True
.Underline
=
wdUnderlineDouble
.UnderlineColor
=
wdColorBlack
End
With
Next
intC
Finalement, il nous reste la mise en forme de la table
With
oTbl.Borders
.Enable
=
True
.InsideLineStyle
=
wdLineStyleDot
.OutsideLineStyle
=
wdLineStyleSingle
.InsideLineWidth
=
wdLineWidth050pt
.OutsideLineWidth
=
wdLineWidth100pt
End
With
Si nous assemblons tous nos petits morceaux de code, nous obtenons ceci :
Sub
TableDeMultiplication
(
)
Dim
oDoc As
Document
Dim
oTbl As
Table
Dim
intR As
Integer
'Nombre de lignes
Dim
intC As
Integer
'Nombre de colonnes
Set
oDoc =
Application.Documents.Add
' Ajout de notre table
Set
oTbl =
oDoc.Tables.Add
(
Range:=
Selection.Range
, NumRows:=
21
, NumColumns:=
11
)
'Les résultats
For
intR =
2
To
21
For
intC =
2
To
11
oTbl.Cell
(
intR, intC).Range.Text
=
(
intR -
1
) *
(
intC -
1
)
Next
intC
Next
intR
'Les titres
intR =
0
intC =
0
For
intR =
2
To
21
oTbl.Cell
(
intR, 1
).Range.Text
=
intR -
1
With
oTbl.Cell
(
intR, 1
).Range.Font
.Bold
=
True
.Underline
=
wdUnderlineDouble
.UnderlineColor
=
wdColorBlack
End
With
Next
intR
For
intC =
2
To
11
oTbl.Cell
(
1
, intC).Range.Text
=
intC -
1
With
oTbl.Cell
(
1
, intC).Range.Font
.Bold
=
True
.Underline
=
wdUnderlineDouble
.UnderlineColor
=
wdColorBlack
End
With
Next
intC
'Mise en forme
'Bordure
With
oTbl.Borders
.Enable
=
True
.InsideLineStyle
=
wdLineStyleDot
.OutsideLineStyle
=
wdLineStyleSingle
.InsideLineWidth
=
wdLineWidth050pt
.OutsideLineWidth
=
wdLineWidth100pt
End
With
End
Sub
6. Liens Utiles▲
7. Remerciements▲
Je tiens à remercier pour leurs contributions à ce projet :
- lorenzole+bo
- Philippe JOCHMANS
- Caro-Line
- Arkham46
- Jeannot45