IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)

FAQ Word

logo
Sommaire > VBA > Tables
        Comment fusionner des cellules dans un document Word ?
        Comment copier une ligne précise d'un tableau Word et la coller dans Excel ?
        Comment exporter des données Excel dans des cellules précises d'un tableau Word ?
        Comment scinder un tableau qui fait plus de 10 lignes en dupliquant les titres ?
        Comment vérifier si la première cellule d'un tableau est 'vide' ?
        Comment importer un tableau Word en intégrant les retours à la ligne ?
        Comment exporter un tableau Excel vers Word et l'adapter à la largeur de la page ?
        Comment récupérer la donnée d'un champ de fusion dans un document Word ouvert ?
        Comment insérer une image dans une cellule d'un tableau d'un document Word ?
        Comment ajouter une colonne dans un tableau d'un document Word ?
        Comment créer et remplir un tableau ?
        Comment gère-t-on la mise en forme d'un tableau ?
        Comment importer les données provenant de plusieurs tableaux Word ?
        Comment connaître le nombre de lignes et de colonnes de mon tableau ?
        Comment ajouter un espace au-dessus d'un tableau lorsque ce dernier est le premier objet du document ?

rechercher
precedent    sommaire    suivant    telechargermiroir


Comment fusionner des cellules dans un document Word ?
auteur : SilkyRoad
Nécessite d'activer la référence "Microsoft Word xx.x Object Library" :
vba

Dim WordApp As Word.Application
Dim WordDoc As Word.Document

    Set WordApp = CreateObject("word.application")    'Word Session
    Set WordDoc = WordApp.Documents.Open("monDocument.doc")    'Ouverture Document Word
    WordApp.Visible = True
    
    'fusionner les Cells(2,3) à Cells(3,5) dans le premier tableau du document Word
    WordDoc.Tables(1).Cell(Row:=2, Column:=3).Merge _
            mergeTo:=wordDoc.Tables(1).Cell(Row:=3, Column:=5)

Comment copier une ligne précise d'un tableau Word et la coller dans Excel ?
auteur : SilkyRoad
Nécessite d'activer la référence "Microsoft Word xx.x Object Library" :
vba

Dim WordApp As Word.Application
Dim WordDoc As Word.Document

    Set WordApp = CreateObject("word.application")
    WordApp.Visible = False    'Word reste masqué pendant l'opération
    Set WordDoc = WordApp.Documents.Open("monDocument.doc")    'ouvre le document Word

    'copies la 3eme ligne de la 1ere table Word
    WordDoc.Tables(1).Rows(3).Range.Copy

    'collage dans Excel
    Range("A1").PasteSpecial xlPasteValues

    WordDoc.Close    'fermeture document Word
    WordApp.Quit    'fermeture session Word

Comment exporter des données Excel dans des cellules précises d'un tableau Word ?
auteur : SilkyRoad
Nécessite d'activer la référence "Microsoft Word xx.x Object Library" :
vba

Dim WordApp As Word.Application
Dim WordDoc As Word.Document

    Set WordApp = CreateObject("word.application")
    WordApp.Visible = True    'mettre False pour garder Word masqué
    Set WordDoc = WordApp.Documents.Open("monDocument.doc")    'ouvre le document Word

    'Tables(2) correspond au 2eme tableu du document Word
    'transfert la donnée de la cellule A1 dans la 3eme cellule de la 1ere colonne
    WordDoc.Tables(2).Columns(1).Cells(3).Range.Text = Range("A1")

    'transfert la donnée de la cellule A2 dans la 2eme cellule de la 3eme colonne
    WordDoc.Tables(2).Columns(3).Cells(2).Range.Text = Range("A2")

    'WordDoc.Close True 'ferme le document Word en enregistrant les modifications
    'WordApp.Quit 'ferme l'application Word

Comment scinder un tableau qui fait plus de 10 lignes en dupliquant les titres ?
auteur : bidou
La manipulation est un peu particulière. Si on travaille uniquement avec les collections exposées par le tableau, on n'accède pas à des méthodes comme Copy ou Paste. Par contre, l'objet Selection expose ces méthodes.
Set objTable = ThisDocument.Tables(1)
If objTable.Rows.Count > 10 Then
    objTable.Rows(1).Select
    Selection.Copy
    objTable.Rows(11).Select
    Selection.Paste
    objTable.Rows(11).Select
    Selection.SplitTable
End If

Comment vérifier si la première cellule d'un tableau est "vide" ?
auteurs : SilkyRoad, Sepia
Nécessite d'activer la référence "Microsoft Word xx.x Object Library".
vba

    'Chr(13) & Chr(7)sont des caractères qui apparaissent par défaut dans les cellules lors de la création du tableau
    If WordDoc.Tables(1).Columns(1).Cells(1).Range.Text = Chr(13) & Chr(7) Then
        MsgBox "Cellule vide"
    Else
        MsgBox "Cellule non vide"
    End If
