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

FAQ VBA

FAQ VBAConsultez toutes les FAQ

Nombre d'auteurs : 10, nombre de questions : 133, dernière mise à jour : 15 juin 2021 

 
OuvrirSommaireWordDocumentTableau et signets

Il y a toujours destruction d'un signet portant sur une plage. Le signet fait partie de la plage.

 
Sélectionnez
Dim objRange As Range
Set objRange = ActiveDocument.Bookmarks.Item("genre").Range
objRange.Text = "madame"

Le signet 'genre' est détruit dans cette opération. Il faut toujours recréer le signet après, du style

 
Sélectionnez
ActiveDocument.Bookmarks("genre").Range.Select
Selection.Text = "Madame"
objRange.Bookmarks.Add "genre"

Pour éviter cela, il vaut mieux utiliser des signets d'insertion (défini sur un point)

Créé le 5 février 2004  par bidou

On appelle la méthode collapse de la sélection avant l'insertion

 
Sélectionnez
selection.Collapse Direction:=wdCollapseEnd
With ActiveDocument.Bookmarks
    .Add Range:=Selection.Range, Name:="Nom"
    .DefaultSorting = wdSortByName
    .ShowHidden = True
End With
Créé le 5 février 2004  par bidou

Utiliser une variable objet Table.

 
Sélectionnez
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.

Créé le 5 février 2004  par bidou

Deux possibilités. On applique un format prédéfini

 
Sélectionnez
objTable.AutoFormat wdTableFormatGrid8

On gére soit même

 
Sélectionnez
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é.

Créé le 5 février 2004  par 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.

 
Sélectionnez
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
Créé le 5 février 2004  par bidou

On utilise la décomposition du range en Start et End

 
Sélectionnez
ActiveDocument.Range(ActiveDocument..Bookmarks("sig1").Range.Start, ActiveDocument..Bookmarks("sig2").Range.End).Select
Créé le 6 février 2004  par Maxence Hubiche, bidou

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 © 2009 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.