Bonjour,
Je propose deux solutions différentes:
Sub testTableau()
Dim tableau As Variant
Dim nbCol As Integer, ligFin As Integer
nbCol = Cells(1, Columns.Count).End(xlToLeft).Column
ligFin = Range("A" & Rows.Count).End(xlUp).Row
For j = 2 To nbCol 'on passe la première
tableau = Range(Cells(1, j), Cells(ligFin, j)).Value
For i = LBound(tableau, 1) + 1 To UBound(tableau, 1)
If Not tableau(i, 1) = "" Then
tableau(i, 1) = tableau(1, 1)
End If
Next i
Range(Cells(1, j), Cells(ligFin, j)) = tableau
Next j
End Sub
Sub testFormule()
Dim nbCol As Integer, ligFin As Integer
nbCol = Cells(1, Columns.Count).End(xlToLeft).Column
ligFin = Range("A" & Rows.Count).End(xlUp).Row
For i = 2 To ligFin
For j = 2 To nbCol
If Not Cells(i, j) = "" Then
Cells(i, j).Formula2Local = "=" & Cells(1, j).Address(True, False)
End If
Next j
Next i
End Sub
testTableau sert à remplacer les cases non vides dans la colonne par la note, pour chaque colonne (sauf la première qui contient les noms bien entendu), mais il faut la relancer à chaque fois qu'une note change.
testFormule sert à remplacer les cases non vides par des formules faisant référence à la cellule contenant la note pour la colonne, leurs valeurs se mettra à jour automatiquement mais c'est peut-être lourd en fonction de la taille du tableau, à tester donc.