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 prcise d'un tableau Word et la coller dans Excel ?
        Comment exporter des donnes Excel dans des cellules prcises d'un tableau Word ?
        Comment scinder un tableau qui fait plus de 10 lignes en dupliquant les titres ?
        Comment vrifier si la premire cellule d'un tableau est 'vide' ?
        Comment importer un tableau Word en intgrant les retours la ligne ?
        Comment exporter un tableau Excel vers Word et l'adapter la largeur de la page ?
        Comment rcuprer la donne d'un champ de fusion dans un document Word ouvert ?
        Comment insrer une image dans une cellule d'un tableau d'un document Word ?
        Comment ajouter une colonne dans un tableau d'un document Word ?
        Comment crer et remplir un tableau ?
        Comment gre-t-on la mise en forme d'un tableau ?
        Comment importer les donnes provenant de plusieurs tableaux Word ?
        Comment connatre 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
Ncessite d'activer la rfrence "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 prcise d'un tableau Word et la coller dans Excel ?
auteur : SilkyRoad
Ncessite d'activer la rfrence "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'opration
    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 donnes Excel dans des cellules prcises d'un tableau Word ?
auteur : SilkyRoad
Ncessite d'activer la rfrence "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 donne 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 donne 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 particulire. Si on travaille uniquement avec les collections exposes par le tableau, on n'accde pas des mthodes comme Copy ou Paste. Par contre, l'objet Selection expose ces mthodes.
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 vrifier si la premire cellule d'un tableau est "vide" ?
auteurs : SilkyRoad, Sepia
Ncessite d'activer la rfrence "Microsoft Word xx.x Object Library".
vba

    'Chr(13) & Chr(7)sont des caractres qui apparaissent par dfaut dans les cellules lors de la cration 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 intgrant les retours la ligne ?
auteur : SilkyRoad
Ncessite d'activer la rfrence "Microsoft Word xx.x Object Library" :

Les retours la ligne dans les cellules d'un tableau Word gnrent autant de cellules supplmentaires lors du collage dans Excel. Pour y remdier, cet exemple montre comment importer le premier tableau d'un document Word "C:\monFichier.doc" (dj 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
Ncessite d'activer la rfrence "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 rcuprer la donne d'un champ de fusion dans un document Word ouvert ?
auteur : SilkyRoad
Ncessite d'activer la rfrence "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 insrer une image dans une cellule d'un tableau d'un document Word ?
auteur : SilkyRoad
Ncessite d'activer la rfrence "Microsoft Word xx.x Object Library" :

L'exemple ci-dessous insre 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
    'insrer 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
Ncessite d'activer la rfrence "Microsoft Word xx.x Object Library" :

L'exemple ci-dessous insre une nouvelle colonne en 3eme position dans le 2e tableau d'un document Word.
La premire cellule de cette nouvelle colonne est colorie en bleu et un texte y est insr.
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'opration
    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 insre
    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 crer 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.... Nanmoins, pour accder 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 gre-t-on la mise en forme d'un tableau ?
auteur : bidou
Deux possibilits. On applique un format prdfini
objTable.AutoFormat wdTableFormatGrid8
On gre soit mme
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 donnes provenant de plusieurs tableaux Word ?
auteur : SilkyRoad
Ncessite d'activer la rfrence "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 donnes de chaque table dans une feuille diffrente
    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 connatre 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 premire 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.