Le problème vient du fait que tu utilise un variant pour mycontrol2
donc il ne possède pas la propriété .caption
mycontrol2 est une variable qui contient "Lab...."
mycontrol est un objet de la classe controls.
je corrige comme suit....
For Each mycontrol In Controls
mycontrol2 = "Lab" & Mid(mycontrol.Name, 4, 100)
If Left(mycontrol.Name, 3) = "Txt" Then ' on lit un textbox
If IsNumeric(mycontrol.Text) = False And mycontrol.Text <> "" Then
s = MsgBox("Vous n'avez pas rempli la case " & mycontrol2 & " avec une valeur numérique !", vbCritical, "Erreur")
Exit Sub
mycontrol.Name.SetFocus
ElseIf mycontrol < 0 Then
s = MsgBox("La valeur " & mycontrol2 & " ne peut pas être négative !", vbCritical, "Erreur")
mycontrol.SetFocus
Exit Sub
Exit For
End If
End If
Next
et je te propose ce code ... retour sur le controle qui est en défaut.
For Each mycontrol In Controls
mycontrol2 = "Lab" & Mid(mycontrol.Name, 4, 100)
If Left(mycontrol.Name, 3) = "Txt" Then ' on lit un textbox
If IsNumeric(mycontrol.Text) = False And mycontrol.Text <> "" Then
s = MsgBox("Vous n'avez pas rempli la case " & mycontrol2 & " avec une valeur numérique !", vbCritical, "Erreur")
mycontrol.SetFocus
Exit for
ElseIf mycontrol < 0 Then
s = MsgBox("La valeur " & mycontrol2 & " ne peut pas être négative !", vbCritical, "Erreur")
mycontrol.SetFocus
mycontrol.SetFocus
Exit for
End If
End If
Next
A+