Test sur chaine de caractères en vba excel

Résolu/Fermé
Nospam54 Messages postés 152 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 15 novembre 2017 - 10 mai 2012 à 15:53
Nospam54 Messages postés 152 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 15 novembre 2017 - 11 mai 2012 à 16:14
Bonjour,

Je vais essayer d'être clair et concis...

Quelqu'un(e) pourrait-il(elle) m'aider pour réaliser un morceau de code vba excel 2003 ?

Dans un textbox l'utilisateur doit entrer un n° de facture. Je veux pouvoir tester le 4ème caractère qui ne doit pas être autre chose qu'un "D" ou un "C" ou un "F" ou un "I" ou un "V". Tout autre caractère saisi renvoyant un message d'alerte et retournant sur le textbox du numéro de la facture à saisir...

J'ai cherché pas mal de temps, tester tout un tas de fonctions relatives aux chaines de caractères, mais sans résultat tel que je le souhaite.

Merci d'avance !


A voir également:

4 réponses

bonjour,

la fonction Mid(chaine, position de départ, longueur) vous permet de récupérer le caractère que vous voulez.
MonCar = Mid(Textbox1.Value, 4, 1)

un Select Case vous permet de définir les actions pour les valeurs trouvées
Select Case MonCar
Case "D", "C", "F", "I", "V"
    'définir les actions
Case Else    ' Autres valeurs.
    MsgBox "Pas Bon"
    .....
End Select


A+
0
Nospam54 Messages postés 152 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 15 novembre 2017 13
11 mai 2012 à 08:24
Bonjour et merci Paf !

Ça marche nickel !

Petite question subsidiaire... après ce contrôle, et si ce fameux 4ème caractère saisi n'est pas bon, je remets le focus sur le textbox de façon à ce que l'utilisateur corrige.
Mais, tout le monde le sait, les utilisateurs sont paresseux... Je voudrais donc qu'après le focus sur le textbox le curseur ne sélectionne que le 4ème caractère.
Est-ce possible ?

Voici mon code :
Private Sub txtFactPart1_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)
    Cancel = True
    ctrlCar = Mid(txtFactPart1.Value, 4, 1)
Select Case ctrlCar
Case "D", "C", "F", "I", "V"
    Cancel = False
Case Else
    MsgBox "Le 4ème caractère n'est pas bon !", vbExclamation
    With txtFactPart1
        .SetFocus
        .SelStart = 0
        .SelLength = Len(txtFactPart1.Text)
    End With
End Select
End Sub


Merci d'avance !
0
lermite222 Messages postés 8724 Date d'inscription dimanche 8 avril 2007 Statut Contributeur Dernière intervention 22 janvier 2020 1 190
11 mai 2012 à 09:41
Bonjour,
    MsgBox "Le 4ème caractère n'est pas bon !", vbExclamation
    With txtFactPart1
        .SetFocus
        .SelStart = 4
        .SelLength = 1
    End With

A+
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 310
11 mai 2012 à 10:33
Bonjour

Une autre manière de voir les choses
Private Sub TextBox1_Change()
Dim seuil As Byte, valeur As String, ctrlcar As String * 1
seuil = Len(TextBox1)
If seuil = 4 Then
     valeur = Left(TextBox1, 3)
     ctrlcar = Mid(TextBox1, 4)
     Select Case ctrlcar
          Case "D", "C", "F", "I", "V"
          Case Else
               MsgBox "Le 4ème caractèr:  """ & ctrlcar & """ n'est pas bon !", vbExclamation
               TextBox1 = valeur
     End Select
End If
          
     
End Sub
0
Nospam54 Messages postés 152 Date d'inscription jeudi 16 avril 2009 Statut Membre Dernière intervention 15 novembre 2017 13
11 mai 2012 à 16:14
Merci à vous, ça marche et je vais pouvoir développer mes tests !
0