Test sur chaine de caractères en vba excel

Résolu
Nospam54 Messages postés 159 Statut Membre -  
Nospam54 Messages postés 159 Statut Membre -
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 !

4 réponses

  1. Paf
     
    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
    1. Nospam54 Messages postés 159 Statut Membre 13
       
      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
  2. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Bonjour,
        MsgBox "Le 4ème caractère n'est pas bon !", vbExclamation
        With txtFactPart1
            .SetFocus
            .SelStart = 4
            .SelLength = 1
        End With

    A+
    0
  3. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  4. Nospam54 Messages postés 159 Statut Membre 13
     
    Merci à vous, ça marche et je vais pouvoir développer mes tests !
    0