Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

reconnaitre les lettres et les chiffres dans une chaîne de caractères

25 réponses
Avatar
Eric FROGER
Bonsoir,

J'ai besoin pour distinguer les codes postaux étrangers des codes français
dans un champ d'identifier ceux qui contiennent des lettres et des chiffres
dans la chaîne de caractères, soit par une requête, soit par un bout de
code. Quelqu'un aurait une idée ?

Merci de vos retours.

Eric

5 réponses

1 2 3
Avatar
ejc
Salut,
Je ne m'acharne pas mais si tu penses que ta solution consiste en :
Sub Test_CP()
Dim sCP As String
sCP = InputBox("Entrez un code postal")
If Format(Val(sCP), "00000") = sCP Then
MsgBox "Code postal à 5 chiffres"
Else
MsgBox "pas code postal français"
End If
End Sub












ça serait tellement simple... (tu me prends pour un con ?)
Je me souviens que sur un autre fil de discussion (DoCmd... ou
CurrentDB.Excecute...) tu m'as répondu "troll" ; imagine le mec ou la nana
qui débute ; elle fait quoi avec le "troll" ?
Tu as le droit (sans doute, étant donné ton extrême compétence) de te foutre
de la gueule des gens, mais je ne suis pas sûr que ça fasse "avancer les
choses"...
Essaies donc de faire profiter les autres de ce que tu sais... peut-être
faire.
Encore une fois, sans animosité, mais...
A+
Jero
"Blaise Cacramp" a écrit dans le message de news:

Selon : Bonjour ou bonsoir

