Super c'est exactement cela que je cherchais !
Donc je dois utiliser controls. Je te remercie !
Oui car pour Excel dans : essai_i il ne voit pas de variable il lit le tout.
En passant par me.controls() celà permet de séparer de début du nom de la checkbox de la variable i
Nota si le but était de réduire le nombre de ligne alors dans ce cas tu peux enlever le deuxième if pour tester la checkbox false.
En effet après le premier test si ta checkbox n'est pas en mode "True" alors c'est quelle est en mode "False" (2 possibilités).
Par contre je vois à l'instant un problème en cas de modification ! la macro ne va pas remettre la shapes en mode invisible en cas de changement ?
Private Sub CommandButton1_Click()
For i = 1 To 2
If Me.Controls("essai_" & i).Value = True Then
ActiveSheet.Shapes(i & "-OK").Visible = True
ActiveSheet.Shapes(i & "-NOK").Visible = False
Else
ActiveSheet.Shapes(i & "-NOK").Visible = True
ActiveSheet.Shapes(i & "-OK").Visible = False
End If
Next i
End Sub