Bonjour =E0 tous,
Bon, la mort dans l'=E2me, la toujours aussi laborieuse apprentie
sorci=E8re se r=E9sout une fois de plus =E0 venir demander de l'aide aux
"grands de ce monde" ;o)
Voil=E0, j'ai besoin de "formater", normaliser un peu l'=E9criture d'un
des champs de ma base (qui identifie en fait des r=E9pertoires associ=E9s
=E0 celle-ci...)
Ne doivent figurer dans ces noms que chiffres et lettres (non
accentu=E9es) et comme s=E9parateur on ne tol=E8re que l'undescore et le
tiret
Je sais =E0 peu pr=E8s comment faire pour remplacer les caract=E8res en
questions : dans un premier temps on se contentera de faire du champ =E0
champ (car - et je vous en passe - il faut en m=EAme temps aller
v=E9rifier qu'il existe un r=E9pertoire correspondant sur le serveur,
modifier son nom, etc...)
Mais ce que je voudrais c'est cr=E9er une fonction qui permette de faire
une v=E9rification pr=E9alable au lancement de la modification :
parcourir donc le texte contenu dans le champ et d=E9tecter tout
caract=E8re "interdit"...
J'ai =E9t=E9 regarder du c=F4t=E9 de l'Ascii et voil=E0 ce que j'ai
pi=E8trement pondu : comme c'est ma premi=E8re fonction, la moindre des
choses c'est que cela ne fonctionne pas, n'est-ce pas ? (euh, pas tr=E8s
s=FBr de la pertinence de mes d=E9clarations...)
Function SignalCaract(MonChamp As String)
'pour d=E9terminer si un champ contient un des caract=E8res interdits
dans les
'noms de fichiers =E0 exporter sur le Web (uniquement autoris=E9s :
chiffres, lettres
'sauf caract=E8res accentu=E9s, undescore et le tiret (tol=E9r=E9)
'doit ramener un nombre : si celui-ci est sup=E9rieur =E0 z=E9ro :
existe au moins un mauvais caract=E8re
Dim n As Integer '(ou Byte ?)
Dim i As Integer
Dim caract As String
For i =3D 1 To Len(MonChamp)
caract =3D Mid(MonChamp, i, 1)
Select Case Asc(MonChamp)
Case 45: n =3D n
Case 48 To 57: n =3D n
Case 65 To 90: n =3D n
Case 95: n =3D n
Case 97 To 122: n =3D n
Case Else: n =3D n + 1
End Select
Next i
SignalCaract =3D n
End Function
et dans mon =E9v=E8nement je v=E9rifie la valeur de signalCaract comme
suit :
Dim signal As Integer
signal =3D SignalCaract(Me![AutreRefProjet])
If signal > 0 Then
Donc, merci d'avance aux bonnes =E2mes... (et je sais qu'il n'en manque
pas sur le forum ;o)
SoniaG
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
soniagaubert
Bon, décidément faudra que je sois un peu plus persévérante avant de sonner le tocsin... j'ai trouvé mon erreur : For i = 1 To Len(Caract) et non pas : For i = 1 To Len(MonChamp) ! Donc, tout est ok ! Excusez pour le dérangement... SoniaG
Bon, décidément faudra que je sois un peu plus persévérante avant
de sonner le tocsin... j'ai trouvé mon erreur :
For i = 1 To Len(Caract) et non pas : For i = 1 To Len(MonChamp) !
Donc, tout est ok !
Excusez pour le dérangement...
SoniaG
Bon, décidément faudra que je sois un peu plus persévérante avant de sonner le tocsin... j'ai trouvé mon erreur : For i = 1 To Len(Caract) et non pas : For i = 1 To Len(MonChamp) ! Donc, tout est ok ! Excusez pour le dérangement... SoniaG
Gilbert
Bonjour, Tu peux faire plus rapide avec la fonction Instr Par exemple:
Public Function ControleTexte(Chaine As String) As Boolean ControleTexte = True If ((InStr(1, Chaine, ".", 1) > 0) Or (InStr(1, Chaine, "[", 1) > 0) Or (InStr(1, Chaine, "]", 1) > 0) Or (InStr(1, Chaine, "!", 1) > 0)) Then ControleTexte = False End If End Function
Gilbert
a écrit dans le message de news: Bon, décidément faudra que je sois un peu plus persévérante avant de sonner le tocsin... j'ai trouvé mon erreur : For i = 1 To Len(Caract) et non pas : For i = 1 To Len(MonChamp) ! Donc, tout est ok ! Excusez pour le dérangement... SoniaG
Bonjour,
Tu peux faire plus rapide avec la fonction Instr
Par exemple:
Public Function ControleTexte(Chaine As String) As Boolean
ControleTexte = True
If ((InStr(1, Chaine, ".", 1) > 0) Or (InStr(1, Chaine, "[", 1) > 0) Or
(InStr(1, Chaine, "]", 1) > 0) Or (InStr(1, Chaine, "!", 1) > 0)) Then
ControleTexte = False
End If
End Function
Gilbert
<soniagaubert@free.fr> a écrit dans le message de
news:1141936227.762937.69360@u72g2000cwu.googlegroups.com...
Bon, décidément faudra que je sois un peu plus persévérante avant
de sonner le tocsin... j'ai trouvé mon erreur :
For i = 1 To Len(Caract) et non pas : For i = 1 To Len(MonChamp) !
Donc, tout est ok !
Excusez pour le dérangement...
SoniaG
Bonjour, Tu peux faire plus rapide avec la fonction Instr Par exemple:
Public Function ControleTexte(Chaine As String) As Boolean ControleTexte = True If ((InStr(1, Chaine, ".", 1) > 0) Or (InStr(1, Chaine, "[", 1) > 0) Or (InStr(1, Chaine, "]", 1) > 0) Or (InStr(1, Chaine, "!", 1) > 0)) Then ControleTexte = False End If End Function
Gilbert
a écrit dans le message de news: Bon, décidément faudra que je sois un peu plus persévérante avant de sonner le tocsin... j'ai trouvé mon erreur : For i = 1 To Len(Caract) et non pas : For i = 1 To Len(MonChamp) ! Donc, tout est ok ! Excusez pour le dérangement... SoniaG