Remplir automatiquement le nom d'une comune en fonction d'un code postal.

Soyez le premier à donner votre avis sur cette source.

Vue 8 640 fois - Téléchargée 613 fois

Description

Ce source permet à partir de deux TEdit de récupérer le nom d'un comune.

Dans le premier TEdit vous rentrez un code postal, et en cliquant sur le deuxième TEdit, le nom de la comune est remplie automatiquement dans ce dernier.

Dans le fichier .zip j'ai mis le fichier .txt contenant tous les codes postaux de France.

PS: dans mon source le TEdit du code postal est "Edit4" celui du nom de comune est "ComboBox3" et le code est à mettre dans le "OnExit" du "TEdit4".

PS(bis): je débute un peu en delphi, donc veuillez excuser mes erreurs, j'ai essayé de commenter au maximum mon source.

Source / Exemple :


var
ListCP         :TStringList;

procedure TForm1.FormCreate(Sender: TObject);
begin
  ListCP := TstringList.Create;
  if fileexists('CpList.txt') then ListCP.LoadFromFile('CpList.txt') else
  begin
   MessageDlg('Fichier "CpList.txt" non trouvé.',mtError,[mbOk],0);
   application.Terminate;
  end;
end;

procedure TForm1.Edit4Exit(Sender: TObject);
var
  i           :Integer;
  CodePostal  :String;
  Commune     :String;
begin
  if length(Edit4.Text)<>5 then exit;
  ComboBox3.Clear;

  // permet suivant le code postal, d'aller directement plus loin dans la liste,
  // ce qui divise le temps de parcours de la liste
  if(Edit4.Text > '21121')then i:=7876
  else if(Edit4.Text > '38350')then i:=15758
  else if(Edit4.Text > '57370')then i:=23638
  else if(Edit4.Text > '71960')then i:=31513
  else if(Edit4.Text > '99100')then i:=39185
  else i:=0;

  while not ((i=ListCP.Count) or (CodePostal=Edit4.Text))do
  begin
    i:=i+1;
    Codepostal := Copy(ListCP.Strings[i], 1, 5);    // récupération du code postal
  end;

  while not ((i=ListCP.Count) or (Codepostal<>Edit4.Text))do
  begin
    Codepostal := Copy(ListCP.Strings[i], 1, 5);    // récupération du code postal
    Commune := Copy(ListCP.Strings[i], 7, Length(ListCP.Strings[i])); // récupération du nom de la comune
    if((Codepostal=Edit4.Text) and (Edit4.Text < '98891'))then
    begin
      ComboBox3.Items.Add(Commune);   // ajout de la commune dans la combobox
      Edit6.Text := 'France';
    end
    else if((Codepostal=Edit4.Text) and (Edit4.Text > '98891'))then Edit6.Text := Commune;
    i:=i+1;
  end;

  ComboBox3.Text := ComboBox3.Items[0];
end;

Conclusion :


- Comme vous le verrez dans les commentaires plus bas il y a le problème de bureau de distribution qui s'annonce très embétant à traiter, mais qui ne m'interresse pas dans mon cas puisque mon code s'intégre dans un masque de saisie où l'utilisateur choisira la commune dans laquelle il habite.

Codes Sources

A voir également

Ajouter un commentaire

Commentaires

Messages postés
30
Date d'inscription
lundi 19 juillet 2004
Statut
Membre
Dernière intervention
8 novembre 2004

je code sa ce week-end et je te dirais ca, mais normalement ca roule, merci beaucoup pour ton coup de main
Messages postés
2226
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
13
voila j'ai trouvé le pb, je l'ai réglé et j'ai mis a jour mon source sur mon site (http://diabloporc.free.fr/creations.php)
ça te va ?
Messages postés
30
Date d'inscription
lundi 19 juillet 2004
Statut
Membre
Dernière intervention
8 novembre 2004

ben la g pas énormément de temps depuis hier, mais à partir de ce soir je pars sur ton source, donc moi sa m'arrange si tu trouve la solution à notre problème ;-)
Messages postés
2226
Date d'inscription
dimanche 5 octobre 2003
Statut
Modérateur
Dernière intervention
18 novembre 2010
13
cedflow > donc tu prends pour base mon source ou celui de debiars ? dans mon cas je n'ai pas indéxé, mais dans les deux cas la rechch est rapide.
Dans mon premier source, il fallait faire plus de 39000 fois le tour de la boucle pour trouver, maintenant il en faut moins de 20 :) merci la dichotomie (je n'y avait pas pensé avant, merci debiars)
Messages postés
30
Date d'inscription
lundi 19 juillet 2004
Statut
Membre
Dernière intervention
8 novembre 2004

de mon coté, pour le programe que j'ai a réalisé, je souhaite pas trop prendre le temps d'étudier l'indexation vu mon nivo, je m'y attaquerais quand j'aurais fini le programme et que j'aurais un peu plus de temps pour m'amuser cette fois avec l'indexation.
Afficher les 43 commentaires

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.