Vous pouvez aussi vous baser dur l'objet Range :

    If (ActiveDocument.Tables(1).Cell(1, 1).Range.End - ActiveDocument.Tables(1).Cell(1, 1).Range.Start > 1) Then
        MsgBox "Non Vide"
    Else
        MsgBox "Vide"
    End If

Comment importer un tableau Word en intégrant les retours à la ligne ?
auteur : SilkyRoad
Nécessite d'activer la référence "Microsoft Word xx.x Object Library" :

Les retours à la ligne dans les cellules d'un tableau Word génèrent autant de cellules supplémentaires lors du collage dans Excel. Pour y remédier, cet exemple montre comment importer le premier tableau d'un document Word "C:\monFichier.doc" (déjà ouvert), en conservant le format des cellules :
vba

Dim WordDoc As Object
Dim i As Integer, j As Integer
Dim Cible As Variant

    Set WordDoc = GetObject("C:\monFichier.doc")
    
    For i = 1 To WordDoc.Tables(1).Rows.Count
        For j = 1 To WordDoc.Tables(1).Columns.Count
            Cible = WordDoc.Tables(1).Columns(j).Cells(i)

            Sheets(1).Cells(i, j) = _
            Application.WorksheetFunction.Substitute(Cible, vbCr, vbLf)
            Sheets(1).Cells(i, j) = _
            Left(Sheets(1).Cells(i, j), Len(Sheets(1).Cells(i, j)) - 1)
        Next j
    Next i

Comment exporter un tableau Excel vers Word et l'adapter à la largeur de la page ?
auteur : SilkyRoad
Nécessite d'activer la référence "Microsoft Word xx.x Object Library"
vba

Dim WordApp As Word.Application
Dim WordDoc As Word.Document

    Set WordApp = New Word.Application
    WordApp.Visible = True
    Set WordDoc = WordApp.Documents.Add

    Range("A1:H10").Copy

    WordApp.Selection.Paste
    WordDoc.Tables(1).AutoFitBehavior wdAutoFitWindow

    Application.CutCopyMode = False

Comment récupérer la donnée d'un champ de fusion dans un document Word ouvert ?
auteur : SilkyRoad
Nécessite d'activer la référence "Microsoft Word xx.x Object Library"
Le document Word doit être ouvert :
vba

Dim WordApp As Word.Application
Dim WordDoc As Word.Document

    On Error Resume Next
    Set WordApp = GetObject(, "Word.Application")
    Set WordDoc = WordApp.Documents("monDocument.doc")

    If WordDoc Is Nothing Then
        MsgBox "Le document est fermé"
    Else
        MsgBox WordDoc.MailMerge.DataSource.DataFields("Nom_Champ").Value
    End If

Comment insérer une image dans une cellule d'un tableau d'un document Word ?
auteur : SilkyRoad
Nécessite d'activer la référence "Microsoft Word xx.x Object Library" :

L'exemple ci-dessous insère une image dans la 3e cellule de la 2e colonne du 1er tableau d'un document Word.
vba

Dim WordApp As Word.Application
Dim WordDoc As Word.Document

    Set WordApp = CreateObject("word.application")    'ouvrir une session Word
    Set WordDoc = WordApp.Documents.Open("monDocument.doc")    'ouvrir un document
    'insérer une image dans la 3eme Cellule de la 2eme colonne (dans le
    '1er tableau d'un document Word )
    WordDoc.Tables(1).Columns(2).Cells(3).Range.InlineShapes.AddPicture _
            Filename:="C:\image1.wmf", linkToFile:=False, saveWithDocument:=True

    With WordDoc.InlineShapes(WordDoc.InlineShapes.Count)
        .Height = 150    'redimensionne hauteur image
        .Width = 150    'redimensionne largeur image
    End With
    WordApp.Visible = True    'affichier le document Word

Comment ajouter une colonne dans un tableau d'un document Word ?
auteur : SilkyRoad
Nécessite d'activer la référence "Microsoft Word xx.x Object Library" :

L'exemple ci-dessous insère une nouvelle colonne en 3eme position dans le 2e tableau d'un document Word.
La première cellule de cette nouvelle colonne est coloriée en bleu et un texte y est inséré.
vba

Dim WordApp As Word.Application
Dim WordDoc As Word.Document

    'le document Word est supposé fermé avant le lancement de la macro
    Set WordApp = CreateObject("Word.Application")    'creation session Word
    WordApp.Visible = False    'pour que word reste masqué pendant l'opération
    Set WordDoc = WordApp.Documents.Open("monDocument.doc")    'ouverture du fichier Word

    'insertion d'une colonne en 3eme position dans le 2eme tableau du document Word
    'colorie en bleu la 1ere cellule dans la colonne insérée
    With WordDoc.Tables(2)
        .Columns.Add BeforeColumn:=WordDoc.Tables(2).Columns(3)
        .Columns(3).Cells(1).Shading.BackgroundPatternColorIndex = wdBlue    'fond de cellule en bleu
        .Columns(3).Cells(1).Range.Text = "le forum dvp.com"    'texte dans la cellule
        .AutoFitBehavior wdAutoFitWindow    ' adapte la dimension du tableau à la feuille
    End With

    WordDoc.Close True    'ferme le document Word en sauvegardant les modifications
    WordApp.Quit    'ferme l'application Word

