Utilisation des tableaux

Cette rubrique contient des exemples Visual Basic liés aux tâches identifiées dans les sections suivantes.

Création d'un tableau, insertion de texte et application d'une mise en forme

Cet exemple montre comment insérer au début du document actif un tableau constitué de quatre colonnes et trois lignes. La structure For Each...Next est utilisée pour passer dans chacune des cellules du tableau. Au sein de cette structure For Each...Next, la méthode InsertAfter de l'objet Range est utilisée pour ajouter du texte dans les cellules du tableau (« Cell 1 », « Cell 2 », etc.).

Sub CreateNewTable() 
 Dim docActive As Document 
 Dim tblNew As Table 
 Dim celTable As Cell 
 Dim intCount As Integer 
 
 Set docActive = ActiveDocument 
 Set tblNew = docActive.Tables.Add( _ 
 Range:=docActive.Range(Start:=0, End:=0), NumRows:=3, _ 
 NumColumns:=4) 
 intCount = 1 
 
 For Each celTable In tblNew.Range.Cells 
  celTable.Range.InsertAfter "Cell " & intCount 
  intCount = intCount + 1 
 Next celTable 
 
 tblNew.AutoFormat Format:=wdTableFormatColorful2, _ 
 ApplyBorders:=True, ApplyFont:=True, ApplyColor:=True 
End Sub

Insertion de texte dans une cellule de tableau

Cet exemple montre comment insérer du texte dans la première cellule du premier tableau du document actif. La méthode Cell renvoie un seul objet Cell . La propriété Range renvoie un objet Range. La méthode Delete est utilisée pour supprimer le texte existant, et la méthode InsertAfter pour insérer le texte « Cell 1,1 ».

Sub InsertTextInCell() 
 If ActiveDocument.Tables.Count >= 1 Then 
  With ActiveDocument.Tables(1).Cell(Row:=1, Column:=1).Range 
   .Delete 
   .InsertAfter Text:="Cell 1,1" 
  End With 
 End If 
End Sub

Renvoi du texte d'une cellule de tableau sans l'indicateur de fin de cellule

Cet exemple montre comment renvoyer et afficher le contenu de chacune des cellules situées dans la première ligne du premier tableau du document.

Sub ReturnTableText() 
 Dim tblOne As Table 
 Dim celTable As Cell 
 Dim rngTable As Range 
 
 Set tblOne = ActiveDocument.Tables(1) 
 For Each celTable In tblOne.Rows(1).Cells 
  Set rngTable = ActiveDocument.Range(Start:=celTable.Range.Start, _ 
  End:=celTable.Range.End - 1) 
  MsgBox rngTable.Text 
 Next celTable 
End Sub
Sub ReturnCellText() 
 Dim tblOne As Table 
 Dim celTable As Cell 
 Dim rngTable As Range 
 
 Set tblOne = ActiveDocument.Tables(1) 
 For Each celTable In tblOne.Rows(1).Cells 
  Set rngTable = celTable.Range 
  rngTable.MoveEnd Unit:=wdCharacter, Count:=-1 
  MsgBox rngTable.Text 
 Next celTable 
End Sub

Conversion de texte en tableau

Cet exemple montre comment insérer du texte délimité par des tabulations au début du document actif, puis convertir le texte en tableau.

Sub ConvertExistingText() 
 With Documents.Add.Content 
  .InsertBefore "one" & vbTab & "two" & vbTab & "three" & vbCr 
  .ConvertToTable Separator:=Chr(9), NumRows:=1, NumColumns:=3 
 End With 
End Sub

Renvoi du contenu de chacune des cellules d'un tableau

Cet exemple montre comment définir un tableau égal au nombre de cellules contenues dans le premier tableau du document (en admettant Option Base 1). La structure For Each...Next est utilisée pour renvoyer le contenu de chacune des cellules du tableau et affecter le texte à l'élément de tableau correspondant.

Sub ReturnCellContentsToArray() 
 Dim intCells As Integer 
 Dim celTable As Cell 
 Dim strCells() As String 
 Dim intCount As Integer 
 Dim rngText As Range 
 
 If ActiveDocument.Tables.Count >= 1 Then 
  With ActiveDocument.Tables(1).Range 
   intCells = .Cells.Count 
   ReDim strCells(intCells) 
   intCount = 1 
   For Each celTable In .Cells 
    Set rngText = celTable.Range 
    rngText.MoveEnd Unit:=wdCharacter, Count:=-1 
    strCells(intCount) = rngText 
    intCount = intCount + 1 
   Next celTable 
  End With 
 End If 
End Sub

Copie de tous les tableaux du document actif dans un nouveau document

Cet exemple montre comment copier les tableaux du document actif dans un nouveau document.

Sub CopyTablesToNewDoc() 
 Dim docOld As Document 
 Dim rngDoc As Range 
 Dim tblDoc As Table 
 
 If ActiveDocument.Tables.Count >= 1 Then 
  Set docOld = ActiveDocument 
  Set rngDoc = Documents.Add.Range(Start:=0, End:=0) 
  For Each tblDoc In docOld.Tables 
   tblDoc.Range.Copy 
   With rngDoc 
    .Paste 
    .Collapse Direction:=wdCollapseEnd 
    .InsertParagraphAfter 
    .Collapse Direction:=wdCollapseEnd 
   End With 
  Next 
 End If 
End Sub

Assistance et commentaires

Avez-vous des questions ou des commentaires sur Office VBA ou sur cette documentation ? Consultez la rubrique concernant l’assistance pour Office VBA et l’envoi de commentaires afin d’obtenir des instructions pour recevoir une assistance et envoyer vos commentaires.