Bonjour et bienvenue sur le forum
Une dernière variante, pour compléter le tableau.
Option Explicit
Dim tablo, plage As Range, tabloR()
Dim i&, j&, derCol, nbE&
Private Sub Worksheet_Change(ByVal Target As Range)
tablo = Range("A1").CurrentRegion
Set plage = Range(Cells(2, 2), Cells(UBound(tablo, 1), UBound(tablo, 2) - 1))
If Not Intersect(Target, plage) Is Nothing Then
tablo = Range("A1").CurrentRegion
ReDim tabloR(1 To UBound(tablo, 1) - 1, 1 To 1)
Set plage = Range(Cells(2, 2), Cells(UBound(tablo, 1), UBound(tablo, 2) - 1))
'On recherche la dernière colonne contenant une saisie
derCol = 0: nbE = 0
For i = 2 To UBound(tablo, 1)
For j = 2 To UBound(tablo, 2) - 1
If tablo(i, j) <> "" And j > derCol Then
derCol = j
End If
Next j
Next i
'nombre de jours d'entrainements
For j = 2 To derCol
nbE = IIf(WorksheetFunction.CountIf(Range(Cells(2, j), Cells(UBound(tablo, 1), j)), "P") >= 1, nbE + 1, nbE)
Next j
'Taux de participation
For i = 2 To UBound(tablo, 1)
tabloR(i - 1, 1) = 100 * WorksheetFunction.CountIf(Range(Cells(i, 2), Cells(i, UBound(tablo, 2) - 1)), "P") / nbE
Next i
Cells(2, UBound(tablo, 2)).Resize(UBound(tabloR, 1), 1) = tabloR
End If
End Sub
Bye !