Notez que la fonction Masquer n'existe pas. La première macro met à 0 la hauteur des lignes sélectionnées, la seconde donne une hauteur automatique à toutes les lignes du tableau.
Il suffira d'affecter un raccourci clavier à chacune des macros, ou bien à installer deux boutons sur la barre d'outils ou dans le ruban.
Sub masque()
'macro écrite par m@rina
If Selection.Rows.Height > CentimetersToPoints(0.3) Then
Selection.Rows.Height = CentimetersToPoints(0.02)
Selection.Rows.HeightRule = wdRowHeightExactly
End If
End Sub
Sub affiche()
'macro écrite par m@rina
Dim tablo As Table
Set tablo = Selection.Tables(1)
tablo.Rows.HeightRule = wdRowHeightAtLeast
End Sub
On peut également cliquer avant le premier caractère de la première cellule, et simplement appuyer sur Entrée.
Vous noterez que cette dernière solution ne fonctionne QUE lorsque le tableau est situé en début de document.
Pour supprimer un retour paragraphe avant un tableau, vous devez le couper (Ctrl + x).
]]>
Double-cliquez sur la bordure gauche du tableau.
ou via le menu :
Onglet Mise en page (de tableau), groupe Taille de la cellule, bouton Ajustement automatique, Ajustement automatique du contenu
Ce bug est dû à l'incompatibilité avec l'alignement justifié du style Normal de votre document.
]]>Pour modifier manuellement la largeur d'une colonne sans qu'il y ait répercussion sur les autres colonnes du tableau, il faut maintenir en même temps la touche Shift enfoncée.
]]>
Voici un exemple de macro qui colore les cellules du premier tableau du document en fonction de leur contenu :
Sub couleurs()
'macro écrite par m@rina
Dim cellule As Cell, ligne As Row, ville
For Each ligne In ActiveDocument.Tables(1).Rows
For Each cellule In ligne.Cells
With cellule.Shading
Select Case ville
Case ville = InStr(1, cellule.Range.Text, "Paris")
.BackgroundPatternColor = wdColorBrightGreen
Case ville = InStr(1, cellule.Range.Text, "Marseille")
.BackgroundPatternColor = wdColorLightYellow
Case ville = InStr(1, cellule.Range.Text, "Strasbourg")
.BackgroundPatternColor = wdColorPaleBlue
End Select
End With
Next
Next ligne
End Sub
Notez que la casse doit être respectée.
]]>Le problème réside dans le fait qu'une bordure est commune à deux cellules (en dehors des bordures d'encadrement du tableau.
La solution est très simple, il suffit de laisser un espace entre chaque cellule. Pour cela, afficher la boîte de dialogue Propriétés du tableau :
Clic droit dans le tableau => Propriétés du tableau
Dans la boîte de dialogue Propriétés du tableau, cliquez sur le bouton Options, cocher l'option Autoriser l'espacement entre les cellules et régler l'espacement souhaité.

Il suffit ensuite de mettre une bordure pour chaque cellule, de la manière habituelle. Sélectionnez toutes les cellules qui auront la même couleur à l'aide de la touche Ctrl, et choisissez la couleur et l'épaisseur de la bordure.
Voici le résultat :


Cette macro :
Par défaut, le résultat est arrondi à 2 décimales, mais on peut en changer (on peut se faire une macro pour arrondir à l'entier le plus proche, et lui affecter un bouton). Inconvénient : si on supprime les décimales, et qu'on veut ensuite les récupérer, c'est impossible : elles sont perdues.
Sub SommeColonneTableau()
'macro écrite par André Barelier
Dim Contenu As String
Dim NbCol As Integer
Dim NbLig As Integer
Dim NbCel As Long
Dim i As Long
If Selection.Information(wdWithInTable) = True Then
With Selection
'repérage de la cellule où on veut mettre la formule
ligne = .Information(wdStartOfRangeRowNumber)
colonne = .Information(wdStartOfRangeColumnNumber)
End With
Selection.Tables(1).Select
For i = 1 To ligne - 1 'balayage des cellules au dessus
ActiveDocument.Tables(1).Cell(i, colonne).Select
Contenu = Selection.Text
terme1 = Asc(Contenu)
If terme1 = 32 Then 'élimination des blancs en début de texte
Selection.Find.Execute FindText:="^w", ReplaceWith:="",
Replace:=wdReplaceAll
End If
If terme1 = 45 Or terme1 = 43 Then 'élimine espaces après - ou +
Selection.Find.Execute FindText:="^w", ReplaceWith:="",
Replace:=wdReplaceAll
End If
If terme1 > 47 And terme1 < 58 Then
'élimination des séparateurs éventuels dans les nombres
Selection.Find.Execute FindText:="^w", ReplaceWith:="", _
Replace:=wdReplaceAll
End If
If terme1 < 32 Then Selection.TypeText Text:="0"
'mettre zéro dans les cellules vides
Next i
Selection.Tables(1).Cell(ligne, colonne).Select
Selection.Delete 'enlever le zéro
Selection.InsertFormula Formula:="=SUM(ABOVE)", NumberFormat:="# ##0.00"
Selection.ParagraphFormat.Alignment = wdAlignParagraphRight
For i = 1 To ligne - 1
Selection.Tables(1).Cell(i, colonne).Select
If Val(Selection.Text) <> 0 Then
Selection.Text = Format(Val(Selection.Text), "# ### ### ##0.00")
Selection.ParagraphFormat.Alignment = wdAlignParagraphRight
End If
Next i
Else
MsgBox "Mettre le point d'insertion dans un tableau"
End If
End Sub
Formatage nombres entiers (avec prise en compte des nombres négatifs)
Sub FormatageNombreEntier()
'macro écrite par André Barelier
With Selection
ligneDebut = .Information(wdStartOfRangeRowNumber)
colonneDebut = .Information(wdStartOfRangeColumnNumber)
ligneFin = .Information(wdEndOfRangeRowNumber)
colonneFin = .Information(wdEndOfRangeColumnNumber)
End With
For i = ligneDebut To ligneFin
For j = colonneDebut To colonneFin
Selection.Tables(1).Cell(i, j).Select
Contenu = Selection.Text
terme1 = Asc(Contenu)
If terme1 = 32 Then
'élimination des blancs éventuels en début de texte
Selection.Find.Execute FindText:="^w", ReplaceWith:="", _
Replace:=wdReplaceAll
End If
If terme1 > 48 And terme1 < 58 Then
'élimination des séparateurs éventuels dans les nombres
Selection.Find.Execute FindText:="^w", ReplaceWith:="", _
Replace:=wdReplaceAll
End If
Next j
Next i
For i = ligneDebut To ligneFin
For j = colonneDebut To colonneFin
Selection.Tables(1).Cell(i, j).Select
Contenu = Selection.Text
If Asc(Contenu) = 45 Or (Asc(Contenu) > 48 And _
Asc(Contenu) < 58) Then
Selection.Text = Format(Val(Selection.Text), _
"# ### ### ##0")
Selection.ParagraphFormat.Alignment = wdAlignParagraphRight
End If
Next j
Next i
End Sub
]]>
Cliquer dans la ligne que l'on veut utiliser comme titre sur toutes les pages. S'il y a plusieurs lignes, il faut les sélectionner. Puis :
Onglet Mise en page (de tableau), groupe Données, bouton Répéter les lignes d'en-tête
]]>