Tester texte Textbox avec caractères de gauche des cellules d'une plage

BChaly

XLDnaute Occasionnel
Bonjour à tous,

Dans une "UserForm" j'ai créé une "TextBox", pour tester la présence de caractères dans la colonne A.

Pour valider cette "TextBox" j'appuie sur "Enter".

- Comment pourrais-je tester si les trois caractères de DROITE du texte saisi dans la "Textbox",
figurent dans les trois caractères de GAUCHE d'une cellule de la colonne A?

- Pourquoi n'est il plus possible d'utiliser la touche "Enter" lorsque je supprime le "CommandButton"
qui ne sert à rien?

Merci pour votre aide.

Cordialement,

BChaly
 

Pièces jointes

  • Test-Textbox.xlsm
    14.6 KB · Affichages: 45

Staple1600

XLDnaute Barbatruc
Re : Tester texte Textbox avec caractères de gauche des cellules d'une plage

Bonsoir à tous

Cela ne marche pas trop mal ainsi
Code:
Private Sub TextBox1_Change()
If Right(TextBox1.Value, 3) Like Left(ActiveCell.Text, 3) Then
MsgBox "ALARME!", vbCritical, "ERROR"
End If
End Sub
A adapter à tes besoins
(tests ok sur mon PC)
 

BChaly

XLDnaute Occasionnel
Re : Tester texte Textbox avec caractères de gauche des cellules d'une plage

Bonsoir Staple,

Merci pour votre réponse.

Ce code semble fonctionner sur une cellule active de la colonne A, mais je ne comprends
malheureusement pas comment puis-je l'adapter pour une recherche sur l'ensemble de la colonne?

Cordialement,

BChaly
 

job75

XLDnaute Barbatruc
Re : Tester texte Textbox avec caractères de gauche des cellules d'une plage

Bonjour BChaly, JM,

Si la casse n'a pas besoin d'être respectée :

Code:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Len(TextBox1) < 3 Then Exit Sub
If Application.CountIf([A:A], Right(TextBox1, 3) & "*") Then
  MsgBox "Pas autorisé !", 48, "Erreur"
  TextBox1 = ""
  Cancel = True
End If
End Sub
Si la casse doit être respectée :

Code:
Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
If Len(TextBox1) < 3 Then Exit Sub
Dim x$, t, y
x = Right(TextBox1, 3)
t = Range("A1", Range("A" & Rows.Count).End(xlUp)(2))
For Each y In t
  If Left(y, 3) = x Then
    MsgBox "Pas autorisé !", 48, "Erreur"
    TextBox1 = ""
    Cancel = True
    Exit For
  End If
Next
End Sub
Le CommandButton est nécessaire pour qu'on puisse sortir de la TextBox.

Si la TextBox est toute seule utiliser la macro TextBox1_Change.

A+
 

job75

XLDnaute Barbatruc
Re : Tester texte Textbox avec caractères de gauche des cellules d'une plage

Re,

Si la TextBox est seule on peut aussi utiliser la macro :

Code:
Private Sub UserForm_Click()
'---suite du code---
qui se déclenche quand on clique en dehors de la TextBox, sur l'UserForm.

Cancel = True n'est plus nécessaire.

Edit : ou aussi, quand on ferme l'UserForm :

Code:
Private Sub UserForm_QueryClose(cancel As Integer, closemode As Integer)
'---suite du code---
cancel = True est nécessaire.

A+
 
Dernière édition:

BChaly

XLDnaute Occasionnel
Re : Tester texte Textbox avec caractères de gauche des cellules d'une plage

Bonjour Job,

Merci pour ces deux codes qui fonctionnent et me conviennent parfaitement.
Merci également pour ces précisions concernant la "TextBox" et "l'UserForm".

Juste une question par curiosité: j'essaye de valider ma "TextBox" automatiquement
lorsque cinq caractères sont saisis (sans appuyer sur la touche "Enter" et sans utiliser
de "CommandButton"). Je pensais qu'en ajoutant l'instruction:
Code:
If Len(TextBox1) = 5 Then
juste avant "MsgBox" ceci fonctionnerait, mais ceci n'est pas le cas.

Est-ce possible à réaliser?

Cordialement,

BChaly
 

job75

XLDnaute Barbatruc
Re : Tester texte Textbox avec caractères de gauche des cellules d'une plage

Re,

Avec TextBox1_Change ça fonctionne quand on tape le 5ème caractère.

Mais il faut peut-être un autre test pour bloquer la macro si l'on modifie la TextBox...

A+
 

BChaly

XLDnaute Occasionnel
Re : Tester texte Textbox avec caractères de gauche des cellules d'une plage

Bonjour Job,

Merci pour cette précision.

Je ne parviens pas au résultat souhaité en insérant la totalité du code dans "TextBox1_Change",
et je ne comprends pas la signification de "bloquer la macro"?

Cordialement,

BChaly
 

job75

XLDnaute Barbatruc
Re : Tester texte Textbox avec caractères de gauche des cellules d'une plage

Re,

Dans les codes donnés If Len(TextBox1) < 3 Then Exit Sub bloque la macro :rolleyes:

C'est à vous de voir avec ce que vous voulez faire, moi je n'en sais rien.

A+
 

BChaly

XLDnaute Occasionnel
Re : Tester texte Textbox avec caractères de gauche des cellules d'une plage

Bonjour Job,

Merci pour votre réponse.

Malgré vos explications, je ne parviens pas à valider ma "TextBox" automatiquement sans
appuyer sur la touche "Enter", mais ce n'est pas grave je vais me contenter de ça.

Merci encore.

Cordialement,

BChaly
 

Discussions similaires

Statistiques des forums

Discussions
311 724
Messages
2 081 936
Membres
101 844
dernier inscrit
pktla