Bonjour au forum,
Je cherche à comprendre pourquoi mon code ci-après ne fonctionne pas :
Private Sub Txt_plaque_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim dlplaque As Long
Dim NPlaque As Variant
Dim c As Variant
Dim n As Long
Dim Emplacement As Variant
'rechercher emplacement déjà pris selon n° de plaque
dlplaque = Sheets("Analyse").Range("D" & Rows.Count).End(xlUp).Row
NPlaque = Me.Txt_plaque.Value
For Each c In Sheets("Analyse").Range("D3:D" & dlplaque)
Emplacement = c.Offset(0, 1).Value
If c = NPlaque Then
For n = 1 To 12
If Me.Controls("OptionButton" & n).Caption = Emplacement Then
Me.Controls("OptionButton" & n).Enabled = False
End If
Next n
End If
Next c
End Sub
Dans mon userform, je cherche à récupérer les emplacements déjà pris d'une plaque lors de pipetage dans un laboratoire et donc à griser les optionbutton correspondants, pour empêcher l'utilisateur de les sélectionner.
Pour cela, je compare l'identifiant de la plaque via la saisie dans le Textbox, je compare cette valeur avec chaque valeur de la base de données dans la feuille "Analyse" (colonne "D"). Si correspondance, je compare l'emplacement sur la plaque (en colonne "E", variable "Emplacement") avec le numéro de l'optionbutton (variable "n").
Si correspondance, donc si l'emplacement de cette plaque a déjà été utilisé, je veux griser l'optionbutton.
Le code ne rend pas d'erreur, mais aucun optionbutton ne se grise, même lorsque la variable "Emplacement" = la variable "n".
Par exemple, si je renseigne "Plaque2" dans mon Textbox, les variables "Emplacement" sont 2 / 3 / 4 et 8.
Or, après vérification en mode débogage, quand "Emplacement" = 2 et "n" = 2, l'optionbutton2 ne se grise pas.
Je précise que je suis totalement autodidacte et apprend petit à petit grâce au forum, j'espère que vous serez indulgents avec moi