J'ai un tableau qui s'étend sur plusieurs pages et je souhaite savoir si certaines cellules ne sont pas renseignées. Comment faire cette vérification par macro ?

Ce qu'il faut savoir, c'est qu'une cellule vide est composée d'une marque de paragraphe codé en VBA par Chr(13) suivie par le caractère ANSI (7) codé en VBA par Chr(7). Quand on sait ça, il suffit d'analyser chaque cellule du tableau avec une boucle, afin de trouver celles qui contiennent ces deux caractères.

Comment on sait que ce sont ces deux caractères ?

Effectivement, ce n'est pas évident car c'est invisible. Voici une macro qui affiche dans la fenêtre Exécution le contenu de la première cellule d'un tableau qu'on a volontairement laissée vide :

Sub cellule()
For Each caract In ActiveDocument.Tables(1).Rows(1).Cells(1).Range.Characters
Debug.Print caract
Next
End Sub
 

Il suffit ensuite de faire l'inverse, c'est-à-dire de copier coller ce qu'on a récupéré dans la fenêtre exécution dans un document vide et de lancer la macro :

 Sub caract()
MsgBox ActiveDocument.Range.Characters.Count
For Each caract In ActiveDocument.Range.Characters
MsgBox Asc(caract)
Next
End Sub

Cette macro nous donne le codage Chr(13) et Chr(7) que nous allons réutiliser dans la macro suivante pour savoir quelles cellules sont restées vides dans ce grand tableau :

Sub cellules_vides()
Dim cellule As Cell, ligne As Row
For Each ligne In ActiveDocument.Tables(1).Rows
For Each cellule In ligne.Cells
If cellule.Range.Text = Chr(13& Chr(7Then
MsgBox "la cellule ligne " & cellule.RowIndex & ", colonne " & cellule.ColumnIndex & ", est vide."
End If
Next
Next ligne
End Sub

Statistiques

Aujourd'hui215
Hier2602
Cette semaine8063
Total depuis 20049546603

8
visiteurs actuellement en ligne