Détection d'une lettre parmi une série de chiffre

Résolu
Signaler
Messages postés
96
Date d'inscription
lundi 20 novembre 2000
Statut
Membre
Dernière intervention
11 juillet 2006
-
Messages postés
228
Date d'inscription
mardi 5 avril 2005
Statut
Membre
Dernière intervention
4 janvier 2008
-
J'ai des textbox dans lesqelles on ne peut rentrer que des chiffres.
il sont comparés à des constantes avec la fonction val.
mais je voudrais détecter si l'utilisateur rentre un truc du style 569yu5 ou 5pifh, bref s'il y a une lettre présente.
Comment faire?
Merci
++
CeNedra

12 réponses

Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
31
permettra de ne rentrer que des chiffres









Option Explicit



Const GWL_STYLE = (-16)

Const ES_NUMBER = &H2000&



Private Declare Function GetWindowLong Lib "user32" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long

Private Declare Function SetWindowLong Lib "user32" Alias
"SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal
dwNewLong As Long) As Long



Private Sub Form_Load()

Dim Style As Long



Style = GetWindowLong(Text1.hwnd, GWL_STYLE)

SetWindowLong Text1.hwnd, GWL_STYLE, Style Or ES_NUMBER



End Sub


Daniel
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 109 internautes nous ont dit merci ce mois-ci

Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
31
non pas avec cette méthode.

il faut faire autre chose





Private Sub Text1_KeyPress(KeyAscii As Integer)



Select Case KeyAscii

Case 8:

Case 45: If InStr(Text1, "-") > 0 Then KeyAscii = 0



If Text1.SelStart <> 0 Then KeyAscii = 0

Case 46: If InStr(Text1, ".") > 0 Then KeyAscii = 0

Case 48 To 57:

Case Else: KeyAscii = 0: Beep

End Select



End Sub


Daniel
3
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 109 internautes nous ont dit merci ce mois-ci

Messages postés
96
Date d'inscription
lundi 20 novembre 2000
Statut
Membre
Dernière intervention
11 juillet 2006

euh, excuse moi mais je ne vois pas trop comment utiliser ça...je l'ai recopié, mais je peux toujours entrer des lettres dans ma texte box...
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
31
normalement ça marche.

on ne doit plus pouvoir rentrer que des chiffres et rien d'autre

est ce que tu as mis le code au bon endroit ?

Daniel
Messages postés
96
Date d'inscription
lundi 20 novembre 2000
Statut
Membre
Dernière intervention
11 juillet 2006

si c'est bon, je te remercie bien
Messages postés
96
Date d'inscription
lundi 20 novembre 2000
Statut
Membre
Dernière intervention
11 juillet 2006

enfin, oui, mais le pb, c'est que je ne peux plus rentrer de"-", même en premier.est il possible de n'autoriser que la touche moins sur la première cas? je dois pouvoir rentrer des nombres négatifs ou à virgule!
Messages postés
96
Date d'inscription
lundi 20 novembre 2000
Statut
Membre
Dernière intervention
11 juillet 2006

merci mille fois!
Messages postés
228
Date d'inscription
mardi 5 avril 2005
Statut
Membre
Dernière intervention
4 janvier 2008
1
>>>Daniel
je trouve que ce que tu as fait avec tes APIs est super mais j'arrive pas à saisir pleinement leur mode de fonctionnement.. à quoi correspondent ces valeurs ?

&H2000& ?
-16 ?

et surtout qu'est-ce que te renvoi ces APIs du coup ?



Deluka.
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
31
c'est seulement des constantes.

chaque fenêtre est lié a un attribut sur 32 bits qui reflète ses propriétés.

il y a le style normal et le style étendu.





tient pourquoi celui ci n'y est pas ?

Const WS-NUMBER = &H2000

peut être parce que c'est pas pour les fenêtres



Const GWL_STYLE = -16

Const WS_OVERLAPPED = &H0& 'titleBAr et X

Const WS_TABSTOP =
&H10000
'la fenetre est réactive au tab

Const WS_MAXIMIZEBOX = &H10000 'symbole 'Maximiser'

Const WS_GROUP =
&H20000
'rassemblage de toutes les fenetres et boutons de commande dans un
groupe

Const WS_MINIMIZEBOX = &H20000 'symbole 'minimiser'

Const WS_SIZEBOX =
&H40000
'la fenetre peut etre redimenssionner

Const WS_THICKFRAME = &H40000

Const WS_SYSMENU =
&H80000
'la fenetre a une barre de titre

Const WS_HSCROLL =
&H100000
'la fenetre a des scrollbars horizontaux

Const WS_VSCROLL =
&H200000
'la fenetre a un scrollbar vertical

Const WS_DLGFRAME =
&H400000
'titleBar et c une boite de dialogue

Const WS_BORDER =
&H800000
'la fenetre a des bordures

