Userform : Contrôle de cohérence entre TextBox et ComboBox
11 réponses
Patrick BASTARD
Bonjour à tous.
je fais appel à vos lumières, car, malgré moult recherches, je n'ai pas
trouvé.
Sur l'UserForm1, entre autres :
Un ComboBoxLiaison (liste de données sur 6 caractères du genre L21654)
Un TextBoxSaisieC5 qui reçoit des données de 28 caractères via lecteur codes
à barres.
Un TextBoxPlomb qui reçoit des données de 11 caractères via lecteur codes à
barres)
Une ListBoxLiaisonsAutorisées alimentée par un champ calculé de ma feuille
en fonction de l'entrée dans TextBoxSaisieC5, de 23 caractères dont les 6
premiers sont des numéros de liaison du type L21654.
Une saisie dans TextBoxSaisieC5 place actuellement le curseur dans
TextBoxPlomb et vice versa, pour une saisie continue.
Je joins les codes de TextBox SaisieC5 ci-dessous qui fonctionnent :
Private Sub TextBoxSaisieC5_BeforeUpdate(ByVal Cancel As
MSForms.ReturnBoolean)
If Len(TextBoxSaisieC5.Value) <> 28 Then
TextBoxSaisieC5.BackColor = RGB(255, 0, 0) 'rouge
ErreurDesti 'joue un son Wave
MsgBox "Saisie non valide." & Chr(13) & "double cliquez dans la zone
saisie et resaisissez un code barre valide" & Chr(13) & "Appuyez sur ESC
pour annuler", vbCritical, "ERREUR !"
Cancel = True
End If
Me.TextBoxSaisieC5.BackColor = &HC0FFFF 'normal
Me.TextBoxSaisieC5.SelStart = 0
Me.TextBoxSaisieC5.SelLength = Len(Me.TextBoxSaisieC5)
End Sub
Private Sub TextBoxSaisieC5_Exit(ByVal Cancel As MSForms.ReturnBoolean)
Dim Cp
Cp = Mid(TextBoxSaisieC5, 4, 5)
TextBoxIATA = Application.VLookup(CLng(Cp),
Sheets("AGENCE").Range("a2:b100"), 2, 0)
With Sheets("BaseLR")
.Activate
.Range("BO8") = Me.TextBoxIATA
End With
Dim LR
LR = Sheets("BaseLR").Range("bs9:bs20")
Me.ListBox1.List = LR
'Me.TextBoxSaisiePlomb = "" '###########
End Sub
Private Sub TextBoxSaisieC5_MouseDown(ByVal Button As Integer, ByVal Shift
As Integer, ByVal X As Single, ByVal Y As Single)
If Len(TextBoxCaisse.Value) < 1 Then
TextBoxCaisse.BackColor = RGB(255, 0, 0) 'rouge
ErreurDesti 'joue un son Wave
MsgBox "Saisie non valide" & Chr(13) & "Cliquez dans la zone Caisse
et entrez un numéro de caisse valide.", vbCritical, "ERREUR !"
End If
Me.TextBoxCaisse.BackColor = &HC0FFFF
End Sub
Un extrait expurgé de mon fichier : 143Ko
http://cjoint.com/?cosSGzDmbo
Le même zippé : 43 Ko
http://cjoint.com/?cosTIe2vDB
Je souhaite vérifier que la valeur choisie dans ComboBoxLiaison correspond
bien aux 6 premiers caractères de l'un des items de
ListBoxLiaisonsAutorisées renvoyée par la saisie dans TextBoxSaisieC5 et
dans le cas contraire, jouer un son Wave, effacer la valeur dans
TextBoxSaisieC5, le colorer en rouge et lui redonner le focus.
Si, en plus, en cas de correspondance, l'on pouvait soit mettre l'item
correspondant en surbrillance, soit modifier la couleur de sa police, ce
serait la cerise sur le gâteau !
en vous priant de m'excuser pour la longueur du post, je vous remercie de
l'avoir lue jusqu'au bout.
Bien cordialement
--
Bien amicordialement,
P. Bastard
Avant d'imprimer ce mail, ayez une pensée pour les arbres.