tu le donnes ton code... et ta solution (mois j'en ai proposé une, elle
est où la tienne ? t'as un exemple ?)



Juste en dessous, le 3 à 13h25


Cdt, Blaise
---- ---- ----


"ejc" <~ a écrit dans le message de news:

Salut
Propose donc une solution ! (viable...) et arrête de nous expliquer ce
qu'il faut faire ou pas...
Et si, avec un seul champ CP, on peut savoir si c'est français ou pas,
alors tu le donnes ton code... et ta solution (mois j'en ai proposé une,
elle est où la tienne ? t'as un exemple ?)
Excuse-moi, ça fait plus de 25 ans que je fais de la programmation, je ne
suis pas plus doué qu'un autre, mais j'attends avec plaisir ce que tu
proposes.
note : je serais le premier à le reconnaître (en informatique, mieux vaut
rester modeste si on veut progresser ;>))
Salut et sans rancune,
Jero
"Blaise Cacramp" a écrit dans le message de news:
OX$t$
Selon : Bonjour ou bonsoir

On retombe donc sur la création de 2 champs distincts (CPFrance et
CPEtranger) surtout que si on souhaite que le CPFrance soit
correctement saisi (5 caractères).



Surtout pas !

Les solutions sont variables suivant l'étendue et le nombre de fiches.
*Mais pas deux champs pour la même chose*.
Pour ce qui est des « *bidouilles* VBA », je dirais que le VBA sert à
cela : créer des fonctions et procédures pour contrôler au plus fin ce
qu'Access ne sait pas faire nativement.

Je vais même te dire que ce mot « *bidouilles* » m'a vexé : je fais
cela quasi à longueur de journée...
1/ pour le plus grand bien des utilisateurs lambda ;
2/ pour éviter les erreurs d'encodage, créer des gardes-fous, tout
simplement.

Cdt, Blaise
---- ---- ----


"ejc" <~ a écrit dans le message de news:

Salut,
Et pour la Corse (2Axxx, 2Bxxx), ça donne quoi ? (et je pense qu'il
n'y a pas que la Corse)


On retombe donc sur la création de 2 champs distincts (CPFrance et
CPEtranger) surtout que si on souhaite que le CPFrance soit
correctement saisi (5 caractères).
C'est peut-être possible de ne créer qu'un seul champ à conditions de
mettre des "bidouilles VBA"dans tous les sens, sans réel bénéfice par
rapport à ce qu'on souhaite en final.
Ce n'est que mon avis...
Jero


"db" a écrit dans le message de news:

Blaise Cacramp a écrit :
Selon : Bonjour ou bonsoir

J'ai ouï dire que les codes postaux allaient être revus et harmonisés
(au niveau européen ?) en incluant la tournée du facteur comme en UK
et au Canada, je crois. Donc voir plus loin que maintenant. Sinon :

Sub Test_CP()
Dim sCP As String
sCP = InputBox("Entrez un code postal")
If Format(Val(sCP), "00000") = sCP Then
MsgBox "Code postal à 5 chiffres"
Else
MsgBox "pas code postal français"
End If
End Sub





Et pour la Corse (2Axxx, 2Bxxx), ça donne quoi ?

db


















Avatar
Blaise Cacramp
Selon : Bonjour ou bonsoir

J'avais oublié que je t'avais déjà traité de troll

Je récidive et te black list


Cdt, Blaise
---- ---- ----


"ejc" <~ a écrit dans le message de news:

Salut,
Je ne m'acharne pas mais si tu penses que ta solution consiste en :
Sub Test_CP()
Dim sCP As String
sCP = InputBox("Entrez un code postal")
If Format(Val(sCP), "00000") = sCP Then
MsgBox "Code postal à 5 chiffres"
Else
MsgBox "pas code postal français"
End If
End Sub












ça serait tellement simple... (tu me prends pour un con ?)
Je me souviens que sur un autre fil de discussion (DoCmd... ou
CurrentDB.Excecute...) tu m'as répondu "troll" ; imagine le mec ou la nana
qui débute ; elle fait quoi avec le "troll" ?
Tu as le droit (sans doute, étant donné ton extrême compétence) de te
foutre de la gueule des gens, mais je ne suis pas sûr que ça fasse
"avancer les choses"...
Essaies donc de faire profiter les autres de ce que tu sais... peut-être
faire.
Encore une fois, sans animosité, mais...
A+
Jero
"Blaise Cacramp" a écrit dans le message de news:

Selon : Bonjour ou bonsoir

tu le donnes ton code... et ta solution (mois j'en ai proposé une, elle
est où la tienne ? t'as un exemple ?)



Juste en dessous, le 3 à 13h25


Cdt, Blaise
---- ---- ----


"ejc" <~ a écrit dans le message de news:

Salut
Propose donc une solution ! (viable...) et arrête de nous expliquer ce
qu'il faut faire ou pas...
Et si, avec un seul champ CP, on peut savoir si c'est français ou pas,
alors tu le donnes ton code... et ta solution (mois j'en ai proposé une,
elle est où la tienne ? t'as un exemple ?)
Excuse-moi, ça fait plus de 25 ans que je fais de la programmation, je
ne suis pas plus doué qu'un autre, mais j'attends avec plaisir ce que tu
proposes.
note : je serais le premier à le reconnaître (en informatique, mieux
vaut rester modeste si on veut progresser ;>))
Salut et sans rancune,
Jero
"Blaise Cacramp" a écrit dans le message de news:
OX$t$
Selon : Bonjour ou bonsoir

On retombe donc sur la création de 2 champs distincts (CPFrance et
CPEtranger) surtout que si on souhaite que le CPFrance soit
correctement saisi (5 caractères).



Surtout pas !

Les solutions sont variables suivant l'étendue et le nombre de fiches.
*Mais pas deux champs pour la même chose*.
Pour ce qui est des « *bidouilles* VBA », je dirais que le VBA sert à
cela : créer des fonctions et procédures pour contrôler au plus fin ce
qu'Access ne sait pas faire nativement.

Je vais même te dire que ce mot « *bidouilles* » m'a vexé : je fais
cela quasi à longueur de journée...
1/ pour le plus grand bien des utilisateurs lambda ;
2/ pour éviter les erreurs d'encodage, créer des gardes-fous, tout
simplement.

Cdt, Blaise
---- ---- ----


"ejc" <~ a écrit dans le message de news:

Salut,
Et pour la Corse (2Axxx, 2Bxxx), ça donne quoi ? (et je pense qu'il
n'y a pas que la Corse)


On retombe donc sur la création de 2 champs distincts (CPFrance et
CPEtranger) surtout que si on souhaite que le CPFrance soit
correctement saisi (5 caractères).
C'est peut-être possible de ne créer qu'un seul champ à conditions de
mettre des "bidouilles VBA"dans tous les sens, sans réel bénéfice par
rapport à ce qu'on souhaite en final.
Ce n'est que mon avis...
Jero


"db" a écrit dans le message de news:

Blaise Cacramp a écrit :
Selon : Bonjour ou bonsoir

J'ai ouï dire que les codes postaux allaient être revus et
harmonisés (au niveau européen ?) en incluant la tournée du facteur
comme en UK et au Canada, je crois. Donc voir plus loin que
maintenant. Sinon :

Sub Test_CP()
Dim sCP As String
sCP = InputBox("Entrez un code postal")
If Format(Val(sCP), "00000") = sCP Then
MsgBox "Code postal à 5 chiffres"
Else
MsgBox "pas code postal français"
End If
End Sub





Et pour la Corse (2Axxx, 2Bxxx), ça donne quoi ?

db






















Avatar
pascal58
On 30 sep, 19:07, "Eric FROGER" wrote:
Bonsoir,

J'ai besoin pour distinguer les codes postaux étrangers des codes fran çais
dans un champ d'identifier ceux qui contiennent des lettres et des chiffr es
dans la chaîne de caractères, soit par une requête, soit par un bou t de
code. Quelqu'un aurait une idée ?

Merci de vos retours.

 Eric


Utilisez la solution de Blaise Cacramp par exemple sur l'événement
beforeUpdate de votre Formulaire

If Format(Val(Champ), "00000") <> Champ Then
MsgBox "pas un code postal français, corrigez"
Cancel = true
champ.setfocus
End If
Avatar
Blaise Cacramp
Selon : Bonjour ou bonsoir

Dans un module :
Option Compare Database
Option Explicit

Function bVerification_CP(Code_ISO_02 As String, Code_Postal As String) As
Boolean
'---------------------------------------------------------------------------------------
' Procedure : bVerification_CP
' Author : Blaise Cacramp - anagramme
' Date : 5/10/2009
' Sujet : Vérification du format de codes postaux connus selon code pays
(ISO 3166 Country Codes) _
stockés ici dans la table Tbl_Formats_CP avec au moins les champs _
- ISO_02 (2 caractères) _
- Format (combinaisons de C , L, Espace ou tiret pour respectivement
Chiffre, Lettre, Blanc ou tiret
'---------------------------------------------------------------------------------------
'
Dim sSql As String
Dim sQt As String * 1
Dim Rst As New ADODB.Recordset

Dim bCP_OK As Boolean
Dim sFmt As String
Dim sC As String * 1
Dim sF As String * 1
Dim I As Integer

sQt = Chr(34) ' guillements (Qt pour Quote)
sSql = "SELECT Tbl_Formats_CP.Format" _
& " FROM Tbl_Formats_CP" _
& " WHERE (((Tbl_Formats_CP.ISO_02)=" & sQt & Code_ISO_02 & sQt &
"));"

Rst.Open sSql, CurrentProject.Connection, adOpenDynamic 'openstatic
pour .recordcount

If Rst.EOF Then 'code Pays pas dans la liste...
Rst.Close
bVerification_CP = True 'on laisse passer
Exit Function
End If

Rst.MoveFirst

bCP_OK = False
Do 'il peut y avoir plusieurs formats (comme en GB)
sFmt = UCase(Rst("Format"))
bCP_OK = Len(Code_Postal) = Len(sFmt) ' bonne longueur ?
If bCP_OK Then 'oui, on continue le test de contenu.
Code_Postal = UCase(Code_Postal)
For I = 1 To Len(sFmt)
sC = Mid(Code_Postal, I, 1)
sF = Mid(sFmt, I, 1)
Select Case sF 'on utilise le AND : si un seul des
critères n'est pas bon, alors tout est à False
Case "L": bCP_OK = bCP_OK And Asc(sC) > 64 And Asc(sC) <
91
Case "C": bCP_OK = bCP_OK And Asc(sC) > 48 And Asc(sC) <
58
Case " ", "-": bCP_OK = bCP_OK And sC = sF
End Select
Next
End If
If bCP_OK Then
bVerification_CP = True
Exit Do ' sortie OK
End If
Rst.MoveNext
If Rst.EOF Then
bVerification_CP = False 'tous les formats essayés, sortie à
faux
Exit Do
End If
Loop
Rst.Close
End Function
________________________
que vous pouvez tester dans le debug, par exemple : ?
bVerification_CP("GB","a1-2bc")
________________________

Les codes et formats en csv :
ISO_02;Format
AM;CCCCCC
AR;CCCC
AT;CCCCC
AT;CCCC
AU;CCCC
AZ;CCCCCC
AZ;CCCC
BA;CCCCC
BD;CCCC
BE;CCCC
BL;CCCCC
BN;LLCCCC
BR;CCCCC-CCC
BR;CCCCC
BY;CCCCCC
CA;LCL CLC
CH;CCCC
CN;CCCCCC
CU;CCCCC
CY;CCCC
CZ;CCC CC
DE;CCCCC
DK;CCCC
DZ;CCCCC
EE;CCCCC
ES;CCCCC
FI;CCCCC
FR;CCCCC
GB;LLCL CLL
GB;LLCC CLL
GB;LLC CLL
GB;LCL CLL
GB;LCC CLL
GB;LC CLL
GE;CCCC
GF;CCCCC
GG;LLC CLL
GL;CCCC
GP;CCCCC
GR;CCC CC
GU;CCCCC
HR;CCCCC
HU;CCCC
IC;CCCCC
ID;CCCCC
IL;CCCCC
IN;CCCCCC
IS;CCC
IT;CCCCC
JE;LLC CLL
JP;CCC-CCCC
JP;CCC
KE;CCCCC
KG;CCCCCC
KR;CCC-CCC
KZ;CCCCCC
LI;CCCC
LT;CCCCC
LU;CCCC
LV;CCCC
MA;CCCCC
MC;CCCCC
MD;CCCC
ME;CCCCC
MG;CCC
MH;CCCCC
MK;CCCC
MN;CCCCCC
MP;CCCCC
MQ;CCCCC
MT;LLL CCC
MT;LLL CC
MV;CCCCC
MV;CCCC
MX;CCCCC
MY;CCCCC
NL;CCCC LL
NO;CCCC
PH;CCCC
PK;CCCCC
PL;CC-CCC
PR;CCCCC
PT;CCCC-CCC
PT;CCCC
RE;CCCCC
RO;CCCCCC
RS;CCCCC
RU;CCCCCC
SE;CCC CC
SG;CCCCCC
SI;CCCC
SK;CCC CC
SZ;LCCC
TH;CCCCC
TJ;CCCCCC
TM;CCCCCC
TR;CCCCC
TW;CCCCC
TW;CCC
UA;CCCCC
US;CCCCC-CCCC
US;CCCCC
UY;CCCC
UZ;CCCCCC
VI;CCCCC
ZA;CCCC
__________________

Qu'en penses-tu, Éric ?
et les autres (sauf celui que j'ai plonké)

Cdt, Blaise
---- ---- ----


"Eric FROGER" a écrit dans le message de news:

Bonsoir,

J'ai besoin pour distinguer les codes postaux étrangers des codes français
dans un champ d'identifier ceux qui contiennent des lettres et des
chiffres dans la chaîne de caractères, soit par une requête, soit par un
bout de code. Quelqu'un aurait une idée ?

Merci de vos retours.

Eric




Avatar
Blaise Cacramp
Selon : Bonjour ou bonsoir

Et j'oubliais : pour ceux qui cherchent des codes postaux gratuits, j'ai
trouvé ceci : http://www.postcode.ws/Downloads/Download.asp


Cdt, Blaise
---- ---- ----
1 2 3