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 :
Il ne m'est actuellement pas possible de joindre un exemple de mon fichier (trop volumineux), mais si besoin était, je pourrais l'alléger et supprimer ce qui ne concerne pas cette question.
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
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:
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