Bonjour à tous ,
Une autre proposition.
Private Sub CommandButton1_Click()
Dim ladate, lsto As ListObject, t, i&
Set lsto = Worksheets("Datas_CA").ListObjects(1) ' le tableau structuré
ladate = lsto.HeaderRowRange(1, lsto.ListColumns.Count) ' la date pour remplir les cellules vides
If lsto.ListRows.Count = 0 Then Exit Sub ' si le tableau est vide, on quitte
lsto.Range.AutoFilter: lsto.Range.AutoFilter ' tout afficher
t = lsto.ListColumns(1).Range ' tableau des valeurs de la 1ère colonne (date)
For i = 2 To UBound(t): t(i, 1) = IIf(t(i, 1) = "", ladate, t(i, 1)): Next ' boucle de remplissage
lsto.ListColumns(1).Range.Value2 = t ' on rebascule t sur le tableau structuré
End Sub
Attention ! La date que vous avez en H3 n'est pas une date mais c'est du texte ! Les en-têtes de tableau structuré sont toujours convertis en texte par Excel. D'ailleurs, AMHA, avoir un champ variable comme en-tête de champ n'est pas une bonne idée. La preuve ? Vous avez été obligé de nommer la cellule H3 alors qu'elle devrait être repérable simplement par son nom (en-tête) mais comme le nom du champ varie... Si la date est toujours l'en-tête de la dernière colonne, on peut s'en sortir sans nommer la cellule (voir le code ci-dessus).