Seth77
Messages postés571Date d'inscriptionmardi 30 avril 2002StatutMembreDernière intervention 4 mai 2020
-
22 sept. 2005 à 20:59
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 2021
-
8 juin 2006 à 11:57
Cette discussion concerne un article du site. Pour la consulter dans son contexte d'origine, cliquez sur le lien ci-dessous.
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 8 juin 2006 à 11:57
ce genre de question est récurrent, et des sources le traite.
une solution possible :
Private Const ES_UPPERCASE As Long = &H8&
Private Const GWL_STYLE As Long = -16
Private Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Sub Form_Load()
SetWindowLong Text1.hwnd, GWL_STYLE, ES_UPPERCASE Or (GetWindowLong(Text1.hwnd, GWL_STYLE))
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
If InStrB("1234567890ABCDEFabcdef" & Chr$(8) & Chr$(24) & Chr$(22) & Chr$(3), Chr$(KeyAscii)) = 0 Then
KeyAscii = 0
End If
End Sub
attention, tu peux ici coller des valeurs interdites...
Seth77
Messages postés571Date d'inscriptionmardi 30 avril 2002StatutMembreDernière intervention 4 mai 20201 8 juin 2006 à 11:55
Slu
il faut traiter la valeur ascii dans la fonction keypress .... il faut, je crois, mettre ascii = 0 pour les caracteres qui ne sont pas permis !
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 8 juin 2006 à 11:53
Merci de poser ta question sur le Forum...
sanyohan13
Messages postés7Date d'inscriptionmardi 2 mai 2006StatutMembreDernière intervention23 mars 2009 8 juin 2006 à 11:42
salut
je débute et je voudrais savoir comment faire pour écrire seulement "1234567890ABCDEF" et que les autres caractères ne s'écrivent pas m^me si on appuie dessus...
merci
VBsnail
Messages postés13Date d'inscriptionmercredi 22 février 2006StatutMembreDernière intervention19 mars 2008 23 févr. 2006 à 23:47
Bon, à la demande générale, le code avec la fonction Replace:
Function Strip(ByVal strA As String, ByVal ParamArray varZoek() As String)
' Merci Jean Elens
Dim intTel As Integer
Dim strNew As String
Dim varteken As Object
Dim strTekst As String
strTekst = strA
For Each varteken In varZoek
strNew = ""
'For intTel = 1 To Len(strTekst)
' If Mid(strTekst, intTel, 1) <> varteken Then
' strNew = strNew & Mid(strTekst, intTel, 1)
' End If
'Next
strNew = Replace(strTekst, varteken, "")
strTekst = strNew
MessageBox.Show(strNew, "Strip", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
Next
Strip = strNew
End Function
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 23 févr. 2006 à 10:21
en Visual Basic 2005 :o
tu ne va pas me faire croire qu'il n'existe pas de fonction Replace !!!
VBsnail
Messages postés13Date d'inscriptionmercredi 22 février 2006StatutMembreDernière intervention19 mars 2008 23 févr. 2006 à 09:45
Merci pour ce code qui est bien utile au débutant que je suis.
Je l'ai adapté pour VisualBasic 2005 Express edition, cela donne:
Function Strip(ByVal strA As String, ByVal ParamArray varZoek() As String)
Dim intTel As Integer
Dim strNew As String
Dim varteken As Object
Dim strTekst As String
strTekst = strA
For Each varteken In varZoek
strNew = ""
For intTel = 1 To Len(strTekst)
If Mid(strTekst, intTel, 1) <> varteken Then
strNew = strNew & Mid(strTekst, intTel, 1)
End If
Next
strTekst = strNew
MessageBox.Show(strNew, "Strip", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
Next
Strip = strNew
End Function
sosodef88
Messages postés78Date d'inscriptionjeudi 17 février 2005StatutMembreDernière intervention26 décembre 2005 24 sept. 2005 à 20:53
je pourrai te rajouter deux ligne dans mon code pour ariver au meme résultat mé bon ca suffit et la tienne est largement bonne. aller bonne prog a+
Jean_Elens
Messages postés53Date d'inscriptiondimanche 29 mai 2005StatutMembreDernière intervention16 octobre 2006 24 sept. 2005 à 16:54
sosodef88, la via les lignes que tu mentionnes, tu ne supprimes que le signe "|", ici, via ma fonction, tu peux supprimer une serie de caractères. Et cela fonctionne très bien en VB5.
En effet, la fonction "replace" de VB6 améliore le code. Donc ceux qui ont VB6 pourront facilement l'améliorer. (voir code de draluorg)
Pour les noms de variables, je les ai utilisées dans ma langue (néerlandais) mais j'ai un VB anglais, et de temps en temps, je mets un mot en EN. Voilà l'explication.
econs
Messages postés4030Date d'inscriptionmardi 13 mai 2003StatutMembreDernière intervention23 décembre 200825 23 sept. 2005 à 15:39
Pourquoi utiliser des variables néerlandaises mélangées à des variables anglaises ??? lol
A part ce petit problème d'esthétique, rien à redire...
sosodef88
Messages postés78Date d'inscriptionjeudi 17 février 2005StatutMembreDernière intervention26 décembre 2005 23 sept. 2005 à 13:46
loool encore un peu et j'allais te dire de dormir un bon coup :D
draluorg
Messages postés625Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention25 novembre 2010 23 sept. 2005 à 13:44
oup's non sorry suis vraiment fatigue moi j'avais aller me coucher mdr
draluorg
Messages postés625Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention25 novembre 2010 23 sept. 2005 à 13:41
Eh wai mais non tu n'est pas sence connaitre le la variable "a" a l'avance ;)
sosodef88
Messages postés78Date d'inscriptionjeudi 17 février 2005StatutMembreDernière intervention26 décembre 2005 23 sept. 2005 à 13:38
j'avais très bien compris mé il suffit juste de rajouter
a = "salut"
do until instr(1,a,"l") = 0
StrDel a, "l"
loop
draluorg
Messages postés625Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention25 novembre 2010 23 sept. 2005 à 13:18
Yep j'avais bien compris mais je parlais pour ceux juste au dessus qui n'avaient pas l'air d'avoir saisi que la fonction etait pour remplacer toute une liste de caractere et non 1 seul
ou alors j'ai rien compris lol ;)
@+
Renfield
Messages postés17287Date d'inscriptionmercredi 2 janvier 2002StatutModérateurDernière intervention27 septembre 202174 23 sept. 2005 à 13:13
L'idée, c'est de ne pas utiliser la fonction replace...
(dont les utilisateurs de VB5 ne disposent pas)
draluorg
Messages postés625Date d'inscriptionvendredi 23 avril 2004StatutMembreDernière intervention25 novembre 2010 23 sept. 2005 à 01:17
Pour virer un tableau de caractere, je ferai plutot ceci:
toto = "azè-e(r(tè-y"
MsgBox Strip(toto, "(", "è", "-") ' donne "azerty"
Function Strip(strA As String, ParamArray varZoek()) As String
Dim i As Long
For i = 0 To UBound(varZoek)
strA = Replace(strA, varZoek(i), vbNullString)
Next i
Strip = strA
End Function
non ?
sosodef88
Messages postés78Date d'inscriptionjeudi 17 février 2005StatutMembreDernière intervention26 décembre 2005 22 sept. 2005 à 23:18
oui c'est sure
> msgbox Replace("salut", "t", "")
****************************************
et une ptite fonction vite fé
Function StrDel(Str As String, DelChar) As String
For a = 1 To Len(Str)
If Mid(Str, a, 1) = DelChar Then
StrDel = Mid(Str, 1, a - 1) & Mid(Str, a + 1)
End If
Next a
End Function
shadowmoy
Messages postés340Date d'inscriptionjeudi 25 juillet 2002StatutMembreDernière intervention25 août 2007 22 sept. 2005 à 22:58
sauf pour les users de vb5 .....
Seth77
Messages postés571Date d'inscriptionmardi 30 avril 2002StatutMembreDernière intervention 4 mai 20201 22 sept. 2005 à 20:59
Slu
pas mal, mais il y avait plus simple ... en utilisant la fonction Replace !
8 juin 2006 à 11:57
une solution possible :
Private Const ES_UPPERCASE As Long = &H8&
Private Const GWL_STYLE As Long = -16
Private Declare Function GetWindowLong Lib "user32.dll" Alias "GetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long) As Long
Private Declare Function SetWindowLong Lib "user32.dll" Alias "SetWindowLongA" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
Private Sub Form_Load()
SetWindowLong Text1.hwnd, GWL_STYLE, ES_UPPERCASE Or (GetWindowLong(Text1.hwnd, GWL_STYLE))
End Sub
Private Sub Text1_KeyPress(KeyAscii As Integer)
If InStrB("1234567890ABCDEFabcdef" & Chr$(8) & Chr$(24) & Chr$(22) & Chr$(3), Chr$(KeyAscii)) = 0 Then
KeyAscii = 0
End If
End Sub
attention, tu peux ici coller des valeurs interdites...
8 juin 2006 à 11:55
il faut traiter la valeur ascii dans la fonction keypress .... il faut, je crois, mettre ascii = 0 pour les caracteres qui ne sont pas permis !
8 juin 2006 à 11:53
8 juin 2006 à 11:42
je débute et je voudrais savoir comment faire pour écrire seulement "1234567890ABCDEF" et que les autres caractères ne s'écrivent pas m^me si on appuie dessus...
merci
23 févr. 2006 à 23:47
Function Strip(ByVal strA As String, ByVal ParamArray varZoek() As String)
' Merci Jean Elens
Dim intTel As Integer
Dim strNew As String
Dim varteken As Object
Dim strTekst As String
strTekst = strA
For Each varteken In varZoek
strNew = ""
'For intTel = 1 To Len(strTekst)
' If Mid(strTekst, intTel, 1) <> varteken Then
' strNew = strNew & Mid(strTekst, intTel, 1)
' End If
'Next
strNew = Replace(strTekst, varteken, "")
strTekst = strNew
MessageBox.Show(strNew, "Strip", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
Next
Strip = strNew
End Function
23 févr. 2006 à 10:21
tu ne va pas me faire croire qu'il n'existe pas de fonction Replace !!!
23 févr. 2006 à 09:45
Je l'ai adapté pour VisualBasic 2005 Express edition, cela donne:
Function Strip(ByVal strA As String, ByVal ParamArray varZoek() As String)
Dim intTel As Integer
Dim strNew As String
Dim varteken As Object
Dim strTekst As String
strTekst = strA
For Each varteken In varZoek
strNew = ""
For intTel = 1 To Len(strTekst)
If Mid(strTekst, intTel, 1) <> varteken Then
strNew = strNew & Mid(strTekst, intTel, 1)
End If
Next
strTekst = strNew
MessageBox.Show(strNew, "Strip", MessageBoxButtons.OK, MessageBoxIcon.Asterisk)
Next
Strip = strNew
End Function
24 sept. 2005 à 20:53
24 sept. 2005 à 16:54
En effet, la fonction "replace" de VB6 améliore le code. Donc ceux qui ont VB6 pourront facilement l'améliorer. (voir code de draluorg)
Pour les noms de variables, je les ai utilisées dans ma langue (néerlandais) mais j'ai un VB anglais, et de temps en temps, je mets un mot en EN. Voilà l'explication.
23 sept. 2005 à 15:39
A part ce petit problème d'esthétique, rien à redire...
23 sept. 2005 à 13:46
23 sept. 2005 à 13:44
23 sept. 2005 à 13:41
23 sept. 2005 à 13:38
a = "salut"
do until instr(1,a,"l") = 0
StrDel a, "l"
loop
23 sept. 2005 à 13:18
ou alors j'ai rien compris lol ;)
@+
23 sept. 2005 à 13:13
(dont les utilisateurs de VB5 ne disposent pas)
23 sept. 2005 à 01:17
toto = "azè-e(r(tè-y"
MsgBox Strip(toto, "(", "è", "-") ' donne "azerty"
Function Strip(strA As String, ParamArray varZoek()) As String
Dim i As Long
For i = 0 To UBound(varZoek)
strA = Replace(strA, varZoek(i), vbNullString)
Next i
Strip = strA
End Function
non ?
22 sept. 2005 à 23:18
> msgbox Replace("salut", "t", "")
****************************************
et une ptite fonction vite fé
Function StrDel(Str As String, DelChar) As String
For a = 1 To Len(Str)
If Mid(Str, a, 1) = DelChar Then
StrDel = Mid(Str, 1, a - 1) & Mid(Str, a + 1)
End If
Next a
End Function
22 sept. 2005 à 22:58
22 sept. 2005 à 20:59
pas mal, mais il y avait plus simple ... en utilisant la fonction Replace !