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

Pb formulaire figé

3 réponses
Avatar
brinco
Bonjour,

j'ai un petit pb à vous soumettre. Voila donc mon soucci: j'ai crée un
formulaire avec des champs 'adresse', 'code postal' et 'ville' entre autres.
Les zones 'adresse' et 'code' postal font partie de la même table et j'ai
crée une table à part pour le code postal et la ville correspondante.

Si je définit le code postal comme clé primaire, je n'ai pas de souccis et
mon formulaire va correctement récupérer la valeur du champs 'ville' dans la
seconde table, via le code postal, par une requête.

En récupérant la liste complète des codes postaux de France, je me suis
apperçu que le code postal n'était pas unique et ne pouvait donc pas être
utilisé comme clé primaire. J'ai donc crée une nouvelle table des codes
postaux avec un numéro de référence comme clé primaire et dans mon formulaire
une liste déroulante pour le libellé de la ville (puisqu'un même code postal
peut correspondre à plusieures villes).

Et là, c'est le drâme : mon formulaire est complètement figé et je ne peux
plus modifier aucune valeur sur les champs de mon formulaire, tout est bloqué.

Voyez vous une explication et surtout un moyen de m'en sortir?

Merci d'avance de vos suggestions.
Brinco.

3 réponses

Avatar
david
salut,

1° : le code postal n'est pas le code commune. Il n'est pas unique. Il
correspond au bureau distributeur (le plus souvent les communes de + de
2000 habitants ou tout les 10 Km maxi).
De plus, l'inverse est aussi vrai. Les grandes villes (Paris, Lille,
Marseille, ...) dispose d'arrondissement ayant chacun son propre code
postal.Enfin, une même commune (si elle excéde 20000 habitants)
dispose le plus souvent de plusieurs bureaux distributeurs, donc
plusieurs Code postaux valide.

