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

Le
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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 3
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
3stone
Le #20263141
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)
C15
Le #20265011
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
Gilbert
Le #20268731
Bonjour,

Tu peux utiliser la fonction IsNumeric

--
Cordialement,

Gilbert


"Eric FROGER" 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




ejc
Le #20269561
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"
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




Blaise Cacramp
Le #20271411
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"
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




db
Le #20271871
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
RideHicul
Le #20272211
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"
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




ejc
Le #20274971
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"
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


db
Le #20279341
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
Blaise Cacramp
Le #20282041
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"
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


Publicité
Poster une réponse
Anonyme