TextBox s/sheet vs TextBox s/form et BeforeUpdate

BAROTOLI

XLDnaute Nouveau
Bonsoir à tous,

Je fais encore appel à tous les rois du VBA Excel que vous êtes pour un petit problème de Textbox.

Je me suis amusé à faire une petite application en utilisant des contrôles VBA directement sur une feuille Excel (et non pas sur un formulaire).

Mon problème est que sur les TextBox utilisés directement sur Excel, je n'ai pas la possibilité d'utiliser une procédure "Private Sub TextBox_BeforeUpdate(ByVal Cancel As MSForms.ReturnBoolean)" alors que cette possibilité est offerte avec un TextBox créer sur un formulaire.

Mon but est de pouvoir tester ce qui est saisi dans la TextBox et générer une sorte de validation (uniquement numérique, valider en fonction d'une autre info figurant dans un autre textbox, etc...).

Alors bien sur, je pourrais gérer ca simplement en rajoutant un bouton, mais je souhaiterai le Rolls qui indique l'erreur au moment de la saisie. (La procédure Change ne va pas, car malheureusement elle se lance au premier caractère saisi).

Avez vous une solution, ou existe t-il quelque part sur le site des explications, et qui explique notamment les différentes procédures que je ne connais pas du tout et qui peut être pourrait m'aider par exemple à quoi sert la procédure "Error"...

Un grand merci d'avance pour vos remarques et vos conseils.

Bonne soirée,
Olivier
 

BAROTOLI

XLDnaute Nouveau
Re : TextBox s/sheet vs TextBox s/form et BeforeUpdate

Bonsoir,

Ca mérite qq éclaircissements
A+
kjin

Bonjour Kjin,

C'est vrai... Voici un petit exemple en guise d'éclaircissement :

J'ai une TextBox1 sur la Sheet1 est je voudrais que l'utilisateur ne puisse entrer qu'une donnée dont le nombre de caractère est entre 3 et 6.
Je limite donc à 6 caractère maxi via la propriété MaxLength de la TextBox1 puis j'insère la procédure suivant dans la Sheet1.

Private Sub TextBox1_Change()

If Len(TextBox1) < 3 Then MsgBox "Au minimum 3 caractères"

End sub

Le problème, c'est que si l'utilisateur veut rentrer par exemple la valeur VAL1, il aura 2 fois le message d'erreur, une fois lors de la saisie du "V", puis lors de la saisie du "A".

Autre style de chose que l'on peut faire avec un "BeforeUpdate" et que je n'arrive pas à faire avec un "Change", c'est formater la saisie de l'utilisateur après la saisie de la TextBox, par exemple mettre en forme le format d'un montant "1119,6" en "1 119,60"

Aurais-tu une idée ?
Un grand merci d'avance,
Bonne journée,
Olivier
 

Pierrot93

XLDnaute Barbatruc
Re : TextBox s/sheet vs TextBox s/form et BeforeUpdate

Bonjour Barotoli, Kjin

essaye peut être avec l'événement "LostFocus" :

Code:
Private Sub TextBox1_LostFocus()
If Len(TextBox1) < 3 Then
    MsgBox "saisie invalide"
    TextBox1.Verb xlVerbPrimary
End If
End Sub

A noter, dans ce cas, la méthode "verb" permet de conserver le "focus" dans le "textbox".

bonne journée
@+
 

Discussions similaires

Statistiques des forums

Discussions
312 331
Messages
2 087 360
Membres
103 529
dernier inscrit
moket07