Sinon, pour en revenir à ton cas. Il faut stocker l'information de
code postal et de ville dans ta table d'adresse (sous forme de clé
étrangère).
Ensuite, il faut représenter la saisie de cette clé (et non pas de la
données qu'elle représente)
Tu as deux possibilités :
- utiliser une liste déroulante pour le choix du code postal
(et de la ville)
- utiliser une zone de texte (indépendante) pour la saisie
du code postal
- dans ce cas, il faut faire un code VBA pour
rechercher la valeur de clé
correspondant au code postal saisie. En fait tu devras
ajouter un formulaire
pour choisir le bon couple code postal/ville

A+
Avatar
tonio
Bonjour,
Bonjour,


j'ai un petit pb à vous soumettre. Voila donc mon soucci: j'ai crée un
formulaire avec des champs 'adresse', 'code postal' et 'ville' entre autres.
Les zones 'adresse' et 'code' postal font partie de la même table et j'ai
crée une table à part pour le code postal et la ville correspondante.

Si je définit le code postal comme clé primaire, je n'ai pas de souccis et
mon formulaire va correctement récupérer la valeur du champs 'ville' dans la
seconde table, via le code postal, par une requête.

En récupérant la liste complète des codes postaux de France, je me suis
apperçu que le code postal n'était pas unique et ne pouvait donc pas être
utilisé comme clé primaire. J'ai donc crée une nouvelle table des codes
postaux avec un numéro de référence comme clé primaire et dans mon formulaire
une liste déroulante pour le libellé de la ville (puisqu'un même code postal
peut correspondre à plusieures villes).
Utilise cette table qui contient en plus le N° INSEE de la ville qui

lui est unique
http://officesystem.access.free.fr/ex_codes_postaux.htm
bonus département et région


Et là, c'est le drâme : mon formulaire est complètement figé et je ne peux
plus modifier aucune valeur sur les champs de mon formulaire, tout est
bloqué.

Voyez vous une explication et surtout un moyen de m'en sortir?



Ensuite dans ton formulaire (dans mon exemple il s'appelle "Frm_Client"
crée 2 listes déroulantes
[Numero_Codepostal] et [Nom_Commune]

données Numero_Codepostal
SELECT Tbl_Communes.Numero_Codepostal, Tbl_Communes.Nom_Commune,
Tbl_Communes.Numero_Commune, Tbl_Départements.Nom_Departement,
Tbl_Regions.Nom_Région
FROM Tbl_Regions INNER JOIN (Tbl_Départements INNER JOIN Tbl_Communes
ON Tbl_Départements.Numéro_Departement =
Tbl_Communes.Numéro_Departement) ON Tbl_Regions.Numéro_Région =
Tbl_Départements.Numéro_Région
ORDER BY Tbl_Communes.Numero_Codepostal, Tbl_Communes.Nom_Commune;

données Nom_Communes
SELECT Tbl_Communes.Nom_Commune, Tbl_Communes.Numero_Codepostal,
Tbl_Communes.Numero_Commune, [Formulaires]![Frm_Client]![CodePostal] AS
Expr1
FROM Tbl_Communes
WHERE
(((Tbl_Communes.Numero_Codepostal)=[Formulaires]![Frm_Client]![CodePostal]))
OR ((([Formulaires]![Frm_Client]![CodePostal]) Is Null))
ORDER BY Tbl_Communes.Nom_Commune,
[Formulaires]![Frm_Client]![CodePostal];

en code tu saisis
Private Sub Numero_Codepostal_AfterUpdate()
Me.Nom_Commune = Me.Numero_Codepostal.Column(1)
Me.Numero_Commune = Me.Numero_Codepostal.Column(2)
Me.Nom_Département = Me.Numero_Codepostal.Column(3)
Me.Nom_Région = Me.Numero_Codepostal.Column(4)
End Sub
Private Sub Numero_Codepostal_Enter()
Me.Numero_Codepostal.Dropdown
End Sub
Private Sub Nom_Commune_AfterUpdate()
Me.Numero_Codepostal = Me.Nom_Commune.Column(1)
Me.Numero_Commune = Me.Numero_Codepostal.Column(2)
Me.Nom_Département = Me.Numero_Codepostal.Column(3)
Me.Nom_Région = Me.Numero_Codepostal.Column(4)
End Sub
Private Sub Nom_Commune_Enter()
Me.Nom_Commune.Dropdown
End Sub

Merci d'avance de vos suggestions.
De rien


Brinco.


--
Tonio
Meilleurs noeuds et beaux nénés

Avatar
brinco
Bonjou,

Désolé du silence mais j'avais plein de choses à faire. J'ai bien essyé ta
méthode, mais elle ne fonctionne pas. Mes deux zones de menu déroulant se
trouvent être complètement vides et lorsque j'essaie d'écrire quelque chose,
j'ai le message 'la valeur ne fait pas partie de la liste de données...' et
je ne peux pas mettre à jour. Pire, mon formulaire est de toutes façon figé.

J'ai également testé la solution présentée sur le lien Internet que tu
indiques dans ton mail. Là, ça marche, j'ai bien ma liste de communes et de
codes postaux mais les autres champs sont figés, donc j'en revient au même.


Bonjour,
Bonjour,


j'ai un petit pb à vous soumettre. Voila donc mon soucci: j'ai crée un
formulaire avec des champs 'adresse', 'code postal' et 'ville' entre autres.
Les zones 'adresse' et 'code' postal font partie de la même table et j'ai
crée une table à part pour le code postal et la ville correspondante.

Si je définit le code postal comme clé primaire, je n'ai pas de souccis et
mon formulaire va correctement récupérer la valeur du champs 'ville' dans la
seconde table, via le code postal, par une requête.

En récupérant la liste complète des codes postaux de France, je me suis
apperçu que le code postal n'était pas unique et ne pouvait donc pas être
utilisé comme clé primaire. J'ai donc crée une nouvelle table des codes
postaux avec un numéro de référence comme clé primaire et dans mon formulaire
une liste déroulante pour le libellé de la ville (puisqu'un même code postal
peut correspondre à plusieures villes).
Utilise cette table qui contient en plus le N° INSEE de la ville qui

lui est unique
http://officesystem.access.free.fr/ex_codes_postaux.htm
bonus département et région


Et là, c'est le drâme : mon formulaire est complètement figé et je ne peux
plus modifier aucune valeur sur les champs de mon formulaire, tout est
bloqué.

Voyez vous une explication et surtout un moyen de m'en sortir?



Ensuite dans ton formulaire (dans mon exemple il s'appelle "Frm_Client"
crée 2 listes déroulantes
[Numero_Codepostal] et [Nom_Commune]

données Numero_Codepostal
SELECT Tbl_Communes.Numero_Codepostal, Tbl_Communes.Nom_Commune,
Tbl_Communes.Numero_Commune, Tbl_Départements.Nom_Departement,
Tbl_Regions.Nom_Région
FROM Tbl_Regions INNER JOIN (Tbl_Départements INNER JOIN Tbl_Communes
ON Tbl_Départements.Numéro_Departement =
Tbl_Communes.Numéro_Departement) ON Tbl_Regions.Numéro_Région =
Tbl_Départements.Numéro_Région
ORDER BY Tbl_Communes.Numero_Codepostal, Tbl_Communes.Nom_Commune;

données Nom_Communes
SELECT Tbl_Communes.Nom_Commune, Tbl_Communes.Numero_Codepostal,
Tbl_Communes.Numero_Commune, [Formulaires]![Frm_Client]![CodePostal] AS
Expr1
FROM Tbl_Communes
WHERE
(((Tbl_Communes.Numero_Codepostal)=[Formulaires]![Frm_Client]![CodePostal]))
OR ((([Formulaires]![Frm_Client]![CodePostal]) Is Null))
ORDER BY Tbl_Communes.Nom_Commune,
[Formulaires]![Frm_Client]![CodePostal];

en code tu saisis
Private Sub Numero_Codepostal_AfterUpdate()
Me.Nom_Commune = Me.Numero_Codepostal.Column(1)
Me.Numero_Commune = Me.Numero_Codepostal.Column(2)
Me.Nom_Département = Me.Numero_Codepostal.Column(3)
Me.Nom_Région = Me.Numero_Codepostal.Column(4)
End Sub
Private Sub Numero_Codepostal_Enter()
Me.Numero_Codepostal.Dropdown
End Sub
Private Sub Nom_Commune_AfterUpdate()
Me.Numero_Codepostal = Me.Nom_Commune.Column(1)
Me.Numero_Commune = Me.Numero_Codepostal.Column(2)
Me.Nom_Département = Me.Numero_Codepostal.Column(3)
Me.Nom_Région = Me.Numero_Codepostal.Column(4)
End Sub
Private Sub Nom_Commune_Enter()
Me.Nom_Commune.Dropdown
End Sub

Merci d'avance de vos suggestions.
De rien


Brinco.


--
Tonio
Meilleurs noeuds et beaux nénés