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

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

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.