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

Comment contrôler les valeurs d'un champ d'un table ?

16 réponses
Avatar
Bear76
Bonjour tout le monde,


J'ai deux tables non reliées, tbl_adherent, tbl_codespostaux.
Les données (enregistrements) de la tbl_adherent proviennent d'une
importation.
Dans la tbl_adherent, il y a entre autre les champs code postal et
ville.
J'ai remarqué que certaines valeurs du champ code postal de la
tbl_adherent étaient erronées. Soit il n'y a pas de code postal saisi,
soit le code postal saisi est inexistant, mais la ville est
correctement saisie.
Existe-t-il une procédure en vba qui permettrait de contrôler les
valeurs code postal de la tbl_adherent en fonction des valeurs code
postal de ma tbl_codespostaux et de modifier automatiquement les codes
postaux de ma tbl_adherent ?
Merci d'avance.

10 réponses

1 2
Avatar
3stone
Salut,

Bear76 wrote:
J'ai deux tables non reliées, tbl_adherent, tbl_codespostaux.




et quelle est la *bonne* raison pour qu'elle ne le soit pas ??


Les données (enregistrements) de la tbl_adherent proviennent d'une
importation.
Dans la tbl_adherent, il y a entre autre les champs code postal et
ville.
J'ai remarqué que certaines valeurs du champ code postal de la
tbl_adherent étaient erronées. Soit il n'y a pas de code postal saisi,
soit le code postal saisi est inexistant, mais la ville est
correctement saisie.
Existe-t-il une procédure en vba qui permettrait de contrôler les
valeurs code postal de la tbl_adherent en fonction des valeurs code
postal de ma tbl_codespostaux et de modifier automatiquement les codes
postaux de ma tbl_adherent ?



Tu semble vouloir corriger un erreur de conception par
du code ou autres manipulations, fortement à déconseiller !

Dans tous les cas, il te faut une seule table T_Localite avec au minimum
les champs NoCode, CodePostal et NomLocalité
Toutes les tables qui contiennent des adresses mémoriseront
uniquement la valeur de NoCode.

Sinon, pour persévérer dans ta voie, utilise une simple
requête de mise à jour...

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
db
3stone a écrit :
Salut,

Bear76 wrote:
J'ai deux tables non reliées, tbl_adherent, tbl_codespostaux.




et quelle est la *bonne* raison pour qu'elle ne le soit pas ??


Les données (enregistrements) de la tbl_adherent proviennent d'une
importation.
Dans la tbl_adherent, il y a entre autre les champs code postal et
ville.
J'ai remarqué que certaines valeurs du champ code postal de la
tbl_adherent étaient erronées. Soit il n'y a pas de code postal saisi,
soit le code postal saisi est inexistant, mais la ville est
correctement saisie.
Existe-t-il une procédure en vba qui permettrait de contrôler les
valeurs code postal de la tbl_adherent en fonction des valeurs code
postal de ma tbl_codespostaux et de modifier automatiquement les codes
postaux de ma tbl_adherent ?



Tu semble vouloir corriger un erreur de conception par
du code ou autres manipulations, fortement à déconseiller !

Dans tous les cas, il te faut une seule table T_Localite avec au minimum
les champs NoCode, CodePostal et NomLocalité
Toutes les tables qui contiennent des adresses mémoriseront
uniquement la valeur de NoCode.





Bonjour,

Le problème, c'est qu'une même ville peut avoir plusieurs codes postaux,
et que le même code postal peut s'appliquer à plusieurs communes. On ne
peut pas toujours déduire la commune à partir du code postal. On ne peut
pas toujours déduire le code postal à partir de la commune (et il y a de
nombreux noms de commune identiques dans plusieurs départements)
La table T_Localite ne peut donc pas contenir le code postal : il faut
une table de relation Code Postal < -- > Code commune. Et je ne parle
pas des Cedex...

db
Avatar
3stone
Salut,

db wrote:
3stone a écrit :
Salut,

Bear76 wrote:
J'ai deux tables non reliées, tbl_adherent, tbl_codespostaux.




et quelle est la *bonne* raison pour qu'elle ne le soit pas ??


Les données (enregistrements) de la tbl_adherent proviennent d'une
importation.
Dans la tbl_adherent, il y a entre autre les champs code postal et
ville.
J'ai remarqué que certaines valeurs du champ code postal de la
tbl_adherent étaient erronées. Soit il n'y a pas de code postal
saisi, soit le code postal saisi est inexistant, mais la ville est
correctement saisie.
Existe-t-il une procédure en vba qui permettrait de contrôler les
valeurs code postal de la tbl_adherent en fonction des valeurs code
postal de ma tbl_codespostaux et de modifier automatiquement les
codes postaux de ma tbl_adherent ?



