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

10 réponses

1 2 3
Avatar
3stone
Salut,

Eric FROGER wrote:
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 ?




Tu pourrais comparer la valeur du champ ou zone de texte avec
son contenu numérique...

if Str(Val([LeChamp])) = [LeChamp] Then
'que des chiffres
else
'il y a des lettres
end if

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
C15
Eric FROGER a écrit :
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




Bonsoir à tous et à toutes,

J'ai le même problème que toi.

Hélas le problème n'est pas si simple que cela.
En effet les codes postaux sont compris entre 01000 et 95999 pour la
métropole et entre 97000 et 98999 pour les DOM et TOM.

Par ailleurs, il faut savoir que certains pays ont des codes postaux
essentiellement numériques (comme la Belgique ou le Maroc entre autres).
Pour différencier ces Cp étrangers, je saisis d'abord Be- ou Ma- pour
les pays donnés ci-dessus, suivi du Cp, ce qui donne par exemple Be-12345.

Pour que ce "préfixe" ne s'affiche pas, j'ai utilisé dans une requête,
et au formatage du Cp dans un état, la formule suivante :
VraiFaux(ExtracChaîne([Codepostal];3;1)="-";ExtracChaîne([Codepostal];DansChaîne([Codepostal];"-")+1);[Codepostal]).

Par contre je n'ai pas réussi à faire en sorte que dans le formulaire de
saisie, si je saisis BE-12345, seul s'affiche 12345.

Mais je suis sur que 3Stone trouvera la solution ;-))

A+


C15
Avatar
Gilbert
Bonjour,

Tu peux utiliser la fonction IsNumeric

--
Cordialement,

Gilbert


"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
ejc
Salut,
J'ai été confronté au même pb. que toi...
En premier lieu j'ai créé une table Ville_CP_Pays avec 4 champs (Ville,
Pays, CPFrance,CPEtranger )
La solution (bonne ou pas) est de créer 2 champs pour les codes postaux
(CPFrance et CPEtranger par ex.) sinon, je ne vois pas bien la solution
(surtout si tu souhaites que les CP français soit de longueur fixe de 5
caractères, que d'autres dans certains pays n'ont pas de longueur
déterminée, etc.)
Dans le formulaire de saisie, j'ai donc le contrôle "PAYS" et en fonction du
pays sélectionné (France ou autre), un seul des 2 champs (CPFrance et
CPEtranger) est activé.
Ensuite, pour afficher les villes et les CP, tu crées une requête avec un
champ calculé : CP:[CPFrance] & [CPEtranger] (dans la messure où l'un des 2
champs est vide, ça roule)
Si tu veux (ou si ça peut intéresser d'autres personnes) je peux vous
envoyer la chose (il suffira de me dire comment - ci-joint ?)
A+
Jero
"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

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




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
db
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
RideHicul
Bonsoir,

Euh ... je sais que je ne réponds pas à la question (pardon) mais ...
Pourquoi mettre un code postal en numérique ?

Un champ numérique n'est-il pas un champ sur lequel il y a une probabilité
(même infime) de faire un calcul ?
Et franchement faire la somme des codes postaux c'est pas hyper-parlant
comme indicateur ...

Pourtant je rencontre régulièrement des bases avec ce champ en numérique,
donc il doit bien y avoir une raison ...
Eclairez-moi

RideHickul.

"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
ejc
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
db
ejc a écrit :
Salut,
J'ai été confronté au même pb. que toi...
En premier lieu j'ai créé une table Ville_CP_Pays avec 4 champs (Ville,
Pays, CPFrance,CPEtranger )
La solution (bonne ou pas) est de créer 2 champs pour les codes postaux
(CPFrance et CPEtranger par ex.) sinon, je ne vois pas bien la solution
(surtout si tu souhaites que les CP français soit de longueur fixe de 5
caractères, que d'autres dans certains pays n'ont pas de longueur
déterminée, etc.)
Dans le formulaire de saisie, j'ai donc le contrôle "PAYS" et en fonction du
pays sélectionné (France ou autre), un seul des 2 champs (CPFrance et
CPEtranger) est activé.
Ensuite, pour afficher les villes et les CP, tu crées une requête avec un
champ calculé : CP:[CPFrance] & [CPEtranger] (dans la messure où l'un des 2
champs est vide, ça roule)
Si tu veux (ou si ça peut intéresser d'autres personnes) je peux vous
envoyer la chose (il suffira de me dire comment - ci-joint ?)



Bonsoir,

Il me semble que, si je devais traiter ce problème, je ne mettrais qu'un
seul champ CodePostal et que je créerais une table qui contiendrait la
liste des pays et le format des codes postaux à associer au pays. Ce
format pourrait être un masque de saisie à mettre en place sur le champ
code postal "à la volée" après la saisie du pays, ou (voire "et") une
'expression régulière' (RegExp, cher au monde Unix, mais tellement
pratique :-)) qui permettrait de vérifier la saisie sur l'AfterUpdate de
la saisie du code postal.
Pour les expressions régulières dans Access, voir ici :
http://cafeine.developpez.com/access/tutoriel/regexp/
Les requêtes resteraient simples, et il suffit juste de mettre en place
le contrôle après la saisie.

Tout ça reste évidemment très théorique, mais c'est très probablement ce
que j'essaierais de mettre en place.

db
Avatar
Blaise Cacramp
Selon : Bonjour ou bonsoir

Viva Corsica !
Étant belge, j'ignorais cela. Cela rend donc caduque une règle unique. Et
qui dit que cela ne correspond pas à d'autres pays ?
En cherchant un peu sur le net, on peut se constituer une (grande) table
avec les codes postaux et villes (et une deuxième pour les pays)
De toutes façons, le sieur Éric FROGER, initiateur de la question, ne réagit
pas. Lit-il nos réponses ?


Sub Test_CP2()
Dim sCP As String
sCP = InputBox("Entrez un code postal")
If Format(Val(sCP), "00000") = sCP Then
MsgBox "Code postal à 5 chiffres"
ElseIf (Left(sCP, 2) = "2A" Or Left(sCP, 2) = "2B") And
Format(Val(Right(sCP, 3)), "000") = Right(sCP, 3) Then
MsgBox "code postal Corse"
Else
MsgBox "pas code postal français"
End If
End Sub




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


"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


1 2 3