XL 2016 If TextBox contient uniquement du texte

Victor42

XLDnaute Nouveau
Bonjour,
Sa peut paraître simple mais je ne trouve pas la solution à mon problème.
Je dois vérifier que ma textbox ne contient QUE des lettres, n'est pas vide et fait bien 3 caractères.
Voici mon code :
VB:
'Trigramme
If Trigramme = "" Then
    MsgBox "Veuillez renseigner le trigramme de l'opérateur dans l'onglet Mouvements de stock"
ElseIf Len(Trigramme) <> 3 Then
        MsgBox "Le trigramme que vous avez rentré fait " & Len(Trigramme) & " caractères." & Chr(13) & _
            "Il en faut 3 !" & vbCrLf & "Exemple : VDL" & Chr(13) & "Recommencer...", 16
        Exit Sub
ElseIf IsText(Trigramme) Then
    Else
    MsgBox Trigramme.Text & "Veuillez saisir uniquement des lettres"
End If

Quand je test sa me dit que IsText Sub ou fonction non défini...
Merci de votre aide,
 

thebenoit59

XLDnaute Accro
Bonjour Victor.

En bouclant les différents caractères de ta valeur.
VB:
'Trigramme
If Trigramme = "" Then
    MsgBox "Veuillez renseigner le trigramme de l'opérateur dans l'onglet Mouvements de stock"
ElseIf Len(Trigramme) <> 3 Then
        MsgBox "Le trigramme que vous avez rentré fait " & Len(Trigramme) & " caractères." & Chr(13) & _
           "Il en faut 3 !" & vbCrLf & "Exemple : VDL" & Chr(13) & "Recommencer...", 16
       Exit Sub
Else
   For i = 1 to 3
     If IsNumeric(Mid(Trigramme, i, 1)) then
       MsgBox Trigramme.Text & "Veuillez saisir uniquement des lettres"
       Exit Sub
     End If
   Next i
End If
 

youky(BJ)

XLDnaute Barbatruc
Bonjour à tous,
Pour savoir si il y a du numeric dans Trigramme
Voici une solution simple
If Val(Trigramme) > 0 Then MsgBox "Pas de chiffres": Exit Sub

Bruno

Désolé......... ce code fonctionne que si les chiffres sont en premier
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonsoir à tous,

Quelle que soit la manière dont la TextBox Trigramme est alimentée, manuellement, par copier-coller ou par macro, ce code élimine les chiffres et conserve au maximum 3 lettres :
Code:
Dim t$, i As Byte
t = Trigramme
For i = 0 To 9
t = Replace(t, i, "")
Next
Trigramme = Left(t, 3)
On peut par exemple le mettre dans la macro Private Sub Trigramme_Change.

A+
 

youky(BJ)

XLDnaute Barbatruc
Bonsoir tous,
Encore une autre façon de faire...
Ce déclenche dès l'appuis sur une touche en Trigramme
Seul les lettres de a-z ou A -Z peuvent être mis

VB:
Private Sub Trigramme_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
If Len(Trigramme) > 2 Then KeyAscii = 0: Exit Sub
If KeyAscii > 90 And KeyAscii < 97 Then KeyAscii = 0
If KeyAscii > 64 And KeyAscii < 123 Then
Exit Sub
End If
KeyAscii = 0
End Sub
Bruno
 

job75

XLDnaute Barbatruc
Bonjour le fil, forum,

L'évènement KeyPress ne va pas si l'on alimente Trigramme par copier-coller.

Cette macro ne retient que les lettres de l'alphabet et les met en majuscules :
Code:
Private Sub Trigramme_Change()
Dim t$, i%, j%, x$, n As Byte
t = Trigramme
For i = 1 To Len(t)
  j = Asc(Mid(t, i, 1))
  If j > 64 And j < 91 Or j > 96 And j < 123 Then
    x = x & Chr(j)
    n = n + 1
    If n = 3 Then Exit For
  End If
Next
Trigramme = UCase(x) '3 lettres en majuscules
End Sub
Bonne journée.
 

Discussions similaires

Réponses
19
Affichages
2 K
Réponses
10
Affichages
644
Réponses
8
Affichages
642

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa