Validation de TextBox dans un UserForm
Bonjour,
J'ai intégré dans une macro un Userform, renommé Milestone_Edit, qui contient 2 lignes de 8 Textbox , un bouton "Edit", un bouton "Next" et un bouton "Close".
Dans la ligne supérieure je vais rechercher les valeurs de données situées sur une feuille Excel, certaines TextBox ne contiennent pas de valeurs et ce ne sont pas toujours les mêmes.
J'interdit la saisie dans les TextBox du Haut.
Si une texte Box de la ligne supérieure est vide j'interdit la saisie de donnée la TextBox correspondante de la ligne du bas et lui affecte une couleur grise.
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33
| For i = 0 To 16
If Equipment_Edit.ComboBox1.Value = BL.Offset(i, 0) Then
Milestone_Edit.Label13.Caption = Equipment_Edit.ComboBox1.Value
Milestone_Edit.TextBox9.Value = ""
Milestone_Edit.TextBox9.Value = BL.Offset(i, 3)
Milestone_Edit.TextBox9.Enabled = False
If Milestone_Edit.TextBox9.Value = "" Then
Milestone_Edit.TextBox1.Enabled = False
Milestone_Edit.TextBox9.BackColor = &H80000016
Milestone_Edit.TextBox1.BackColor = &H80000016
Else
Milestone_Edit.TextBox1.Enabled = True
Milestone_Edit.TextBox9.BackColor = &H80000005
Milestone_Edit.TextBox1.BackColor = &H80000005
End If
.....
Milestone_Edit.TextBox16.Value = ""
Milestone_Edit.TextBox16.Value = BL.Offset(i, 10)
Milestone_Edit.TextBox16.Enabled = False
If Milestone_Edit.TextBox16.Value = "" Then
Milestone_Edit.TextBox8.Enabled = False
Milestone_Edit.TextBox8.BackColor = &H80000016
Milestone_Edit.TextBox16.BackColor = &H80000016
Else
Milestone_Edit.TextBox8.Enabled = True
Milestone_Edit.TextBox16.BackColor = &H80000005
Milestone_Edit.TextBox8.BackColor = &H80000005
End If
End If
Next i |
Après avoir corrigé le code dont le grisage ne fonctionnait pas comme souhaité (:merci: Philippe Tulliez ), j'ai essayé de le simplifier, par curiosité et pour m'améliorer, en utilisant le code suivant mais cela ne fonctionne pas et me renvoie une erreur "Propriété ou Méthode non gérée par cet objet"
Code:
1 2 3 4 5 6
| Dim y As OLEObject
For Each y In Milestone_Edit
If y.Value = "" Then
y.Object.BackColor = vbGray
End If
Next y |
Merci pour votre aide et vos conseils
Eric