SAISIES CONTROLÉES DIVERSES (ALPHABÉTIQUES ET NUMÉRIQUES)
cs_Exploreur
Messages postés4821Date d'inscriptionlundi 11 novembre 2002StatutMembreDernière intervention15 novembre 2016
-
28 avril 2007 à 19:12
mannou1983
Messages postés7Date d'inscriptionmercredi 19 mars 2008StatutMembreDernière intervention 7 mai 2008
-
10 avril 2008 à 14:44
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Bonjour à tous,
Merci pour cette conversation.
Je suis aussi interressé par la saisie controlée, mais en vb 2005.
Si vous avez des pistes pour trouver sur ce site, merci pour votre aide. Je vais tenter de m'inspirer de cette source. Qui sait j'y arriverais peut-être ? Encore Merci.
JM
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 29 avril 2007 à 10:56
Et j'ai oublié !...
Si la machine cliente est paramétrée à la française, regarde :
Pour faire ton test de cohérence pour les copier-coller, il te faudra donc forcer la saisie avec la virgule comme séparateur décimal, ou alors ... écrire également dans ton Change ce que j'ai écrit dans le seul événement change !
Tu te rends mieux compte, maintenant ?
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 29 avril 2007 à 09:06
Bonjour Nicolas,
Bien sur que c'est simple avec le Keypress (nous l'avons tous fait de diverses manières)..
Le seul problème est toutefois celui que je t'ai signalé : pour se protéger des copier-coller indus (en perdant quand-même la possibilité d'utiliser - dans les 2 sens - le copier-coller que l'on voudrait faire)...
Il te faudra donc utiliser plusieurs événements, dont le Change (alors pourquoi ne pas l'utiliser d'emblée ? juste pour éviter l'apparition fugace d'un caractère avant son refus ?)
Et dans le Change, alors : il va bien te falloir faire une analyse de cohérence, si tu veux conserver le copier-coller ... et elle sera forcément différente de ce qu'elle est au keypress qui, lui, ne traite qu'u moment de la frappe.
L'avantage du seul événement Change est que le développeur (ayant tout mis dans un module) n'a pas à se soucier du reste et que sa syntaxe est alors simple et en 1 seul endroit.
Son inconvénient : apparition fugace lors d'une saisie erronée (ce qui devrait de surcroît par essence être rare) est vraiment insignifiant au regard du reste.
En résumé : si j'ai écrit celà, c'est précisément parce que j'ai bien vu (et ai payé pour) à quoi pouvaient conduire les autres méthodes : soit un "éclatement" des instructions liées au contrôle de saisie en plusieurs endroits du code, soit une privation, soit enfin un risque courru, selon les cas de figure.
Si, enfin, tu dois "paramétrer" la saisie, le code de l'événement Keypress se transforme alors en une véritable usine à gaz, à moins que tu n'en définisse un chaque fois, en fonction du contrôle à faire.
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 29 avril 2007 à 07:07
désolé jacques de faire du hors sujet :
Diablamanshadow : si lorsque tu poste une source, y'a des membres qui t'insulte, parle-en à un admin, on fera le nécessaire pour calmer les choses !
>> jacques : je n'ai jamais dit de tout gérer dans le keypress, j'ai suggéré de gérer dans le keypress ET dans le change : dans le keypress pour limiter la saisie des utilisateurs à la volée (c'est très simple à faire), ET dans le change (ou le validate sinon) pour les cas particuliers (copier-coller par exemple).
diablamanshadow
Messages postés419Date d'inscriptionlundi 30 août 2004StatutMembreDernière intervention28 janvier 2008 28 avril 2007 à 22:53
ne t'inquiete pas je l'ai deja fait, pas un seul evennement certe mais comme dit dans mon com ci dessus je parle de plusieurs evennement dont le keypress :-)
sinon je ne depose plus de sources sur vbf au vu que a chaque fois que j'en pose on m'insulte etc puis comme je repond pas le mec prend rage et ses moi qui fini ban donc depuis je ne fais plus que lire, repondre de temp en temp et telecharger ^^
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 28 avril 2007 à 21:12
Salut Diablamanshadow...
Bien ! Ecris donc celà, pour voir... et on en discute ensuite si tu y parviens avec un seul événement... (si tu y parviens, bien sur)...
diablamanshadow
Messages postés419Date d'inscriptionlundi 30 août 2004StatutMembreDernière intervention28 janvier 2008 28 avril 2007 à 21:08
et si a la place de tenter de tout gerer (si on passe par keypress) tu passe pas comme a dit darksidous par le keypress puis apres pour ton copier coller bah tu verifie avec le change le contenu du clipboard ...
si le clipboard est different de ce qui peut etre entrer bah tu le vide pas tu l'annul ...
perso j'ai pas looker le code car ses assez simple a faire mais bon c'est vrai que ses souvent demander sur le forum ou meme moi par mes contact msn ^^
jmfmarques
Messages postés7666Date d'inscriptionsamedi 5 novembre 2005StatutMembreDernière intervention22 août 201427 28 avril 2007 à 19:45
Oui, Nicolas, l'événement keypress n'est pas mal et est plus facile à programmer, mais....
Il te fayt alors également gérer (dans le click), l'impossibilité de copieés/collés !
De surcroit : OK, on gère le presse-papier (on le vide au click) mais en faisant ainsi tu ne peux plus, du coup, faire un copier-coller cohérent et voulu !
Mais pire encore : OK pour vider le presse-papier au click, mais voilà :
1) je frappe 1234,12
2) je clique et sélectionne
3) je relache la souris et y vais : CTRL-C ==>> 4 ou 5 fois CTRL-V ==>> vois le résultat
Ah zut, alors ! il va falloir gérer celà aussi ...
Allons bon ! Mais c'est faisable en effaçant aussi le clipboard et (également) en désélectionnant par sellenght au MouseUp !
Alors :
- 1e keypress pour gérer la frappe
- le click pour vider le clipboard de ce qui aurait été copié d'ailleurs
- le mouseup pour déselectionner de qui aurait été sélectionné dans la textbox même et vider aussi le clipboard...
et tu perds de toutes façon :
1) la possibilité de copier-coller souhaités depuis aolleurs
2) la possibilité de copier ta propre textbox pour coller ailleurs ...
Voilà pourquoi j'ai choisi l'événement change (un seul événement pour tout)
J'ai presque fini en ce qui concerne la saisie contrôlée des dates et heures.... Si j'utilisais pour ces saisies l'événement keypress, ce serait pire encore, sauf à inhiber carrément la souris !!!
cs_DARKSIDIOUS
Messages postés15814Date d'inscriptionjeudi 8 août 2002StatutMembreDernière intervention 4 mars 2013130 28 avril 2007 à 19:20
Hum, pourquoi faire le contrôle uniquement dans le change ? Dans le KeyPress, c'est plus esthétique : on ne voit pas les caractères si tu les annule lors de la saisie de l'utilisateur.
DarK Sidious
chaibat05
Messages postés1883Date d'inscriptionsamedi 1 avril 2006StatutMembreDernière intervention20 novembre 20072 28 avril 2007 à 19:18
Salut Marques,
Ah l' événement Change () et le chien qui se mord la queue !
Personne ne me croit ...
Prenons
Private Sub Text1_Change()
Static stat1 As String
controle_texte "#", ActiveControl, stat1 ' > faisant un point d' arrêt à ce niveau
End Sub
Avec un chiffre pas de problème
Mais si on tappe "a"
> Execution de la fonction control
tout se passe bien jusqu' à
ctrl.Text mret > Déclenchement de Text1_Change()
et rééxécution de la fonction controle...
End Sub
Ma parade :
Public SelfChange As Boolean
Private Sub Text1_Change()
If SelfChange=True Then Exit Sub
SelfChange=True
Static stat1 As String
controle_texte "#", ActiveControl, stat1 ' > faisant un point d' arrêt à ce niveau
SelfChange=False
End Sub
A part ça je n' ai pas encore fait de tests approffondis.Mais à premier vue ça semble correct.
En fait j' ai tellement horreur de l' événement Change que je n' ai pas pu m' empêcher
de le tester en premier.
A+
cs_Exploreur
Messages postés4821Date d'inscriptionlundi 11 novembre 2002StatutMembreDernière intervention15 novembre 201615 28 avril 2007 à 19:12
Salut Jmfmarques,
Bon ce soir ou demain je regarde ta source et reviens plus tard....
Note : Maintenant on pourra mettre ce lien à des questions du forum portant sur ce sujet...lol..
10 avril 2008 à 14:44
6 nov. 2007 à 11:12
Ce sujet est récurant et semble sans fin ayant posté moi-même une demande d'aide! donc finalement pas si trivial.
Je trouve cette source trés intéressante qui répond trés bien à mon souci donc merci!! donc un gros 10 pour moi!
A+
29 avril 2007 à 15:08
Merci pour cette conversation.
Je suis aussi interressé par la saisie controlée, mais en vb 2005.
Si vous avez des pistes pour trouver sur ce site, merci pour votre aide. Je vais tenter de m'inspirer de cette source. Qui sait j'y arriverais peut-être ? Encore Merci.
JM
29 avril 2007 à 10:56
Si la machine cliente est paramétrée à la française, regarde :
MsgBox IIf(IsNumeric("123.70"), "numérique", "pas numérique")
Pour faire ton test de cohérence pour les copier-coller, il te faudra donc forcer la saisie avec la virgule comme séparateur décimal, ou alors ... écrire également dans ton Change ce que j'ai écrit dans le seul événement change !
Tu te rends mieux compte, maintenant ?
29 avril 2007 à 09:06
Bien sur que c'est simple avec le Keypress (nous l'avons tous fait de diverses manières)..
Le seul problème est toutefois celui que je t'ai signalé : pour se protéger des copier-coller indus (en perdant quand-même la possibilité d'utiliser - dans les 2 sens - le copier-coller que l'on voudrait faire)...
Il te faudra donc utiliser plusieurs événements, dont le Change (alors pourquoi ne pas l'utiliser d'emblée ? juste pour éviter l'apparition fugace d'un caractère avant son refus ?)
Et dans le Change, alors : il va bien te falloir faire une analyse de cohérence, si tu veux conserver le copier-coller ... et elle sera forcément différente de ce qu'elle est au keypress qui, lui, ne traite qu'u moment de la frappe.
L'avantage du seul événement Change est que le développeur (ayant tout mis dans un module) n'a pas à se soucier du reste et que sa syntaxe est alors simple et en 1 seul endroit.
Son inconvénient : apparition fugace lors d'une saisie erronée (ce qui devrait de surcroît par essence être rare) est vraiment insignifiant au regard du reste.
En résumé : si j'ai écrit celà, c'est précisément parce que j'ai bien vu (et ai payé pour) à quoi pouvaient conduire les autres méthodes : soit un "éclatement" des instructions liées au contrôle de saisie en plusieurs endroits du code, soit une privation, soit enfin un risque courru, selon les cas de figure.
Si, enfin, tu dois "paramétrer" la saisie, le code de l'événement Keypress se transforme alors en une véritable usine à gaz, à moins que tu n'en définisse un chaque fois, en fonction du contrôle à faire.
29 avril 2007 à 07:07
Diablamanshadow : si lorsque tu poste une source, y'a des membres qui t'insulte, parle-en à un admin, on fera le nécessaire pour calmer les choses !
>> jacques : je n'ai jamais dit de tout gérer dans le keypress, j'ai suggéré de gérer dans le keypress ET dans le change : dans le keypress pour limiter la saisie des utilisateurs à la volée (c'est très simple à faire), ET dans le change (ou le validate sinon) pour les cas particuliers (copier-coller par exemple).
28 avril 2007 à 22:53
sinon je ne depose plus de sources sur vbf au vu que a chaque fois que j'en pose on m'insulte etc puis comme je repond pas le mec prend rage et ses moi qui fini ban donc depuis je ne fais plus que lire, repondre de temp en temp et telecharger ^^
28 avril 2007 à 21:12
Bien ! Ecris donc celà, pour voir... et on en discute ensuite si tu y parviens avec un seul événement... (si tu y parviens, bien sur)...
28 avril 2007 à 21:08
si le clipboard est different de ce qui peut etre entrer bah tu le vide pas tu l'annul ...
perso j'ai pas looker le code car ses assez simple a faire mais bon c'est vrai que ses souvent demander sur le forum ou meme moi par mes contact msn ^^
28 avril 2007 à 19:45
Il te fayt alors également gérer (dans le click), l'impossibilité de copieés/collés !
De surcroit : OK, on gère le presse-papier (on le vide au click) mais en faisant ainsi tu ne peux plus, du coup, faire un copier-coller cohérent et voulu !
Mais pire encore : OK pour vider le presse-papier au click, mais voilà :
1) je frappe 1234,12
2) je clique et sélectionne
3) je relache la souris et y vais : CTRL-C ==>> 4 ou 5 fois CTRL-V ==>> vois le résultat
Ah zut, alors ! il va falloir gérer celà aussi ...
Allons bon ! Mais c'est faisable en effaçant aussi le clipboard et (également) en désélectionnant par sellenght au MouseUp !
Alors :
- 1e keypress pour gérer la frappe
- le click pour vider le clipboard de ce qui aurait été copié d'ailleurs
- le mouseup pour déselectionner de qui aurait été sélectionné dans la textbox même et vider aussi le clipboard...
et tu perds de toutes façon :
1) la possibilité de copier-coller souhaités depuis aolleurs
2) la possibilité de copier ta propre textbox pour coller ailleurs ...
Voilà pourquoi j'ai choisi l'événement change (un seul événement pour tout)
J'ai presque fini en ce qui concerne la saisie contrôlée des dates et heures.... Si j'utilisais pour ces saisies l'événement keypress, ce serait pire encore, sauf à inhiber carrément la souris !!!
28 avril 2007 à 19:20
DarK Sidious
28 avril 2007 à 19:18
Ah l' événement Change () et le chien qui se mord la queue !
Personne ne me croit ...
Prenons
Private Sub Text1_Change()
Static stat1 As String
controle_texte "#", ActiveControl, stat1 ' > faisant un point d' arrêt à ce niveau
End Sub
Avec un chiffre pas de problème
Mais si on tappe "a"
> Execution de la fonction control
tout se passe bien jusqu' à
ctrl.Text mret > Déclenchement de Text1_Change()
et rééxécution de la fonction controle...
End Sub
Ma parade :
Public SelfChange As Boolean
Private Sub Text1_Change()
If SelfChange=True Then Exit Sub
SelfChange=True
Static stat1 As String
controle_texte "#", ActiveControl, stat1 ' > faisant un point d' arrêt à ce niveau
SelfChange=False
End Sub
A part ça je n' ai pas encore fait de tests approffondis.Mais à premier vue ça semble correct.
En fait j' ai tellement horreur de l' événement Change que je n' ai pas pu m' empêcher
de le tester en premier.
A+
28 avril 2007 à 19:12
Bon ce soir ou demain je regarde ta source et reviens plus tard....
Note : Maintenant on pourra mettre ce lien à des questions du forum portant sur ce sujet...lol..
A+
Exploreur