Word Mise en forme conditionnelle dans un tableau

  • Initiateur de la discussion Initiateur de la discussion CISCO
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

CISCO

XLDnaute Barbatruc
Bonjour à tous

Deux petites questions :
1) Est-ce que par un heureux hasard vous auriez une astuce pour griser automatiquement les cellules vides d'un tableau dans Word ?

2) Dans la réalité, ce tableau est rempli par publipostage. Est-ce qu'on peut appliquer la même mise en forme conditionnelle que précédemment (griser uniquement les cellules vides c.-à-d. sans résultat) ?

Merci d'avance.

@ plus
 
Bonjour le fil, le forum, salut CISCO

Pas d'astuces simples, mais une macro
VB:
Sub Griser_Vides()
''Macro quand il y a plusieurs tableaux dans le document actif
Dim tablo As Table, c As Cell
For Each tablo In ActiveDocument.Range.Tables
    For Each c In tablo.Range.Cells
        If Len(c.Range.Text) < 3 Then
        c.Range.Shading.BackgroundPatternColor = -603923969
        End If
    Next
Next
End Sub
Sub Griser_Vide_UnTableau()
'Macro quand il y a qu'un seul tableau dans le document actif
Dim c As Cell
For Each c In ActiveDocument.Range.Tables(1).Range.Cells
If Len(c.Range.Text) < 3 Then
c.Range.Shading.BackgroundPatternColor = -603923969
End If
Next
End Sub
 
Bonjour Staple1600

Merci pour cette petite macro. Ca fonctionne nickel. Je me disais bien que c'était faisable avec une macro, mais, vu mon niveau en VBA...

Au passage, pourrais-tu me dire pourquoi tu as mis la ligne If Len(c.Range.Text) < 3 ? Pourquoi 3 ?

@ plus
 
Re

Parce que dans une cellule vide d'un tableau Word contient semble t'il au moins deux caractères*

*: Il s'agit en fait d'un marqueur de fin de cellule
(constitué de deux caractères Chr(13) & Chr(7))

Fais ce test sur un tableau avec des cellules vides et tu verras
VB:
Sub Test_TableauA()
Dim c As Cell
For Each c In ActiveDocument.Range.Tables(1).Range.Cells
MsgBox Len(c.Range.Text)
Next
End Sub
Ou celui-ci (à tester plutôt sur un petit tableau avec peu de cellules vides 😉 )
VB:
Sub Test_TableauB()
Dim c As Cell, Vides$
For Each c In ActiveDocument.Tables(1).Range.Cells
If c.Range.Characters.Count = 1 Then
Vides = Vides & Chr(13) & vbTab & "Cellule: (" & c.Row.Index & "," & c.Column.Index & ")"
End If
Next
MsgBox "Les cellules suivantes:" & Vides & Chr(13) & "sont vides."
End Sub
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
102
Réponses
4
Affichages
131
Réponses
25
Affichages
604
Retour