Const WS_CAPTION = &HC00000 'la fenetre a un titre

Const WS_MAXIMIZE = &H1000000 'la fenetre est maximisée

Const WS_CLIPCHILDREN = &H2000000 'les fenetres enfants ne regourpent pas la fenetre mère

Const WS_CLIPSIBLINGS = &H4000000 'les fenetres enfants ne regourpent pas la fenetre mère

Const WS_DISABLED = &H8000000 'la fenetre est désactivée

Const WS_OVERLAPPEDWINDOW = &HCF0000 'la fenetre a des clipcontrols (-OX)

Const WS_VISIBLE = &H10000000 'la fenetre est visible

Const WS_MINIMIZE = &H20000000 'la fenetre est réduite

Const WS_CHILD = &H40000000 'la fenetre est une enfant

Const WS_POPUP = &H80000000 'mode popup

Const WS_POPUPWINDOW = &H80880000 'mode popup (toolbox)



Const GWL_EXSTYLE = -20

Const WS_EX_LEFT =
&H0&
'alignement a gauche de la fenetre

Const WS_EX_LTRREADING =
&H0& 'la
lecture du texte se fait de Gauche a droite

Const WS_EX_RIGHTSCROLLBAR = &H0& 'des scrollbars a droite

Const WS_EX_DLGMODALFRAME =
&H1& 'la fenetre a une double
bordure (permet une toolbas)

Const WS_EX_DRAGDETECT = &H2&

Const WS_EX_NOPARENTNOTIFY = &H4&
'n'envoie pas de message à sa parente quand elle est créée ou détruite

Const WS_EX_TOPMOST =
&H8&
'la fenetre est toujorus visible

Const WS_EX_ACCEPTFILES = &H10& 'drag and Drop possible

Const WS_EX_TRANSPARENT = &H20& 'la fenetre est transparente

Const WS_EX_MDICHILD =
&H40& 'la
fenetre est une MDI child window

Const WS_EX_TOOLWINDOW =
&H80& 'c'est une
toolwindow (toolbar flottante,& une barre de titre plus petite,
n'apparaît pas dans la Task bar)

Const WS_EX_WINDOWEDGE = &H100& 'bords de la fenetre sizable

Const WS_EX_PALETTEWINDOW = &H188&

Const WS_EX_CLIENTEDGE = &H200 'la fenetre à une bordure avec un look 3D

Const WS_EX_OVERLAPPEDWINDOW = &H300&

Const WS_EX_CONTEXTHELP = &H400& '? dans la titleBar

Const WS_EX_RIGHT =
&H1000&
'alignement a droite de la fenetre

Const WS_EX_RTLREADING = &H2000& 'lecture de droite a gauche du texte possible

Const WS_EX_LEFTSCROLLBAR = &H4000& 'la scrollbar a gauche

Const WS_EX_CONTROLPARENT = &H10000 'permet de naviguer avec la touche Tab

Const WS_EX_STATICEDGE = &H20000 'la fenetre à une bordure style 3D

Const WS_EX_APPWINDOW = &H40000

Const WS_EX_LAYERED = &H80000

Const WS_EX_NOACTIVATE = &H8000000 '(Win 2000) La fenetre ne peut etre activée


Daniel
Messages postés
228
Date d'inscription
mardi 5 avril 2005
Statut
Membre
Dernière intervention
4 janvier 2008
1
Ok c'est cool tout ça
mais j'essayais de comprendre comment ça marche parce que faire un copier/coller de ta source ça peut aider c'est sympa mais savoir pourquoi tu met ça ? comment marche ces APIs ? genre à quoi correspond ce troisième paramètre ?:

SetWindowLong Text1.hwnd, GWL_STYLE, Style Or ES_NUMBER

je suis allé sur le site de microsoft et ils me donnent la même liste mais pas le fonctionnement de ces APIs

Deluka.
Messages postés
3140
Date d'inscription
vendredi 14 mai 2004
Statut
Membre
Dernière intervention
11 mars 2019
31
on va chercher l'attribut correspondant au contrôle avec Get,

ceci afin d'ajouter ou de supprimer des propriétés



Style = GetWindowLong(Text1.hwnd, GWL_STYLE)



pour ajouter c'est OR, on peut en mettre autant qu'on veut à la suite, attention il y a des incompatibilités de propriétés.



SetWindowLong Text1.hwnd, GWL_STYLE, Style Or ES_NUMBER



pour supprimer c'est plus difficile, en fait faut faire un masque pour conserver tous les autres



SetWindowLong Text1.hwnd, GWL_STYLE, style And (Not ES_number)




Daniel
Messages postés
228
Date d'inscription
mardi 5 avril 2005
Statut
Membre
Dernière intervention
4 janvier 2008
1
>>>Daniel : ok c'est cool merci bien !! et bonne prog !



Deluka.