Tu semble vouloir corriger un erreur de conception par
du code ou autres manipulations, fortement à déconseiller !

Dans tous les cas, il te faut une seule table T_Localite avec au
minimum les champs NoCode, CodePostal et NomLocalité
Toutes les tables qui contiennent des adresses mémoriseront
uniquement la valeur de NoCode.





Bonjour,

Le problème, c'est qu'une même ville peut avoir plusieurs codes
postaux, et que le même code postal peut s'appliquer à plusieurs
communes. On ne peut pas toujours déduire la commune à partir du
code postal. On ne peut pas toujours déduire le code postal à partir
de la commune (et il y a de nombreux noms de commune identiques dans
plusieurs départements)
La table T_Localite ne peut donc pas contenir le code postal : il faut
une table de relation Code Postal < -- > Code commune. Et je ne parle
pas des Cedex...





Non.
Il suffit d'ajouter dans la table localité le code du département etc...
C'est pour cela que la clé primaire NE DOIT PAS être le code postal,
mais comme indiqué "NoCode" (ou IdCode ou autre) qui peut être
un simple numéroauto !
Cela permet d'avoir un nombre quelconque de Code postaux identique.

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
db
3stone a écrit :
Dans tous les cas, il te faut une seule table T_Localite avec au
minimum les champs NoCode, CodePostal et NomLocalité
Toutes les tables qui contiennent des adresses mémoriseront
uniquement la valeur de NoCode.




Bonjour,
La table T_Localite ne peut donc pas contenir le code postal : il faut
une table de relation Code Postal < -- > Code commune. Et je ne parle
pas des Cedex...





Non.
Il suffit d'ajouter dans la table localité le code du département etc...
C'est pour cela que la clé primaire NE DOIT PAS être le code postal,
mais comme indiqué "NoCode" (ou IdCode ou autre) qui peut être
un simple numéroauto !
Cela permet d'avoir un nombre quelconque de Code postaux identique.





En répétant le nom de la localité autant de fois qu'elle a de codes
postaux ? Hum...

db
Avatar
3stone
re,

db wrote:
3stone a écrit :
Dans tous les cas, il te faut une seule table T_Localite avec au
minimum les champs NoCode, CodePostal et NomLocalité
Toutes les tables qui contiennent des adresses mémoriseront
uniquement la valeur de NoCode.




Bonjour,
La table T_Localite ne peut donc pas contenir le code postal : il
faut une table de relation Code Postal < -- > Code commune. Et je
ne parle pas des Cedex...





Non.
Il suffit d'ajouter dans la table localité le code du département
etc... C'est pour cela que la clé primaire NE DOIT PAS être le code
postal, mais comme indiqué "NoCode" (ou IdCode ou autre) qui peut
être
un simple numéroauto !
Cela permet d'avoir un nombre quelconque de Code postaux identique.





En répétant le nom de la localité autant de fois qu'elle a de codes
postaux ? Hum...



Je ne connais pas le système FR, mais je suppose que l'on n'a pas
des dixaines de correspondances... et pour deux ou trois, cela ne
vaut pas la peine d'ajouter une table supplémentaire

Si tu fais comme je te le propose, tu peux travailler avec
une liste déroulante qui indique :
- NoCode (caché)
- CodePostal
- Localité
- Canton/arrondissement/département ou autre distinctif.

la sélection permet alors les erreurs.

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
3stone
3stone wrote:

la sélection permet alors les erreurs.



heu... empêche alors... ;-)

--
A+
Pierre (3stone) Access MVP
Perso: http://www.3stone.be/
MPFA: http://www.mpfa.info/ (infos générales)
Avatar
Bear76
Bonsoir Pierre,

Après mûre réflexion, 3stone a écrit :
Salut,

Bear76 wrote:
J'ai deux tables non reliées, tbl_adherent, tbl_codespostaux.




et quelle est la *bonne* raison pour qu'elle ne le soit pas ??



J'ai écris un petit peu trop vite, sans me relire, désolé.
la table tbl_adherent est une table temporaire (tbl_adherent_tmp).
Si je mets ces 2 tbl en relation par équijointure, je ne peux
visulaiser l'ensemble des enregistrements dans la tbl_adherent_tmp. Si
je "joue" avec les inner join, je ne m'en sors pas. je ne suis pas un
pro.


Les données (enregistrements) de la tbl_adherent proviennent d'une
importation.
Dans la tbl_adherent, il y a entre autre les champs code postal et
ville.
J'ai remarqué que certaines valeurs du champ code postal de la
tbl_adherent étaient erronées. Soit il n'y a pas de code postal saisi,
soit le code postal saisi est inexistant, mais la ville est
correctement saisie.
Existe-t-il une procédure en vba qui permettrait de contrôler les
valeurs code postal de la tbl_adherent en fonction des valeurs code
postal de ma tbl_codespostaux et de modifier automatiquement les codes
postaux de ma tbl_adherent ?



