Bonsoir le forum.
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 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 !
Je joins les codes de TextBox SaisieC5 ci-dessous qui fonctionnent :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
34
35 Code: 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
Je sais cette question difficile et, en vous priant de m'excuser pour la longueur du post, je vous remercie de l'avoir lue jusqu'au bout.
Bien cordialement
Partager