bonjour,
j'ai deux probleme lié à la saisie d'une TextBox
1er probleme :
Actuellement en utilisant KeyPress, j'interdis la saisie de certains
caractères (ex :"?") et je transforme la saisie de minuscule en majus cule.
=> le probleme est que si je fais un copier/coller, je peux passer à travers
le controle comment faire pour que lorsque je fais un coller dans ma
TextBox, les miniscules soient transformées en majuscule et que s'il y a un
caratère interdis, le copier ne s'execute pas et une message d'erreur
apparait ?
2eme probleme :
dans une textbox, je voudrais rentrer que des date au format 30/05/1980 :
comment faire (j'ai fais un controle en n'autorisant que le caractère "/" ou
les chiffre mais rien ne m'empeche actuellement de saisire 303020/05405 / ?
bonjour,
j'ai deux probleme lié à la saisie d'une TextBox
1er probleme :
Actuellement en utilisant KeyPress, j'interdis la saisie de certains
caractères (ex :"?") et je transforme la saisie de minuscule en majus cule.
=> le probleme est que si je fais un copier/coller, je peux passer à travers
le controle comment faire pour que lorsque je fais un coller dans ma
TextBox, les miniscules soient transformées en majuscule et que s'il y a un
caratère interdis, le copier ne s'execute pas et une message d'erreur
apparait ?
2eme probleme :
dans une textbox, je voudrais rentrer que des date au format 30/05/1980 :
comment faire (j'ai fais un controle en n'autorisant que le caractère "/" ou
les chiffre mais rien ne m'empeche actuellement de saisire 303020/05405 / ?
bonjour,
j'ai deux probleme lié à la saisie d'une TextBox
1er probleme :
Actuellement en utilisant KeyPress, j'interdis la saisie de certains
caractères (ex :"?") et je transforme la saisie de minuscule en majus cule.
=> le probleme est que si je fais un copier/coller, je peux passer à travers
le controle comment faire pour que lorsque je fais un coller dans ma
TextBox, les miniscules soient transformées en majuscule et que s'il y a un
caratère interdis, le copier ne s'execute pas et une message d'erreur
apparait ?
2eme probleme :
dans une textbox, je voudrais rentrer que des date au format 30/05/1980 :
comment faire (j'ai fais un controle en n'autorisant que le caractère "/" ou
les chiffre mais rien ne m'empeche actuellement de saisire 303020/05405 / ?
bonjour,
j'ai deux probleme lié à la saisie d'une TextBox
1er probleme :
Actuellement en utilisant KeyPress, j'interdis la saisie de certains
caractères (ex :"?") et je transforme la saisie de minuscule en majuscule.
=> le probleme est que si je fais un copier/coller, je peux passer à
travers le controle comment faire pour que lorsque je fais un coller dans
ma TextBox, les miniscules soient transformées en majuscule et que s'il y
a un caratère interdis, le copier ne s'execute pas et une message d'erreur
apparait ?
2eme probleme :
dans une textbox, je voudrais rentrer que des date au format 30/05/1980 :
comment faire (j'ai fais un controle en n'autorisant que le caractère "/"
ou les chiffre mais rien ne m'empeche actuellement de saisire
303020/05405/ ?
bonjour,
j'ai deux probleme lié à la saisie d'une TextBox
1er probleme :
Actuellement en utilisant KeyPress, j'interdis la saisie de certains
caractères (ex :"?") et je transforme la saisie de minuscule en majuscule.
=> le probleme est que si je fais un copier/coller, je peux passer à
travers le controle comment faire pour que lorsque je fais un coller dans
ma TextBox, les miniscules soient transformées en majuscule et que s'il y
a un caratère interdis, le copier ne s'execute pas et une message d'erreur
apparait ?
2eme probleme :
dans une textbox, je voudrais rentrer que des date au format 30/05/1980 :
comment faire (j'ai fais un controle en n'autorisant que le caractère "/"
ou les chiffre mais rien ne m'empeche actuellement de saisire
303020/05405/ ?
bonjour,
j'ai deux probleme lié à la saisie d'une TextBox
1er probleme :
Actuellement en utilisant KeyPress, j'interdis la saisie de certains
caractères (ex :"?") et je transforme la saisie de minuscule en majuscule.
=> le probleme est que si je fais un copier/coller, je peux passer à
travers le controle comment faire pour que lorsque je fais un coller dans
ma TextBox, les miniscules soient transformées en majuscule et que s'il y
a un caratère interdis, le copier ne s'execute pas et une message d'erreur
apparait ?
2eme probleme :
dans une textbox, je voudrais rentrer que des date au format 30/05/1980 :
comment faire (j'ai fais un controle en n'autorisant que le caractère "/"
ou les chiffre mais rien ne m'empeche actuellement de saisire
303020/05405/ ?
le probleme est que j'aurais voulu un controle lors de la saisie et non pas
après...
"Michel Gaboly" a écrit dans le message de news:
Salut Emcy,
Utilise mon outil de contrôle de saisie, la fonction Controle
Présentation :
http://www.gaboly.com/VBA/FonctionControle.html
Code commenté :
http://www.gaboly.com/VBA/CodeCompletControle.html
Pour le premier problème, utilise une succession de Replace Excel 200 0 ou
postérieur Win ou Substitute (Excel 97 ou
Excel Mac), pour éliminer les éventuels caractères interdits.
Voici un exemple de code (j'ai mis mon fichier test ici :
http://cjoint.com/?mvlWoYTsfG
Private Sub UserForm_Initialize()
' Détermine la plage qui liste les caractères à remplacer.
With Range("RéfCarInterdits")
Set Ref = Range(.Offset(1), .Offset(.CurrentRegion.Rows. Count -
1))
End With
End Sub
Private Sub TDescriptif_Change()
Dim c As Range
For Each c In Ref
TDescriptif = Replace(TDescriptif, c, "")
Next
End Sub
Private Sub BAnnuler_Click()
Unload Me
End Sub
Private Sub BOK_Click()
ControleSaisie
If Resultat Then
Me.Hide
ReportDonnees
Unload Me
End If
End Sub
Private Sub ControleSaisie()
Resultat = Controle(TDate = "", "la date de livraison.", TDate )
' La fonction EstDate, différente de IsDate, est dans le module MOutils
If Resultat Then Resultat = Controle(Not EstDate(TDate), , _
TDate, "La date indiquée est incorrecte. Elle doit être au for mat " &
"""" & "jj/mm/aa.""", True)
If Resultat Then Resultat = Controle(TDescriptif = "", "le
descriptif.")
End Sub
Private Sub ReportDonnees()
' Ton code
End Subbonjour,
j'ai deux probleme lié à la saisie d'une TextBox
1er probleme :
Actuellement en utilisant KeyPress, j'interdis la saisie de certains
caractères (ex :"?") et je transforme la saisie de minuscule en majus cule.
=> le probleme est que si je fais un copier/coller, je peux passer à
travers le controle comment faire pour que lorsque je fais un coller da ns
ma TextBox, les miniscules soient transformées en majuscule et que s' il y
a un caratère interdis, le copier ne s'execute pas et une message d'e rreur
apparait ?
2eme probleme :
dans une textbox, je voudrais rentrer que des date au format 30/05/1980 :
comment faire (j'ai fais un controle en n'autorisant que le caractère "/"
ou les chiffre mais rien ne m'empeche actuellement de saisire
303020/05405/ ?
le probleme est que j'aurais voulu un controle lors de la saisie et non pas
après...
"Michel Gaboly" <michel.gaboly@wanadoo.fr> a écrit dans le message de news:
uDdrxyhBGHA.1288@TK2MSFTNGP09.phx.gbl...
Salut Emcy,
Utilise mon outil de contrôle de saisie, la fonction Controle
Présentation :
http://www.gaboly.com/VBA/FonctionControle.html
Code commenté :
http://www.gaboly.com/VBA/CodeCompletControle.html
Pour le premier problème, utilise une succession de Replace Excel 200 0 ou
postérieur Win ou Substitute (Excel 97 ou
Excel Mac), pour éliminer les éventuels caractères interdits.
Voici un exemple de code (j'ai mis mon fichier test ici :
http://cjoint.com/?mvlWoYTsfG
Private Sub UserForm_Initialize()
' Détermine la plage qui liste les caractères à remplacer.
With Range("RéfCarInterdits")
Set Ref = Range(.Offset(1), .Offset(.CurrentRegion.Rows. Count -
1))
End With
End Sub
Private Sub TDescriptif_Change()
Dim c As Range
For Each c In Ref
TDescriptif = Replace(TDescriptif, c, "")
Next
End Sub
Private Sub BAnnuler_Click()
Unload Me
End Sub
Private Sub BOK_Click()
ControleSaisie
If Resultat Then
Me.Hide
ReportDonnees
Unload Me
End If
End Sub
Private Sub ControleSaisie()
Resultat = Controle(TDate = "", "la date de livraison.", TDate )
' La fonction EstDate, différente de IsDate, est dans le module MOutils
If Resultat Then Resultat = Controle(Not EstDate(TDate), , _
TDate, "La date indiquée est incorrecte. Elle doit être au for mat " &
"""" & "jj/mm/aa.""", True)
If Resultat Then Resultat = Controle(TDescriptif = "", "le
descriptif.")
End Sub
Private Sub ReportDonnees()
' Ton code
End Sub
bonjour,
j'ai deux probleme lié à la saisie d'une TextBox
1er probleme :
Actuellement en utilisant KeyPress, j'interdis la saisie de certains
caractères (ex :"?") et je transforme la saisie de minuscule en majus cule.
=> le probleme est que si je fais un copier/coller, je peux passer à
travers le controle comment faire pour que lorsque je fais un coller da ns
ma TextBox, les miniscules soient transformées en majuscule et que s' il y
a un caratère interdis, le copier ne s'execute pas et une message d'e rreur
apparait ?
2eme probleme :
dans une textbox, je voudrais rentrer que des date au format 30/05/1980 :
comment faire (j'ai fais un controle en n'autorisant que le caractère "/"
ou les chiffre mais rien ne m'empeche actuellement de saisire
303020/05405/ ?
le probleme est que j'aurais voulu un controle lors de la saisie et non pas
après...
"Michel Gaboly" a écrit dans le message de news:
Salut Emcy,
Utilise mon outil de contrôle de saisie, la fonction Controle
Présentation :
http://www.gaboly.com/VBA/FonctionControle.html
Code commenté :
http://www.gaboly.com/VBA/CodeCompletControle.html
Pour le premier problème, utilise une succession de Replace Excel 200 0 ou
postérieur Win ou Substitute (Excel 97 ou
Excel Mac), pour éliminer les éventuels caractères interdits.
Voici un exemple de code (j'ai mis mon fichier test ici :
http://cjoint.com/?mvlWoYTsfG
Private Sub UserForm_Initialize()
' Détermine la plage qui liste les caractères à remplacer.
With Range("RéfCarInterdits")
Set Ref = Range(.Offset(1), .Offset(.CurrentRegion.Rows. Count -
1))
End With
End Sub
Private Sub TDescriptif_Change()
Dim c As Range
For Each c In Ref
TDescriptif = Replace(TDescriptif, c, "")
Next
End Sub
Private Sub BAnnuler_Click()
Unload Me
End Sub
Private Sub BOK_Click()
ControleSaisie
If Resultat Then
Me.Hide
ReportDonnees
Unload Me
End If
End Sub
Private Sub ControleSaisie()
Resultat = Controle(TDate = "", "la date de livraison.", TDate )
' La fonction EstDate, différente de IsDate, est dans le module MOutils
If Resultat Then Resultat = Controle(Not EstDate(TDate), , _
TDate, "La date indiquée est incorrecte. Elle doit être au for mat " &
"""" & "jj/mm/aa.""", True)
If Resultat Then Resultat = Controle(TDescriptif = "", "le
descriptif.")
End Sub
Private Sub ReportDonnees()
' Ton code
End Subbonjour,
j'ai deux probleme lié à la saisie d'une TextBox
1er probleme :
Actuellement en utilisant KeyPress, j'interdis la saisie de certains
caractères (ex :"?") et je transforme la saisie de minuscule en majus cule.
=> le probleme est que si je fais un copier/coller, je peux passer à
travers le controle comment faire pour que lorsque je fais un coller da ns
ma TextBox, les miniscules soient transformées en majuscule et que s' il y
a un caratère interdis, le copier ne s'execute pas et une message d'e rreur
apparait ?
2eme probleme :
dans une textbox, je voudrais rentrer que des date au format 30/05/1980 :
comment faire (j'ai fais un controle en n'autorisant que le caractère "/"
ou les chiffre mais rien ne m'empeche actuellement de saisire
303020/05405/ ?
le probleme est que j'aurais voulu un controle lors de la saisie et non
pas après...
"Michel Gaboly" a écrit dans le message de
news:
Salut Emcy,
Utilise mon outil de contrôle de saisie, la fonction Controle
Présentation :
http://www.gaboly.com/VBA/FonctionControle.html
Code commenté :
http://www.gaboly.com/VBA/CodeCompletControle.html
Pour le premier problème, utilise une succession de Replace Excel 2000 ou
postérieur Win ou Substitute (Excel 97 ou
Excel Mac), pour éliminer les éventuels caractères interdits.
Voici un exemple de code (j'ai mis mon fichier test ici :
http://cjoint.com/?mvlWoYTsfG
Private Sub UserForm_Initialize()
' Détermine la plage qui liste les caractères à remplacer.
With Range("RéfCarInterdits")
Set Ref = Range(.Offset(1),
.Offset(.CurrentRegion.Rows.Count - 1))
End With
End Sub
Private Sub TDescriptif_Change()
Dim c As Range
For Each c In Ref
TDescriptif = Replace(TDescriptif, c, "")
Next
End Sub
Private Sub BAnnuler_Click()
Unload Me
End Sub
Private Sub BOK_Click()
ControleSaisie
If Resultat Then
Me.Hide
ReportDonnees
Unload Me
End If
End Sub
Private Sub ControleSaisie()
Resultat = Controle(TDate = "", "la date de livraison.", TDate)
' La fonction EstDate, différente de IsDate, est dans le module
MOutils
If Resultat Then Resultat = Controle(Not EstDate(TDate), , _
TDate, "La date indiquée est incorrecte. Elle doit être au format " &
"""" & "jj/mm/aa.""", True)
If Resultat Then Resultat = Controle(TDescriptif = "", "le
descriptif.")
End Sub
Private Sub ReportDonnees()
' Ton code
End Subbonjour,
j'ai deux probleme lié à la saisie d'une TextBox
1er probleme :
Actuellement en utilisant KeyPress, j'interdis la saisie de certains
caractères (ex :"?") et je transforme la saisie de minuscule en majuscule.
=> le probleme est que si je fais un copier/coller, je peux passer à
travers le controle comment faire pour que lorsque je fais un coller dans
ma TextBox, les miniscules soient transformées en majuscule et que s'il y
a un caratère interdis, le copier ne s'execute pas et une message d'erreur
apparait ?
2eme probleme :
dans une textbox, je voudrais rentrer que des date au format 30/05/1980 :
comment faire (j'ai fais un controle en n'autorisant que le caractère "/"
ou les chiffre mais rien ne m'empeche actuellement de saisire
303020/05405/ ?
le probleme est que j'aurais voulu un controle lors de la saisie et non
pas après...
"Michel Gaboly" <michel.gaboly@wanadoo.fr> a écrit dans le message de
news: uDdrxyhBGHA.1288@TK2MSFTNGP09.phx.gbl...
Salut Emcy,
Utilise mon outil de contrôle de saisie, la fonction Controle
Présentation :
http://www.gaboly.com/VBA/FonctionControle.html
Code commenté :
http://www.gaboly.com/VBA/CodeCompletControle.html
Pour le premier problème, utilise une succession de Replace Excel 2000 ou
postérieur Win ou Substitute (Excel 97 ou
Excel Mac), pour éliminer les éventuels caractères interdits.
Voici un exemple de code (j'ai mis mon fichier test ici :
http://cjoint.com/?mvlWoYTsfG
Private Sub UserForm_Initialize()
' Détermine la plage qui liste les caractères à remplacer.
With Range("RéfCarInterdits")
Set Ref = Range(.Offset(1),
.Offset(.CurrentRegion.Rows.Count - 1))
End With
End Sub
Private Sub TDescriptif_Change()
Dim c As Range
For Each c In Ref
TDescriptif = Replace(TDescriptif, c, "")
Next
End Sub
Private Sub BAnnuler_Click()
Unload Me
End Sub
Private Sub BOK_Click()
ControleSaisie
If Resultat Then
Me.Hide
ReportDonnees
Unload Me
End If
End Sub
Private Sub ControleSaisie()
Resultat = Controle(TDate = "", "la date de livraison.", TDate)
' La fonction EstDate, différente de IsDate, est dans le module
MOutils
If Resultat Then Resultat = Controle(Not EstDate(TDate), , _
TDate, "La date indiquée est incorrecte. Elle doit être au format " &
"""" & "jj/mm/aa.""", True)
If Resultat Then Resultat = Controle(TDescriptif = "", "le
descriptif.")
End Sub
Private Sub ReportDonnees()
' Ton code
End Sub
bonjour,
j'ai deux probleme lié à la saisie d'une TextBox
1er probleme :
Actuellement en utilisant KeyPress, j'interdis la saisie de certains
caractères (ex :"?") et je transforme la saisie de minuscule en majuscule.
=> le probleme est que si je fais un copier/coller, je peux passer à
travers le controle comment faire pour que lorsque je fais un coller dans
ma TextBox, les miniscules soient transformées en majuscule et que s'il y
a un caratère interdis, le copier ne s'execute pas et une message d'erreur
apparait ?
2eme probleme :
dans une textbox, je voudrais rentrer que des date au format 30/05/1980 :
comment faire (j'ai fais un controle en n'autorisant que le caractère "/"
ou les chiffre mais rien ne m'empeche actuellement de saisire
303020/05405/ ?
le probleme est que j'aurais voulu un controle lors de la saisie et non
pas après...
"Michel Gaboly" a écrit dans le message de
news:
Salut Emcy,
Utilise mon outil de contrôle de saisie, la fonction Controle
Présentation :
http://www.gaboly.com/VBA/FonctionControle.html
Code commenté :
http://www.gaboly.com/VBA/CodeCompletControle.html
Pour le premier problème, utilise une succession de Replace Excel 2000 ou
postérieur Win ou Substitute (Excel 97 ou
Excel Mac), pour éliminer les éventuels caractères interdits.
Voici un exemple de code (j'ai mis mon fichier test ici :
http://cjoint.com/?mvlWoYTsfG
Private Sub UserForm_Initialize()
' Détermine la plage qui liste les caractères à remplacer.
With Range("RéfCarInterdits")
Set Ref = Range(.Offset(1),
.Offset(.CurrentRegion.Rows.Count - 1))
End With
End Sub
Private Sub TDescriptif_Change()
Dim c As Range
For Each c In Ref
TDescriptif = Replace(TDescriptif, c, "")
Next
End Sub
Private Sub BAnnuler_Click()
Unload Me
End Sub
Private Sub BOK_Click()
ControleSaisie
If Resultat Then
Me.Hide
ReportDonnees
Unload Me
End If
End Sub
Private Sub ControleSaisie()
Resultat = Controle(TDate = "", "la date de livraison.", TDate)
' La fonction EstDate, différente de IsDate, est dans le module
MOutils
If Resultat Then Resultat = Controle(Not EstDate(TDate), , _
TDate, "La date indiquée est incorrecte. Elle doit être au format " &
"""" & "jj/mm/aa.""", True)
If Resultat Then Resultat = Controle(TDescriptif = "", "le
descriptif.")
End Sub
Private Sub ReportDonnees()
' Ton code
End Subbonjour,
j'ai deux probleme lié à la saisie d'une TextBox
1er probleme :
Actuellement en utilisant KeyPress, j'interdis la saisie de certains
caractères (ex :"?") et je transforme la saisie de minuscule en majuscule.
=> le probleme est que si je fais un copier/coller, je peux passer à
travers le controle comment faire pour que lorsque je fais un coller dans
ma TextBox, les miniscules soient transformées en majuscule et que s'il y
a un caratère interdis, le copier ne s'execute pas et une message d'erreur
apparait ?
2eme probleme :
dans une textbox, je voudrais rentrer que des date au format 30/05/1980 :
comment faire (j'ai fais un controle en n'autorisant que le caractère "/"
ou les chiffre mais rien ne m'empeche actuellement de saisire
303020/05405/ ?
Excuse moi, je n'ai pas completement lu ton message tout à l'heure (j 'ai
honte, j'avais pas vu le fichier joint), tu m'as bien donné la soluti on pour
la première question
par contre quand je rentre comme date 45/12/05, je n'ai pas d'erreur ma is ça
c'est facile à modifier
=> ce que je trouve dommage avec cette fonction c'est qu'elle n'est a ctive
que lorsqu'on clic sur le bouton OK ... mais je ne vois pas comment on
purrait faire autrement...
"Michel Gaboly" a écrit dans le message de news:
OEy$
Re,
Tu pourrais au moins dire si tu as regardé le fichier exemple que j'a i mis
sur CJoint, ou si tu t'es contenté de
parcourir ma réponse.
Par ailleurs pour avoir un contrôle lors de la saisie, tu associes le
contrôle de la date à l'événement BeforeUpdate du
TextBox par exemple, en ajoutant
If Not Resultat then Cancel = True.
A part cela, que penses-tu de cette fonction Controle ?
Elle permet de faire face à peu près à n'importe quelle contraint e à
respecter, pour peu qu'on sache l'exprimer sous
forme d'une expression dont le résultat est un booléen.le probleme est que j'aurais voulu un controle lors de la saisie et non
pas après...
"Michel Gaboly" a écrit dans le message de
news:
Salut Emcy,
Utilise mon outil de contrôle de saisie, la fonction Controle
Présentation :
http://www.gaboly.com/VBA/FonctionControle.html
Code commenté :
http://www.gaboly.com/VBA/CodeCompletControle.html
Pour le premier problème, utilise une succession de Replace Excel 200 0 ou
postérieur Win ou Substitute (Excel 97 ou
Excel Mac), pour éliminer les éventuels caractères interdits.
Voici un exemple de code (j'ai mis mon fichier test ici :
http://cjoint.com/?mvlWoYTsfG
Private Sub UserForm_Initialize()
' Détermine la plage qui liste les caractères à remplacer.
With Range("RéfCarInterdits")
Set Ref = Range(.Offset(1),
.Offset(.CurrentRegion.Rows.Count - 1))
End With
End Sub
Private Sub TDescriptif_Change()
Dim c As Range
For Each c In Ref
TDescriptif = Replace(TDescriptif, c, "")
Next
End Sub
Private Sub BAnnuler_Click()
Unload Me
End Sub
Private Sub BOK_Click()
ControleSaisie
If Resultat Then
Me.Hide
ReportDonnees
Unload Me
End If
End Sub
Private Sub ControleSaisie()
Resultat = Controle(TDate = "", "la date de livraison.", TDate )
' La fonction EstDate, différente de IsDate, est dans le module
MOutils
If Resultat Then Resultat = Controle(Not EstDate(TDate), , _
TDate, "La date indiquée est incorrecte. Elle doit être au for mat " &
"""" & "jj/mm/aa.""", True)
If Resultat Then Resultat = Controle(TDescriptif = "", "le
descriptif.")
End Sub
Private Sub ReportDonnees()
' Ton code
End Subbonjour,
j'ai deux probleme lié à la saisie d'une TextBox
1er probleme :
Actuellement en utilisant KeyPress, j'interdis la saisie de certains
caractères (ex :"?") et je transforme la saisie de minuscule en maju scule.
=> le probleme est que si je fais un copier/coller, je peux passer à
travers le controle comment faire pour que lorsque je fais un coller d ans
ma TextBox, les miniscules soient transformées en majuscule et que s 'il y
a un caratère interdis, le copier ne s'execute pas et une message d' erreur
apparait ?
2eme probleme :
dans une textbox, je voudrais rentrer que des date au format 30/05/198 0 :
comment faire (j'ai fais un controle en n'autorisant que le caractèr e "/"
ou les chiffre mais rien ne m'empeche actuellement de saisire
303020/05405/ ?
Excuse moi, je n'ai pas completement lu ton message tout à l'heure (j 'ai
honte, j'avais pas vu le fichier joint), tu m'as bien donné la soluti on pour
la première question
par contre quand je rentre comme date 45/12/05, je n'ai pas d'erreur ma is ça
c'est facile à modifier
=> ce que je trouve dommage avec cette fonction c'est qu'elle n'est a ctive
que lorsqu'on clic sur le bouton OK ... mais je ne vois pas comment on
purrait faire autrement...
"Michel Gaboly" <michel.gaboly@wanadoo.fr> a écrit dans le message de news:
OEy$XJjBGHA.1288@TK2MSFTNGP09.phx.gbl...
Re,
Tu pourrais au moins dire si tu as regardé le fichier exemple que j'a i mis
sur CJoint, ou si tu t'es contenté de
parcourir ma réponse.
Par ailleurs pour avoir un contrôle lors de la saisie, tu associes le
contrôle de la date à l'événement BeforeUpdate du
TextBox par exemple, en ajoutant
If Not Resultat then Cancel = True.
A part cela, que penses-tu de cette fonction Controle ?
Elle permet de faire face à peu près à n'importe quelle contraint e à
respecter, pour peu qu'on sache l'exprimer sous
forme d'une expression dont le résultat est un booléen.
le probleme est que j'aurais voulu un controle lors de la saisie et non
pas après...
"Michel Gaboly" <michel.gaboly@wanadoo.fr> a écrit dans le message de
news: uDdrxyhBGHA.1288@TK2MSFTNGP09.phx.gbl...
Salut Emcy,
Utilise mon outil de contrôle de saisie, la fonction Controle
Présentation :
http://www.gaboly.com/VBA/FonctionControle.html
Code commenté :
http://www.gaboly.com/VBA/CodeCompletControle.html
Pour le premier problème, utilise une succession de Replace Excel 200 0 ou
postérieur Win ou Substitute (Excel 97 ou
Excel Mac), pour éliminer les éventuels caractères interdits.
Voici un exemple de code (j'ai mis mon fichier test ici :
http://cjoint.com/?mvlWoYTsfG
Private Sub UserForm_Initialize()
' Détermine la plage qui liste les caractères à remplacer.
With Range("RéfCarInterdits")
Set Ref = Range(.Offset(1),
.Offset(.CurrentRegion.Rows.Count - 1))
End With
End Sub
Private Sub TDescriptif_Change()
Dim c As Range
For Each c In Ref
TDescriptif = Replace(TDescriptif, c, "")
Next
End Sub
Private Sub BAnnuler_Click()
Unload Me
End Sub
Private Sub BOK_Click()
ControleSaisie
If Resultat Then
Me.Hide
ReportDonnees
Unload Me
End If
End Sub
Private Sub ControleSaisie()
Resultat = Controle(TDate = "", "la date de livraison.", TDate )
' La fonction EstDate, différente de IsDate, est dans le module
MOutils
If Resultat Then Resultat = Controle(Not EstDate(TDate), , _
TDate, "La date indiquée est incorrecte. Elle doit être au for mat " &
"""" & "jj/mm/aa.""", True)
If Resultat Then Resultat = Controle(TDescriptif = "", "le
descriptif.")
End Sub
Private Sub ReportDonnees()
' Ton code
End Sub
bonjour,
j'ai deux probleme lié à la saisie d'une TextBox
1er probleme :
Actuellement en utilisant KeyPress, j'interdis la saisie de certains
caractères (ex :"?") et je transforme la saisie de minuscule en maju scule.
=> le probleme est que si je fais un copier/coller, je peux passer à
travers le controle comment faire pour que lorsque je fais un coller d ans
ma TextBox, les miniscules soient transformées en majuscule et que s 'il y
a un caratère interdis, le copier ne s'execute pas et une message d' erreur
apparait ?
2eme probleme :
dans une textbox, je voudrais rentrer que des date au format 30/05/198 0 :
comment faire (j'ai fais un controle en n'autorisant que le caractèr e "/"
ou les chiffre mais rien ne m'empeche actuellement de saisire
303020/05405/ ?
Excuse moi, je n'ai pas completement lu ton message tout à l'heure (j 'ai
honte, j'avais pas vu le fichier joint), tu m'as bien donné la soluti on pour
la première question
par contre quand je rentre comme date 45/12/05, je n'ai pas d'erreur ma is ça
c'est facile à modifier
=> ce que je trouve dommage avec cette fonction c'est qu'elle n'est a ctive
que lorsqu'on clic sur le bouton OK ... mais je ne vois pas comment on
purrait faire autrement...
"Michel Gaboly" a écrit dans le message de news:
OEy$
Re,
Tu pourrais au moins dire si tu as regardé le fichier exemple que j'a i mis
sur CJoint, ou si tu t'es contenté de
parcourir ma réponse.
Par ailleurs pour avoir un contrôle lors de la saisie, tu associes le
contrôle de la date à l'événement BeforeUpdate du
TextBox par exemple, en ajoutant
If Not Resultat then Cancel = True.
A part cela, que penses-tu de cette fonction Controle ?
Elle permet de faire face à peu près à n'importe quelle contraint e à
respecter, pour peu qu'on sache l'exprimer sous
forme d'une expression dont le résultat est un booléen.le probleme est que j'aurais voulu un controle lors de la saisie et non
pas après...
"Michel Gaboly" a écrit dans le message de
news:
Salut Emcy,
Utilise mon outil de contrôle de saisie, la fonction Controle
Présentation :
http://www.gaboly.com/VBA/FonctionControle.html
Code commenté :
http://www.gaboly.com/VBA/CodeCompletControle.html
Pour le premier problème, utilise une succession de Replace Excel 200 0 ou
postérieur Win ou Substitute (Excel 97 ou
Excel Mac), pour éliminer les éventuels caractères interdits.
Voici un exemple de code (j'ai mis mon fichier test ici :
http://cjoint.com/?mvlWoYTsfG
Private Sub UserForm_Initialize()
' Détermine la plage qui liste les caractères à remplacer.
With Range("RéfCarInterdits")
Set Ref = Range(.Offset(1),
.Offset(.CurrentRegion.Rows.Count - 1))
End With
End Sub
Private Sub TDescriptif_Change()
Dim c As Range
For Each c In Ref
TDescriptif = Replace(TDescriptif, c, "")
Next
End Sub
Private Sub BAnnuler_Click()
Unload Me
End Sub
Private Sub BOK_Click()
ControleSaisie
If Resultat Then
Me.Hide
ReportDonnees
Unload Me
End If
End Sub
Private Sub ControleSaisie()
Resultat = Controle(TDate = "", "la date de livraison.", TDate )
' La fonction EstDate, différente de IsDate, est dans le module
MOutils
If Resultat Then Resultat = Controle(Not EstDate(TDate), , _
TDate, "La date indiquée est incorrecte. Elle doit être au for mat " &
"""" & "jj/mm/aa.""", True)
If Resultat Then Resultat = Controle(TDescriptif = "", "le
descriptif.")
End Sub
Private Sub ReportDonnees()
' Ton code
End Subbonjour,
j'ai deux probleme lié à la saisie d'une TextBox
1er probleme :
Actuellement en utilisant KeyPress, j'interdis la saisie de certains
caractères (ex :"?") et je transforme la saisie de minuscule en maju scule.
=> le probleme est que si je fais un copier/coller, je peux passer à
travers le controle comment faire pour que lorsque je fais un coller d ans
ma TextBox, les miniscules soient transformées en majuscule et que s 'il y
a un caratère interdis, le copier ne s'execute pas et une message d' erreur
apparait ?
2eme probleme :
dans une textbox, je voudrais rentrer que des date au format 30/05/198 0 :
comment faire (j'ai fais un controle en n'autorisant que le caractèr e "/"
ou les chiffre mais rien ne m'empeche actuellement de saisire
303020/05405/ ?
Excuse moi, je n'ai pas completement lu ton message tout à l'heure (j'ai
honte, j'avais pas vu le fichier joint), tu m'as bien donné la solution
pour la première question
par contre quand je rentre comme date 45/12/05, je n'ai pas d'erreur mais
ça c'est facile à modifier
=> ce que je trouve dommage avec cette fonction c'est qu'elle n'est active
que lorsqu'on clic sur le bouton OK ... mais je ne vois pas comment on
purrait faire autrement...
"Michel Gaboly" a écrit dans le message de
news: OEy$
Re,
Tu pourrais au moins dire si tu as regardé le fichier exemple que j'ai mis
sur CJoint, ou si tu t'es contenté de
parcourir ma réponse.
Par ailleurs pour avoir un contrôle lors de la saisie, tu associes le
contrôle de la date à l'événement BeforeUpdate du
TextBox par exemple, en ajoutant
If Not Resultat then Cancel = True.
A part cela, que penses-tu de cette fonction Controle ?
Elle permet de faire face à peu près à n'importe quelle contrainte à
respecter, pour peu qu'on sache l'exprimer sous
forme d'une expression dont le résultat est un booléen.le probleme est que j'aurais voulu un controle lors de la saisie et non
pas après...
"Michel Gaboly" a écrit dans le message de
news:
Salut Emcy,
Utilise mon outil de contrôle de saisie, la fonction Controle
Présentation :
http://www.gaboly.com/VBA/FonctionControle.html
Code commenté :
http://www.gaboly.com/VBA/CodeCompletControle.html
Pour le premier problème, utilise une succession de Replace Excel 2000 ou
postérieur Win ou Substitute (Excel 97 ou
Excel Mac), pour éliminer les éventuels caractères interdits.
Voici un exemple de code (j'ai mis mon fichier test ici :
http://cjoint.com/?mvlWoYTsfG
Private Sub UserForm_Initialize()
' Détermine la plage qui liste les caractères à remplacer.
With Range("RéfCarInterdits")
Set Ref = Range(.Offset(1),
.Offset(.CurrentRegion.Rows.Count - 1))
End With
End Sub
Private Sub TDescriptif_Change()
Dim c As Range
For Each c In Ref
TDescriptif = Replace(TDescriptif, c, "")
Next
End Sub
Private Sub BAnnuler_Click()
Unload Me
End Sub
Private Sub BOK_Click()
ControleSaisie
If Resultat Then
Me.Hide
ReportDonnees
Unload Me
End If
End Sub
Private Sub ControleSaisie()
Resultat = Controle(TDate = "", "la date de livraison.", TDate)
' La fonction EstDate, différente de IsDate, est dans le module
MOutils
If Resultat Then Resultat = Controle(Not EstDate(TDate), , _
TDate, "La date indiquée est incorrecte. Elle doit être au format " &
"""" & "jj/mm/aa.""", True)
If Resultat Then Resultat = Controle(TDescriptif = "", "le
descriptif.")
End Sub
Private Sub ReportDonnees()
' Ton code
End Subbonjour,
j'ai deux probleme lié à la saisie d'une TextBox
1er probleme :
Actuellement en utilisant KeyPress, j'interdis la saisie de certains
caractères (ex :"?") et je transforme la saisie de minuscule en
majuscule.
=> le probleme est que si je fais un copier/coller, je peux passer à
travers le controle comment faire pour que lorsque je fais un coller dans
ma TextBox, les miniscules soient transformées en majuscule et que s'il y
a un caratère interdis, le copier ne s'execute pas et une message
d'erreur apparait ?
2eme probleme :
dans une textbox, je voudrais rentrer que des date au format 30/05/1980 :
comment faire (j'ai fais un controle en n'autorisant que le caractère "/"
ou les chiffre mais rien ne m'empeche actuellement de saisire
303020/05405/ ?
Excuse moi, je n'ai pas completement lu ton message tout à l'heure (j'ai
honte, j'avais pas vu le fichier joint), tu m'as bien donné la solution
pour la première question
par contre quand je rentre comme date 45/12/05, je n'ai pas d'erreur mais
ça c'est facile à modifier
=> ce que je trouve dommage avec cette fonction c'est qu'elle n'est active
que lorsqu'on clic sur le bouton OK ... mais je ne vois pas comment on
purrait faire autrement...
"Michel Gaboly" <michel.gaboly@wanadoo.fr> a écrit dans le message de
news: OEy$XJjBGHA.1288@TK2MSFTNGP09.phx.gbl...
Re,
Tu pourrais au moins dire si tu as regardé le fichier exemple que j'ai mis
sur CJoint, ou si tu t'es contenté de
parcourir ma réponse.
Par ailleurs pour avoir un contrôle lors de la saisie, tu associes le
contrôle de la date à l'événement BeforeUpdate du
TextBox par exemple, en ajoutant
If Not Resultat then Cancel = True.
A part cela, que penses-tu de cette fonction Controle ?
Elle permet de faire face à peu près à n'importe quelle contrainte à
respecter, pour peu qu'on sache l'exprimer sous
forme d'une expression dont le résultat est un booléen.
le probleme est que j'aurais voulu un controle lors de la saisie et non
pas après...
"Michel Gaboly" <michel.gaboly@wanadoo.fr> a écrit dans le message de
news: uDdrxyhBGHA.1288@TK2MSFTNGP09.phx.gbl...
Salut Emcy,
Utilise mon outil de contrôle de saisie, la fonction Controle
Présentation :
http://www.gaboly.com/VBA/FonctionControle.html
Code commenté :
http://www.gaboly.com/VBA/CodeCompletControle.html
Pour le premier problème, utilise une succession de Replace Excel 2000 ou
postérieur Win ou Substitute (Excel 97 ou
Excel Mac), pour éliminer les éventuels caractères interdits.
Voici un exemple de code (j'ai mis mon fichier test ici :
http://cjoint.com/?mvlWoYTsfG
Private Sub UserForm_Initialize()
' Détermine la plage qui liste les caractères à remplacer.
With Range("RéfCarInterdits")
Set Ref = Range(.Offset(1),
.Offset(.CurrentRegion.Rows.Count - 1))
End With
End Sub
Private Sub TDescriptif_Change()
Dim c As Range
For Each c In Ref
TDescriptif = Replace(TDescriptif, c, "")
Next
End Sub
Private Sub BAnnuler_Click()
Unload Me
End Sub
Private Sub BOK_Click()
ControleSaisie
If Resultat Then
Me.Hide
ReportDonnees
Unload Me
End If
End Sub
Private Sub ControleSaisie()
Resultat = Controle(TDate = "", "la date de livraison.", TDate)
' La fonction EstDate, différente de IsDate, est dans le module
MOutils
If Resultat Then Resultat = Controle(Not EstDate(TDate), , _
TDate, "La date indiquée est incorrecte. Elle doit être au format " &
"""" & "jj/mm/aa.""", True)
If Resultat Then Resultat = Controle(TDescriptif = "", "le
descriptif.")
End Sub
Private Sub ReportDonnees()
' Ton code
End Sub
bonjour,
j'ai deux probleme lié à la saisie d'une TextBox
1er probleme :
Actuellement en utilisant KeyPress, j'interdis la saisie de certains
caractères (ex :"?") et je transforme la saisie de minuscule en
majuscule.
=> le probleme est que si je fais un copier/coller, je peux passer à
travers le controle comment faire pour que lorsque je fais un coller dans
ma TextBox, les miniscules soient transformées en majuscule et que s'il y
a un caratère interdis, le copier ne s'execute pas et une message
d'erreur apparait ?
2eme probleme :
dans une textbox, je voudrais rentrer que des date au format 30/05/1980 :
comment faire (j'ai fais un controle en n'autorisant que le caractère "/"
ou les chiffre mais rien ne m'empeche actuellement de saisire
303020/05405/ ?
Excuse moi, je n'ai pas completement lu ton message tout à l'heure (j'ai
honte, j'avais pas vu le fichier joint), tu m'as bien donné la solution
pour la première question
par contre quand je rentre comme date 45/12/05, je n'ai pas d'erreur mais
ça c'est facile à modifier
=> ce que je trouve dommage avec cette fonction c'est qu'elle n'est active
que lorsqu'on clic sur le bouton OK ... mais je ne vois pas comment on
purrait faire autrement...
"Michel Gaboly" a écrit dans le message de
news: OEy$
Re,
Tu pourrais au moins dire si tu as regardé le fichier exemple que j'ai mis
sur CJoint, ou si tu t'es contenté de
parcourir ma réponse.
Par ailleurs pour avoir un contrôle lors de la saisie, tu associes le
contrôle de la date à l'événement BeforeUpdate du
TextBox par exemple, en ajoutant
If Not Resultat then Cancel = True.
A part cela, que penses-tu de cette fonction Controle ?
Elle permet de faire face à peu près à n'importe quelle contrainte à
respecter, pour peu qu'on sache l'exprimer sous
forme d'une expression dont le résultat est un booléen.le probleme est que j'aurais voulu un controle lors de la saisie et non
pas après...
"Michel Gaboly" a écrit dans le message de
news:
Salut Emcy,
Utilise mon outil de contrôle de saisie, la fonction Controle
Présentation :
http://www.gaboly.com/VBA/FonctionControle.html
Code commenté :
http://www.gaboly.com/VBA/CodeCompletControle.html
Pour le premier problème, utilise une succession de Replace Excel 2000 ou
postérieur Win ou Substitute (Excel 97 ou
Excel Mac), pour éliminer les éventuels caractères interdits.
Voici un exemple de code (j'ai mis mon fichier test ici :
http://cjoint.com/?mvlWoYTsfG
Private Sub UserForm_Initialize()
' Détermine la plage qui liste les caractères à remplacer.
With Range("RéfCarInterdits")
Set Ref = Range(.Offset(1),
.Offset(.CurrentRegion.Rows.Count - 1))
End With
End Sub
Private Sub TDescriptif_Change()
Dim c As Range
For Each c In Ref
TDescriptif = Replace(TDescriptif, c, "")
Next
End Sub
Private Sub BAnnuler_Click()
Unload Me
End Sub
Private Sub BOK_Click()
ControleSaisie
If Resultat Then
Me.Hide
ReportDonnees
Unload Me
End If
End Sub
Private Sub ControleSaisie()
Resultat = Controle(TDate = "", "la date de livraison.", TDate)
' La fonction EstDate, différente de IsDate, est dans le module
MOutils
If Resultat Then Resultat = Controle(Not EstDate(TDate), , _
TDate, "La date indiquée est incorrecte. Elle doit être au format " &
"""" & "jj/mm/aa.""", True)
If Resultat Then Resultat = Controle(TDescriptif = "", "le
descriptif.")
End Sub
Private Sub ReportDonnees()
' Ton code
End Subbonjour,
j'ai deux probleme lié à la saisie d'une TextBox
1er probleme :
Actuellement en utilisant KeyPress, j'interdis la saisie de certains
caractères (ex :"?") et je transforme la saisie de minuscule en
majuscule.
=> le probleme est que si je fais un copier/coller, je peux passer à
travers le controle comment faire pour que lorsque je fais un coller dans
ma TextBox, les miniscules soient transformées en majuscule et que s'il y
a un caratère interdis, le copier ne s'execute pas et une message
d'erreur apparait ?
2eme probleme :
dans une textbox, je voudrais rentrer que des date au format 30/05/1980 :
comment faire (j'ai fais un controle en n'autorisant que le caractère "/"
ou les chiffre mais rien ne m'empeche actuellement de saisire
303020/05405/ ?
pour interdir l'utilisation de certains caratères, je crois que j'ai
trouvé une meilleur solution en utilisant les modules de classe
=> le probleme avec ta solution est que tu ne peux pas insérer facilement
des caractères en milieu de chaine car à chaque fois qu'on insere un
caratère interdis, le curseur est mis en fin de chaine.
qu'en penses-tu ?
classeur : http://cjoint.com/?mvrBOyzdQK
Option Explicit
' Met en Majuscule et interdis les caractères $, ?, ( et )
Public WithEvents MaTextBox As MSForms.TextBox
Private ActivationColler As Boolean
Private PressePapierOld As String
Private Sub MaTextBox_BeforeDropOrPaste(ByVal Cancel As
MSForms.ReturnBoolean, ByVal Action As MSForms.fmAction, ByVal Data As
MSForms.DataObject, ByVal X As Single, ByVal Y As Single, ByVal Effect As
MSForms.ReturnEffect, ByVal Shift As Integer)
' gestion du copier/coller
Dim MaChaineTemp As String
PressePapierOld = Data.GetText
MaChaineTemp = PressePapierOld
MaChaineTemp = UCase(MaChaineTemp)
MaChaineTemp = Replace(MaChaineTemp, "$", "")
MaChaineTemp = Replace(MaChaineTemp, "?", "")
MaChaineTemp = Replace(MaChaineTemp, "(", "")
MaChaineTemp = Replace(MaChaineTemp, ")", "")
Data.Clear
Data.SetText MaChaineTemp
Data.PutInClipboard
ActivationColler = True
End Sub
Private Sub MaTextBox_Change()
Dim objPressePapier As New DataObject
If ActivationColler = True Then
objPressePapier.SetText PressePapierOld
objPressePapier.PutInClipboard
ActivationColler = False
End If
End Sub
Private Sub MaTextBox_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
' controle la saise des caratères
KeyAscii = Asc(UCase(Chr(KeyAscii))) 'on transforme en majuscule
Select Case KeyAscii
Case Asc("$")
KeyAscii = 8 'efface si caractère "$"
Case Asc("?")
KeyAscii = 8 'efface si caractère "?"
Case Asc("(")
KeyAscii = 8 'efface si caractère "("
Case Asc(")")
KeyAscii = 8 'efface si caractère ")"
End Select
End Sub
"Michel Gaboly" a écrit dans le message de
news:
Le principal, c'est que tu aies trouvé le fichier joint ;-))
J'ai passé un certain temps à le concocter, et je trouvais un peu
surprenant que tu ne l'évoques même pas. Si tu n'avais
pas remarqué son existence, je comprends mieux. :-))
PS - pour Excel, 45/12/05, c'est le 45ème jour de décembre 2005, soit le
14/01/06 ;-))Excuse moi, je n'ai pas completement lu ton message tout à l'heure (j'ai
honte, j'avais pas vu le fichier joint), tu m'as bien donné la solution
pour la première question
par contre quand je rentre comme date 45/12/05, je n'ai pas d'erreur mais
ça c'est facile à modifier
=> ce que je trouve dommage avec cette fonction c'est qu'elle n'est
active que lorsqu'on clic sur le bouton OK ... mais je ne vois pas
comment on purrait faire autrement...
"Michel Gaboly" a écrit dans le message de
news: OEy$
Re,
Tu pourrais au moins dire si tu as regardé le fichier exemple que j'ai
mis sur CJoint, ou si tu t'es contenté de
parcourir ma réponse.
Par ailleurs pour avoir un contrôle lors de la saisie, tu associes le
contrôle de la date à l'événement BeforeUpdate du
TextBox par exemple, en ajoutant
If Not Resultat then Cancel = True.
A part cela, que penses-tu de cette fonction Controle ?
Elle permet de faire face à peu près à n'importe quelle contrainte à
respecter, pour peu qu'on sache l'exprimer sous
forme d'une expression dont le résultat est un booléen.le probleme est que j'aurais voulu un controle lors de la saisie et non
pas après...
"Michel Gaboly" a écrit dans le message de
news:
Salut Emcy,
Utilise mon outil de contrôle de saisie, la fonction Controle
Présentation :
http://www.gaboly.com/VBA/FonctionControle.html
Code commenté :
http://www.gaboly.com/VBA/CodeCompletControle.html
Pour le premier problème, utilise une succession de Replace Excel 2000 ou
postérieur Win ou Substitute (Excel 97 ou
Excel Mac), pour éliminer les éventuels caractères interdits.
Voici un exemple de code (j'ai mis mon fichier test ici :
http://cjoint.com/?mvlWoYTsfG
Private Sub UserForm_Initialize()
' Détermine la plage qui liste les caractères à remplacer.
With Range("RéfCarInterdits")
Set Ref = Range(.Offset(1),
.Offset(.CurrentRegion.Rows.Count - 1))
End With
End Sub
Private Sub TDescriptif_Change()
Dim c As Range
For Each c In Ref
TDescriptif = Replace(TDescriptif, c, "")
Next
End Sub
Private Sub BAnnuler_Click()
Unload Me
End Sub
Private Sub BOK_Click()
ControleSaisie
If Resultat Then
Me.Hide
ReportDonnees
Unload Me
End If
End Sub
Private Sub ControleSaisie()
Resultat = Controle(TDate = "", "la date de livraison.", TDate)
' La fonction EstDate, différente de IsDate, est dans le module
MOutils
If Resultat Then Resultat = Controle(Not EstDate(TDate), , _
TDate, "La date indiquée est incorrecte. Elle doit être au format "
& """" & "jj/mm/aa.""", True)
If Resultat Then Resultat = Controle(TDescriptif = "", "le
descriptif.")
End Sub
Private Sub ReportDonnees()
' Ton code
End Subbonjour,
j'ai deux probleme lié à la saisie d'une TextBox
1er probleme :
Actuellement en utilisant KeyPress, j'interdis la saisie de certains
caractères (ex :"?") et je transforme la saisie de minuscule en
majuscule.
=> le probleme est que si je fais un copier/coller, je peux passer à
travers le controle comment faire pour que lorsque je fais un coller
dans ma TextBox, les miniscules soient transformées en majuscule et que
s'il y a un caratère interdis, le copier ne s'execute pas et une message
d'erreur apparait ?
2eme probleme :
dans une textbox, je voudrais rentrer que des date au format 30/05/1980
: comment faire (j'ai fais un controle en n'autorisant que le caractère
"/" ou les chiffre mais rien ne m'empeche actuellement de saisire
303020/05405/ ?
--
Cordialement,
Michel Gaboly
www.gaboly.com
pour interdir l'utilisation de certains caratères, je crois que j'ai
trouvé une meilleur solution en utilisant les modules de classe
=> le probleme avec ta solution est que tu ne peux pas insérer facilement
des caractères en milieu de chaine car à chaque fois qu'on insere un
caratère interdis, le curseur est mis en fin de chaine.
qu'en penses-tu ?
classeur : http://cjoint.com/?mvrBOyzdQK
Option Explicit
' Met en Majuscule et interdis les caractères $, ?, ( et )
Public WithEvents MaTextBox As MSForms.TextBox
Private ActivationColler As Boolean
Private PressePapierOld As String
Private Sub MaTextBox_BeforeDropOrPaste(ByVal Cancel As
MSForms.ReturnBoolean, ByVal Action As MSForms.fmAction, ByVal Data As
MSForms.DataObject, ByVal X As Single, ByVal Y As Single, ByVal Effect As
MSForms.ReturnEffect, ByVal Shift As Integer)
' gestion du copier/coller
Dim MaChaineTemp As String
PressePapierOld = Data.GetText
MaChaineTemp = PressePapierOld
MaChaineTemp = UCase(MaChaineTemp)
MaChaineTemp = Replace(MaChaineTemp, "$", "")
MaChaineTemp = Replace(MaChaineTemp, "?", "")
MaChaineTemp = Replace(MaChaineTemp, "(", "")
MaChaineTemp = Replace(MaChaineTemp, ")", "")
Data.Clear
Data.SetText MaChaineTemp
Data.PutInClipboard
ActivationColler = True
End Sub
Private Sub MaTextBox_Change()
Dim objPressePapier As New DataObject
If ActivationColler = True Then
objPressePapier.SetText PressePapierOld
objPressePapier.PutInClipboard
ActivationColler = False
End If
End Sub
Private Sub MaTextBox_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
' controle la saise des caratères
KeyAscii = Asc(UCase(Chr(KeyAscii))) 'on transforme en majuscule
Select Case KeyAscii
Case Asc("$")
KeyAscii = 8 'efface si caractère "$"
Case Asc("?")
KeyAscii = 8 'efface si caractère "?"
Case Asc("(")
KeyAscii = 8 'efface si caractère "("
Case Asc(")")
KeyAscii = 8 'efface si caractère ")"
End Select
End Sub
"Michel Gaboly" <michel.gaboly@wanadoo.fr> a écrit dans le message de
news: eGknk9jBGHA.2704@TK2MSFTNGP15.phx.gbl...
Le principal, c'est que tu aies trouvé le fichier joint ;-))
J'ai passé un certain temps à le concocter, et je trouvais un peu
surprenant que tu ne l'évoques même pas. Si tu n'avais
pas remarqué son existence, je comprends mieux. :-))
PS - pour Excel, 45/12/05, c'est le 45ème jour de décembre 2005, soit le
14/01/06 ;-))
Excuse moi, je n'ai pas completement lu ton message tout à l'heure (j'ai
honte, j'avais pas vu le fichier joint), tu m'as bien donné la solution
pour la première question
par contre quand je rentre comme date 45/12/05, je n'ai pas d'erreur mais
ça c'est facile à modifier
=> ce que je trouve dommage avec cette fonction c'est qu'elle n'est
active que lorsqu'on clic sur le bouton OK ... mais je ne vois pas
comment on purrait faire autrement...
"Michel Gaboly" <michel.gaboly@wanadoo.fr> a écrit dans le message de
news: OEy$XJjBGHA.1288@TK2MSFTNGP09.phx.gbl...
Re,
Tu pourrais au moins dire si tu as regardé le fichier exemple que j'ai
mis sur CJoint, ou si tu t'es contenté de
parcourir ma réponse.
Par ailleurs pour avoir un contrôle lors de la saisie, tu associes le
contrôle de la date à l'événement BeforeUpdate du
TextBox par exemple, en ajoutant
If Not Resultat then Cancel = True.
A part cela, que penses-tu de cette fonction Controle ?
Elle permet de faire face à peu près à n'importe quelle contrainte à
respecter, pour peu qu'on sache l'exprimer sous
forme d'une expression dont le résultat est un booléen.
le probleme est que j'aurais voulu un controle lors de la saisie et non
pas après...
"Michel Gaboly" <michel.gaboly@wanadoo.fr> a écrit dans le message de
news: uDdrxyhBGHA.1288@TK2MSFTNGP09.phx.gbl...
Salut Emcy,
Utilise mon outil de contrôle de saisie, la fonction Controle
Présentation :
http://www.gaboly.com/VBA/FonctionControle.html
Code commenté :
http://www.gaboly.com/VBA/CodeCompletControle.html
Pour le premier problème, utilise une succession de Replace Excel 2000 ou
postérieur Win ou Substitute (Excel 97 ou
Excel Mac), pour éliminer les éventuels caractères interdits.
Voici un exemple de code (j'ai mis mon fichier test ici :
http://cjoint.com/?mvlWoYTsfG
Private Sub UserForm_Initialize()
' Détermine la plage qui liste les caractères à remplacer.
With Range("RéfCarInterdits")
Set Ref = Range(.Offset(1),
.Offset(.CurrentRegion.Rows.Count - 1))
End With
End Sub
Private Sub TDescriptif_Change()
Dim c As Range
For Each c In Ref
TDescriptif = Replace(TDescriptif, c, "")
Next
End Sub
Private Sub BAnnuler_Click()
Unload Me
End Sub
Private Sub BOK_Click()
ControleSaisie
If Resultat Then
Me.Hide
ReportDonnees
Unload Me
End If
End Sub
Private Sub ControleSaisie()
Resultat = Controle(TDate = "", "la date de livraison.", TDate)
' La fonction EstDate, différente de IsDate, est dans le module
MOutils
If Resultat Then Resultat = Controle(Not EstDate(TDate), , _
TDate, "La date indiquée est incorrecte. Elle doit être au format "
& """" & "jj/mm/aa.""", True)
If Resultat Then Resultat = Controle(TDescriptif = "", "le
descriptif.")
End Sub
Private Sub ReportDonnees()
' Ton code
End Sub
bonjour,
j'ai deux probleme lié à la saisie d'une TextBox
1er probleme :
Actuellement en utilisant KeyPress, j'interdis la saisie de certains
caractères (ex :"?") et je transforme la saisie de minuscule en
majuscule.
=> le probleme est que si je fais un copier/coller, je peux passer à
travers le controle comment faire pour que lorsque je fais un coller
dans ma TextBox, les miniscules soient transformées en majuscule et que
s'il y a un caratère interdis, le copier ne s'execute pas et une message
d'erreur apparait ?
2eme probleme :
dans une textbox, je voudrais rentrer que des date au format 30/05/1980
: comment faire (j'ai fais un controle en n'autorisant que le caractère
"/" ou les chiffre mais rien ne m'empeche actuellement de saisire
303020/05405/ ?
--
Cordialement,
Michel Gaboly
www.gaboly.com
pour interdir l'utilisation de certains caratères, je crois que j'ai
trouvé une meilleur solution en utilisant les modules de classe
=> le probleme avec ta solution est que tu ne peux pas insérer facilement
des caractères en milieu de chaine car à chaque fois qu'on insere un
caratère interdis, le curseur est mis en fin de chaine.
qu'en penses-tu ?
classeur : http://cjoint.com/?mvrBOyzdQK
Option Explicit
' Met en Majuscule et interdis les caractères $, ?, ( et )
Public WithEvents MaTextBox As MSForms.TextBox
Private ActivationColler As Boolean
Private PressePapierOld As String
Private Sub MaTextBox_BeforeDropOrPaste(ByVal Cancel As
MSForms.ReturnBoolean, ByVal Action As MSForms.fmAction, ByVal Data As
MSForms.DataObject, ByVal X As Single, ByVal Y As Single, ByVal Effect As
MSForms.ReturnEffect, ByVal Shift As Integer)
' gestion du copier/coller
Dim MaChaineTemp As String
PressePapierOld = Data.GetText
MaChaineTemp = PressePapierOld
MaChaineTemp = UCase(MaChaineTemp)
MaChaineTemp = Replace(MaChaineTemp, "$", "")
MaChaineTemp = Replace(MaChaineTemp, "?", "")
MaChaineTemp = Replace(MaChaineTemp, "(", "")
MaChaineTemp = Replace(MaChaineTemp, ")", "")
Data.Clear
Data.SetText MaChaineTemp
Data.PutInClipboard
ActivationColler = True
End Sub
Private Sub MaTextBox_Change()
Dim objPressePapier As New DataObject
If ActivationColler = True Then
objPressePapier.SetText PressePapierOld
objPressePapier.PutInClipboard
ActivationColler = False
End If
End Sub
Private Sub MaTextBox_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger)
' controle la saise des caratères
KeyAscii = Asc(UCase(Chr(KeyAscii))) 'on transforme en majuscule
Select Case KeyAscii
Case Asc("$")
KeyAscii = 8 'efface si caractère "$"
Case Asc("?")
KeyAscii = 8 'efface si caractère "?"
Case Asc("(")
KeyAscii = 8 'efface si caractère "("
Case Asc(")")
KeyAscii = 8 'efface si caractère ")"
End Select
End Sub
"Michel Gaboly" a écrit dans le message de
news:
Le principal, c'est que tu aies trouvé le fichier joint ;-))
J'ai passé un certain temps à le concocter, et je trouvais un peu
surprenant que tu ne l'évoques même pas. Si tu n'avais
pas remarqué son existence, je comprends mieux. :-))
PS - pour Excel, 45/12/05, c'est le 45ème jour de décembre 2005, soit le
14/01/06 ;-))Excuse moi, je n'ai pas completement lu ton message tout à l'heure (j'ai
honte, j'avais pas vu le fichier joint), tu m'as bien donné la solution
pour la première question
par contre quand je rentre comme date 45/12/05, je n'ai pas d'erreur mais
ça c'est facile à modifier
=> ce que je trouve dommage avec cette fonction c'est qu'elle n'est
active que lorsqu'on clic sur le bouton OK ... mais je ne vois pas
comment on purrait faire autrement...
"Michel Gaboly" a écrit dans le message de
news: OEy$
Re,
Tu pourrais au moins dire si tu as regardé le fichier exemple que j'ai
mis sur CJoint, ou si tu t'es contenté de
parcourir ma réponse.
Par ailleurs pour avoir un contrôle lors de la saisie, tu associes le
contrôle de la date à l'événement BeforeUpdate du
TextBox par exemple, en ajoutant
If Not Resultat then Cancel = True.
A part cela, que penses-tu de cette fonction Controle ?
Elle permet de faire face à peu près à n'importe quelle contrainte à
respecter, pour peu qu'on sache l'exprimer sous
forme d'une expression dont le résultat est un booléen.le probleme est que j'aurais voulu un controle lors de la saisie et non
pas après...
"Michel Gaboly" a écrit dans le message de
news:
Salut Emcy,
Utilise mon outil de contrôle de saisie, la fonction Controle
Présentation :
http://www.gaboly.com/VBA/FonctionControle.html
Code commenté :
http://www.gaboly.com/VBA/CodeCompletControle.html
Pour le premier problème, utilise une succession de Replace Excel 2000 ou
postérieur Win ou Substitute (Excel 97 ou
Excel Mac), pour éliminer les éventuels caractères interdits.
Voici un exemple de code (j'ai mis mon fichier test ici :
http://cjoint.com/?mvlWoYTsfG
Private Sub UserForm_Initialize()
' Détermine la plage qui liste les caractères à remplacer.
With Range("RéfCarInterdits")
Set Ref = Range(.Offset(1),
.Offset(.CurrentRegion.Rows.Count - 1))
End With
End Sub
Private Sub TDescriptif_Change()
Dim c As Range
For Each c In Ref
TDescriptif = Replace(TDescriptif, c, "")
Next
End Sub
Private Sub BAnnuler_Click()
Unload Me
End Sub
Private Sub BOK_Click()
ControleSaisie
If Resultat Then
Me.Hide
ReportDonnees
Unload Me
End If
End Sub
Private Sub ControleSaisie()
Resultat = Controle(TDate = "", "la date de livraison.", TDate)
' La fonction EstDate, différente de IsDate, est dans le module
MOutils
If Resultat Then Resultat = Controle(Not EstDate(TDate), , _
TDate, "La date indiquée est incorrecte. Elle doit être au format "
& """" & "jj/mm/aa.""", True)
If Resultat Then Resultat = Controle(TDescriptif = "", "le
descriptif.")
End Sub
Private Sub ReportDonnees()
' Ton code
End Subbonjour,
j'ai deux probleme lié à la saisie d'une TextBox
1er probleme :
Actuellement en utilisant KeyPress, j'interdis la saisie de certains
caractères (ex :"?") et je transforme la saisie de minuscule en
majuscule.
=> le probleme est que si je fais un copier/coller, je peux passer à
travers le controle comment faire pour que lorsque je fais un coller
dans ma TextBox, les miniscules soient transformées en majuscule et que
s'il y a un caratère interdis, le copier ne s'execute pas et une message
d'erreur apparait ?
2eme probleme :
dans une textbox, je voudrais rentrer que des date au format 30/05/1980
: comment faire (j'ai fais un controle en n'autorisant que le caractère
"/" ou les chiffre mais rien ne m'empeche actuellement de saisire
303020/05405/ ?
--
Cordialement,
Michel Gaboly
www.gaboly.com