Tu semble vouloir corriger un erreur de conception par
du code ou autres manipulations, fortement à déconseiller !



Effectivement, je suis obligé de manipuler les données importées, car
je ne peux pas faire autrement. Puisque j'aurais besoin de ces données
pour réaliser du publipostage. Un courrier sans code postal correct ou
ville correcte, c'est pas génial.

Dans tous les cas, il te faut une seule table T_Localite avec au minimum
les champs NoCode, CodePostal et NomLocalité
Toutes les tables qui contiennent des adresses mémoriseront
uniquement la valeur de NoCode.



Je dispose déjà de cette table (tbl_codespostaux) elle contient 3
champs (code postal, ville, bureau distributeur)

Sinon, pour persévérer dans ta voie, utilise une simple
requête de mise à jour...



C'est ce que j'ai fait. j'ai mis en oeuvre plusieur requête de mise à
jour, pour "corriger" les codes postaux erronés, les villes erronées
ainsi que les enregistrements qui ne contiennent ni code postal, ni
ville.

Merci pour vos conseils
Avatar
db
3stone a écrit :
re,

db wrote:
3stone a écrit :
Dans tous les cas, il te faut une seule table T_Localite avec au
minimum les champs NoCode, CodePostal et NomLocalité
Toutes les tables qui contiennent des adresses mémoriseront
uniquement la valeur de NoCode.







En répétant le nom de la localité autant de fois qu'elle a de codes
postaux ? Hum...



Je ne connais pas le système FR, mais je suppose que l'on n'a pas
des dixaines de correspondances... et pour deux ou trois, cela ne
vaut pas la peine d'ajouter une table supplémentaire

Si tu fais comme je te le propose, tu peux travailler avec
une liste déroulante qui indique :
- NoCode (caché)
- CodePostal
- Localité
- Canton/arrondissement/département ou autre distinctif.




<Mode discussion-théorique-juste-pour-causer on>

Si on tolère les doublons dans les localités, alors on ne vas pas
s'embêter à mettre un code sémantiquement sans intérêt dans l'adresse :
autant mettre directement le code postal dans la table :-)
En fait, jusqu'où doit-on respecter les évangiles de la conception de
bases de données, et jusqu'où peut-on "dénormaliser" la structure
physique des données ? Voilà bien une question à laquelle chacun répond
selon le contexte et son propre niveau de pragmatisme pour mettre en
place des solutions qui permettent les erreurs (:-P)
Enfin bon, c'était juste une réflexion comme ça.

<Mode discussion-théorique-juste-pour-causer on>

db
Avatar
Bear76
db a présenté l'énoncé suivant :

Bonjour,

Le problème, c'est qu'une même ville peut avoir plusieurs codes postaux, et
que le même code postal peut s'appliquer à plusieurs communes. On ne peut
pas toujours déduire la commune à partir du code postal. On ne peut pas
toujours déduire le code postal à partir de la commune (et il y a de nombreux
noms de commune identiques dans plusieurs départements)
La table T_Localite ne peut donc pas contenir le code postal : il faut une
table de relation Code Postal < -- > Code commune. Et je ne parle pas des
Cedex...

db



Bonsoir,
Comme indiqué dans ma réponse précédente (Pierre 3Stone), j'utilise une
table avec 3 champs cp_id, ville, bureau distributeur. Et ceci me
convient.
@+
Avatar
Michel__D
Bonjour,

Bear76 a écrit :
db a présenté l'énoncé suivant :

Bonjour,

Le problème, c'est qu'une même ville peut avoir plusieurs codes
postaux, et que le même code postal peut s'appliquer à plusieurs
communes. On ne peut pas toujours déduire la commune à partir du
code postal. On ne peut pas toujours déduire le code postal à partir
de la commune (et il y a de nombreux noms de commune identiques dans
plusieurs départements)
La table T_Localite ne peut donc pas contenir le code postal : il
faut une table de relation Code Postal < -- > Code commune. Et je ne
parle pas des Cedex...

db



Bonsoir,
Comme indiqué dans ma réponse précédente (Pierre 3Stone), j'utilise
une table avec 3 champs cp_id, ville, bureau distributeur. Et ceci me
convient.
@+



Tel que présenté, le problème n'est pas dans la description de cette
table mais dans la relation que cette table
peut avoir avec d'autre table et dans ce cas il y a un manque évident
de clé primaire qui servirait de liaison avec
les autres tables.
1 2