Comment créer et remplir un tableau ?
auteurs : bidou, Lebeau Olivier
Utiliser une variable objet Table.
Dim objTable As Table
Set objTable = objDoc.Tables.Add(Range:=Selection.Range, NumRows:=5, NumColumns:=3)
Dim cmpt As Long
For cmpt = 1 To objTable.Rows.Count
    objTable.Cell(cmpt, 2).Range.Text = "montext" & cmpt
Next cmpt
La navigation dans les tableaux est assez similaire à celle d'Excel avec des objets Cells, Columns etc.... Néanmoins, pour accéder au contenu d'une cellule, vous devez passer par l'objet Range de l'objet Cell.

Comment faire une table de multiplication.

Sub TableMult()
Dim oTbl As Table
Dim iC As Integer
Dim iL As Integer

Set oTbl = ActiveDocument.Tables.Add(Range:=Selection.Range, NumRows:=10, numcolumns:=10)
For iC = 1 To 10
    For iL = 1 To 10
        oTbl.Cell(iL, iC).Range.Text = iC * iL
    Next iL
Next iC
With oTbl
    .Borders.Enable = True
    .Borders(wdBorderBottom).LineWidth = wdLineWidth050pt
    .Borders(wdBorderLeft).LineWidth = wdLineWidth050pt
    .Borders(wdBorderRight).LineWidth = wdLineWidth050pt
    .Borders(wdBorderTop).LineWidth = wdLineWidth050pt
End With
End Sub

Comment gère-t-on la mise en forme d'un tableau ?
auteur : bidou
Deux possibilités. On applique un format prédéfini
objTable.AutoFormat wdTableFormatGrid8
On gére soit même
objTable.AutoFitBehavior (wdAutoFitContent)
With objTable
    .Borders(wdBorderLeft).LineStyle = wdLineStyleSingle
    .Borders(wdBorderRight).LineStyle = wdLineStyleSingle
    .Borders(wdBorderTop).LineStyle = wdLineStyleSingle
    .Borders(wdBorderBottom).LineStyle = wdLineStyleSingle
    .Borders(wdBorderHorizontal).LineStyle = wdLineStyleDot
    .Borders(wdBorderVertical).LineStyle = wdLineStyleDot
    .Borders.Shadow = False
End With
Ce code ajuste la largeur des colonnes à leur contenu, encadre le tableau avec une ligne continue et les cellules en pointillé.


Comment importer les données provenant de plusieurs tableaux Word ?
auteur : SilkyRoad
Nécessite d'activer la référence "Microsoft Word xx.x Object Library" :
vba

Dim WordApp As Word.Application
Dim WordDoc As Word.Document
Dim i As Byte, j As Byte

    Set WordApp = CreateObject("word.application")
    wWrdApp.Visible = False
    Set WordDoc = WordApp.Documents.Open("monFichier.doc")
    'dans 3 tables Word du document , importer 5 valeurs de la premiere colonne
    'importer les données de chaque table dans une feuille différente
    For i = 1 To 3
        For j = 1 To 5
            ActiveWorkbook.Sheets(i).Cells(j, 1) = WordDoc.Tables(i).Columns(1).Cells(j)
        Next j
    Next i
    WordDoc.Close
    WordApp.Quit

Comment connaître le nombre de lignes et de colonnes de mon tableau ?
auteur : Lebeau Olivier

ActiveDocument.Tables(1).Columns.Count
Pour obtenir le nombre de colonnes d'un tableau

ActiveDocument.Tables(1).Rows.Count
Pour obtenir le nombre de lignes


Comment ajouter un espace au-dessus d'un tableau lorsque ce dernier est le premier objet du document ?
auteur : Sepia
Le principe est assez simple, on selectionne la première ligne du tableau et on coupe la table en deux, ce qui produit une ligne de texte vide au dessus du tableau.

Sub AjouterLigne()
ActiveDocument.Tables(1).Rows(1).Range.Select
Selection.SplitTable

End Sub

rechercher
precedent    sommaire    suivant    telechargermiroir

Consultez les autres F.A.Q's


Les sources présentées sur cette page sont libres de droits et vous pouvez les utiliser à votre convenance. Par contre, la page de présentation constitue une œuvre intellectuelle protégée par les droits d'auteur. Copyright © 2013 Developpez Developpez LLC. Tous droits réservés Developpez LLC. Aucune reproduction, même partielle, ne peut être faite de ce site ni de l'ensemble de son contenu : textes, documents et images sans l'autorisation expresse de Developpez LLC. Sinon vous encourez selon la loi jusqu'à trois ans de prison et jusqu'à 300 000 € de dommages et intérêts.