• Initiateur de la discussion Initiateur de la discussion Bruno P
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

B

Bruno P

Guest
Bonjour le Forum,

Me revoilà avec un petit problème. J'ai le code suivant :

Private Sub txtIdentFtAdv_AfterUpdate()
If Len(txtIdentFtAdv.Value) <> 8 Then
MsgBox "L'identifiant FT de l'ADV n'est pas correctement formaté." _
& "Veuillez le saisir à nouveau.", vbOKOnly + vbInformation, "Information incorrecte"
txtIdentFtAdv.Value = ""
txtIdentFtAdv.SetFocus
End If
End Sub

Si je ne me trompe, et c'est en tout cas ce que je veux faire (pas me tromper, mais ce qui suit ;o)) ), lors du passage du focus du champ txtIdentFtAdv, un contrôle du nombre de caractères saisis est effectué. Si le nombre est différent de 8, le message d'information ci-dessus s'affiche, la saisie du champ est effacée et le focus est re-donné à ce champ.
Or le focus reste sur le champ qui a lancé ce contrôle, donc pas sur txtIdentFtAdv.

Quelqu'un peut-il m'aider pour trouver la solution ? Merci d'avance.

Bruno
 
Re,

Merci à ceux qui sont en train de chercher, mais j'ai trouvé une solution en détournant le problème. Je n'agis plus lors du passage de focus au champ suivant, mais plutôt à la validation du formulaire par un bouton OK. Toutes les vérifications de saisie sont effectuées à ce moment là et le focus est bien redonné au champ de saisie souhaité.

Bonne fin de journée.
Bruno
 
Bonjour Bruno, le Forum

Oui ce n'est pas étonnant, moi je ne fais pas de message (ou alors oui sur le bouton de validation, mais pas en cours de saisie, ça stresse tout mes Users (les Pauvres !! lol))

Non, moi je fais ceci si vraiment il est primordial qu'un TextBox soit "surveillée" :

Private Sub TextBox1_Change()
With Me.TextBox1
If Len(.Text) > 8 Then
.SelStart = 0
.SetFocus
.SelLength = Len(.Text)
End If
End With
End Sub

Private Sub TextBox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
With Me.TextBox1
If .Value <> "" And Len(.Text) <> 8 Then
Cancel = True
.SelStart = 0
.SetFocus
.SelLength = Len(.Text)
End If
End With
End Sub

C'est Radical, il n'y a pas de message, mais le User ne peut qu'obtempérer !!

D'accord c'est un peu de boulot mais si tu as beaucoup de TextBox on peut (of course) faire une sous sub Générale comme j'ai fait récemment Lien supprimé

Bonne Fin de Journée
@+Thierry
 
Bonsoir Thierry,

Merci pour ton Nième coup de main ;-)
Je vais gardé ce que j'ai trouvé cet après-midi, car j'arrive à le comprendre (je te rappelle que je débute totalement en VBA et que j'en suis à ma toute première macro), et finalement, ça me convient totalement (je te rejoins d'ailleurs, ainsi que tes Users pour trouver cette solution plus pratique et surtout moins stressante !). Et comme je serai peut-être amené à revoir cette macro pour la faire évoluer ultérieurement ...

Avec cette excuse d'être débutant, j'avoue avoir vite botté en touche à la lecture du fil que tu m'as indiqué. Trop complexe pour moi. On verra dans quelques années ;o))
 
Bonsoir à tous

Je faisais une recherche sur
Exit(ByVal Cancel As MSForms.ReturnBoolean)
et suis tombé, entre autre, sur ce fil.

Mon problème est similaire à celui de Bruno P, à savoir contrôler la saisie dans une TextBox avant d'autoriser le User à sortir du contrôle. Dans mon cas, la TextBox DOIT être renseignée. (If .Value = "" Then
Cancel = True ...)

J'ai donc utilisé la solution de @+Thierry mentionnée dans ce fil - que je remercie au passage (je me demandais bien ou je devais mettre ce
cancel = true ... Pas d'exemple trouvé dans l'aide en ligne de VBA)
Mais, oh misère, j'ai du louper une marche, petite certe, mais qui fait que je peux sortir de la TextBox alors qu'elle est vide.

Alors, je fais humblement appel à vous avant d'aller au dodo.

Merci d'avance.

@+ peper-eliot
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 Problème de date
Réponses
5
Affichages
269
Réponses
4
Affichages
447
Réponses
10
Affichages
664
Réponses
4
Affichages
585
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
378
Réponses
5
Affichages
562
Retour