Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
1434 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [EXCEL] Liste clients -> recherche géographique

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

[EXCEL] Liste clients -> recherche géographique

n°1909575
samurai_ka​gemusha
Posté le 29-07-2009 à 00:25:17  profilanswer
 

Bonsoir,
 
Désolé pour pour le titre peu explicite de mon post, j'ai pas trouvé mieux... :D  
 
Voici mon problème:
Je souhaite créer un listing de client avec pour chaque client, différentes infos: nom société, nom contact, tel, adresse, fax, email,...mais surtout le département où se trouve la société en question.
La création de cette "base de données" ne devrait pas trop me poser trop de soucis. Par contre, j'aimerais mettre en place une fonction recherche avancée qui donnerait en sortie:
- la liste des clients pour un département donné (1ère option)
- la liste des clients pour un département donné et les départements limitrophes (2nde option)
- idem ci-dessus + départements limitrophes aux département limitrophes... :sweat:  
 
J'avais initialement pensé à une recherche par la région du département concerné , mais je me suis rendu compte que cela poserait problème.
 
Comment auriez-vous traité cette problématique?
 
Merci!


Message édité par samurai_kagemusha le 29-07-2009 à 00:31:27
mood
Publicité
Posté le 29-07-2009 à 00:25:17  profilanswer
 

n°1909592
Deamon
Posté le 29-07-2009 à 08:21:47  profilanswer
 

A mon avis il faut que tu fasses une matrice qui contient les départements en colonne et sur les lignes et à l'intérieur la distance qui les séparent. Donc ta matrice est symétrique par la diagonale.

 

Ensuite t'as une liste dans excel pour choisir le type et une pour le dépt. Suivant le dept choisi ça va remplir une colonne de distance pour chaque ligne de ton tableau. Il ne reste plus qu'à filtrer sur cette colonne en fonction de la distance.

 

Ca se fait en VBA la mécanique, je pense pas qu'on puisse le faire direct avec Excel.


Message édité par Deamon le 29-07-2009 à 08:23:37
n°1910043
samurai_ka​gemusha
Posté le 29-07-2009 à 17:52:51  profilanswer
 

Merci pour ta réponse.
 
J'ai un peu du mal à comprendre ta réflexion. Comment évaluer la distance entre 2 départements?

n°1910132
Turkleton
I don't quite understand you
Posté le 30-07-2009 à 06:54:07  profilanswer
 

samurai_kagemusha a écrit :

Merci pour ta réponse.
 
J'ai un peu du mal à comprendre ta réflexion. Comment évaluer la distance entre 2 départements?


Tout bêtement, tu n'as qu'à compter "1" pour chaque département limitrophe, "2" s'il faut traverser un autre département entre celui de départ et celui d'arrivée, etc. Ça ne tiendra évidemment pas compte des distances en km, mais ça sera beaucoup plus rapide à mettre en place, et ça a l'air de répondre à tes 2nde et 3ème options.


---------------
If you think it could look good, then I guess it should
n°1910137
samurai_ka​gemusha
Posté le 30-07-2009 à 07:57:08  profilanswer
 

J'ai pensé à cela, mais vu le nombre de départements (100), ca va me faire un sacré tableau à remplir.
 
J'ai pensé à une autre solution également qui consisterait à schématiser la carte de la France sous forme de tableau, mais c'est pas évident non plus.

n°1910138
Turkleton
I don't quite understand you
Posté le 30-07-2009 à 08:06:47  profilanswer
 

samurai_kagemusha a écrit :

J'ai pensé à cela, mais vu le nombre de départements (100), ca va me faire un sacré tableau à remplir.
 
J'ai pensé à une autre solution également qui consisterait à schématiser la carte de la France sous forme de tableau, mais c'est pas évident non plus.


Houla, ton autre solution me parait encore plus compliquée qu'un gros tableau de 100*100/2 = 5000 cases à remplir  :p  
Tu pourrais optimiser en ne remplissant que les "1", c'est-à-dire les départements directement limitrophes, et en utilisant une fonction récursive ensuite.


---------------
If you think it could look good, then I guess it should
n°1910141
Deamon
Posté le 30-07-2009 à 08:22:35  profilanswer
 

De tout façon je ne vois pas comment on peut remplir automatiquement le tableau donc commence maintenant. ;)
 
La fonction récursive Turkleton n'est vraiment pas évidente. Faut un algo qui calcule la plus courte distance.

n°1910149
Turkleton
I don't quite understand you
Posté le 30-07-2009 à 08:54:29  profilanswer
 

Deamon a écrit :

De tout façon je ne vois pas comment on peut remplir automatiquement le tableau donc commence maintenant. ;)
 
La fonction récursive Turkleton n'est vraiment pas évidente. Faut un algo qui calcule la plus courte distance.


Tu trouves ?  :??:  Mince, je pensais au contraire que c'était un moyen simple de pas se prendre la tête avec des notions de distance kilométrique, ou de remplissage de gros tableaux. Ou peut-être voulais-tu dire que la récursivité n'est pas facile à appréhender quand on débute en programmation (je ne sais pas quel est le niveau de samurai_kagemusha) ?


---------------
If you think it could look good, then I guess it should
n°1910152
Deamon
Posté le 30-07-2009 à 09:00:20  profilanswer
 

Explique ta méthode alors car je vois pas bien comment tu veux faire.

 

Car si tu prends les voisins de chaque département limitrophe tu vas te retrouver avec par exemple des départements de niveau 1 qui seront considérés comme des niveaux 2 ou plus. Après faut voir si c'est génant.

Message cité 1 fois
Message édité par Deamon le 30-07-2009 à 09:03:40
n°1910157
Turkleton
I don't quite understand you
Posté le 30-07-2009 à 09:17:14  profilanswer
 

Deamon a écrit :

Explique ta méthode alors car je vois pas bien comment tu veux faire.
 
Car si tu prends les voisins de chaque département limitrophe tu vas te retrouver avec par exemple des départements de niveau 1 qui seront considérés comme des niveaux 2 ou plus. Après faut voir si c'est génant.


Je suis peut-être resté trop vague, je vais m'expliquer.  ;)  
 
On crée un tableau à deux dimensions exactement comme tu l'as dit avec les départements en colonne et ligne, et la distance à l'intersection des deux. Mais pour cette distance, on ne remplit que les cases des départements limitrophes, avec un "1". Exemple : le_tableau[Finistère][Morbihan]=1, ainsi que le_tableau[Finistère][Côtes-d'Armor]. Par contre, on laisse à "0" toutes les autres cases de le_tableau[Finistère][XXX], ça sera ça de remplissage en moins.
 
Ensuite, on crée une fonction récursive, avec entre autres en paramètre le niveau d'exploration qu'on veut : 1 = juste le département demandé (option 1 dans le premier post), 2 = départements limitrophes à celui demandé (option 2), 3 = départements limitrophes aux départements de l'option 2 (option 3), etc si on veut aller plus loin.
 
Dans cette fonction, on retourne tous les clients du département demandé, on décrémente la variable d'exploration, et tant qu'elle n'est pas égale à 0, on fait une boucle pour tester tous les "le_tableau[département_demandé][département_de_la_boucle]". Si c'est égal à "1" alors on rappelle récursivement cette fonction, avec toujours la variable d'exploration en paramètre (qui est décrémentée localement à chaque passage), et le nouveau département à traiter. Et normalement, ça fonctionne comme sur des roulettes.  :)


Message édité par Turkleton le 30-07-2009 à 09:25:09

---------------
If you think it could look good, then I guess it should
mood
Publicité
Posté le 30-07-2009 à 09:17:14  profilanswer
 

n°1910160
Deamon
Posté le 30-07-2009 à 09:29:38  profilanswer
 

Tu vas avoir une boucle infinie si tu n'enregistres pas les départements déjà sélectionnés pour les supprimer de la boucle.  
Car sinon par exemple on suppose que les 5 valeurs sont des départements avec A qui touche à B1 et B2 :
A B1 C1
   B2 C2
Ton algo va faire par exemple : A -> B1 -> C1 -> C2 -> B2 -> B1 ->...
B2 sera considéré en plus comme un dépt à une distance 4 alors qu'il est limitrophe.

n°1910172
Turkleton
I don't quite understand you
Posté le 30-07-2009 à 10:01:52  profilanswer
 

Deamon a écrit :

Tu vas avoir une boucle infinie si tu n'enregistres pas les départements déjà sélectionnés pour les supprimer de la boucle.  
Car sinon par exemple on suppose que les 5 valeurs sont des départements avec A qui touche à B1 et B2 :
A B1 C1
   B2 C2
Ton algo va faire par exemple : A -> B1 -> C1 -> C2 -> B2 -> B1 ->...
B2 sera considéré en plus comme un dépt à une distance 4 alors qu'il est limitrophe.


Rha  oué, ça marcherait (en limitant juste à ne pas explorer le département "parent" ) que s'ils étaient limitrophes un à un, mais un département peut être limitrophe de plusieurs, ça peut faire une boucle au 2è niveau d'exploration toussa...  :sweat:  
Y'a plus qu'à rajouter un tableau pour y enregistrer tous les département déjà explorés et faire un test dessus dans la fonction. Ça commence à ressembler à une usine à gaz, mais je reste néanmoins sur mon idée que c'est plus simple que les autres solutions (en tout cas, moi je partirais sur celle-ci si je devais faire une telle application  :D Mais j'aime bien me prendre la tête aussi...)


---------------
If you think it could look good, then I guess it should
n°1910181
Deamon
Posté le 30-07-2009 à 10:15:31  profilanswer
 

Oui moi aussi je préfère ta solution même si ça prend plus la tête plutôt que de remplir bêtement un tableau. ;)

n°1910197
Turkleton
I don't quite understand you
Posté le 30-07-2009 à 10:37:25  profilanswer
 

Deamon a écrit :

Oui moi aussi je préfère ta solution même si ça prend plus la tête plutôt que de remplir bêtement un tableau. ;)


Bin c'est surtout que le remplissage du tableau ne se fait pas du tout "bêtement" (ça serait si simple...) ! D'énormes difficultés vont surgir si tu veux remplir autrement que juste en mettant les départements limitrophes.
Si tu prends l'option distance kilométrique, quel point de référence prends-tu à l'intérieur d'un département ? Faut calculer toutes les distances entre chaque départements ensuite, v'la le boulot...
Si tu prends l'option distance en terme de nombre d'autres départements à traverser pour arriver d'un point A à un point B, c'est super subjectif suivant le chemin que tu prends.
 
Reste plus qu'à savoir ce qu'en pense samurai_kagemusha  ;)


---------------
If you think it could look good, then I guess it should

Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  [EXCEL] Liste clients -> recherche géographique

 

Sujets relatifs
Bouton Excel associé à une macrorecherche matrice php
[VBA][Excel][Word] Redimensionner Tableau[ VBA EXCEL > CALC ]
[VBA Excel] Importer ldif dans excel[VBA Excel] garder la mise en forme dans une textbox [RESOLU]
[RESOLU] [VBS] copier uniquement les lignes filtrées sous ExcelExcel: boucle pour plusieurs commandbutton
problème de filtre vba macro ExcelExtraire un formaulaire dans un tableau sur Excel
Plus de sujets relatifs à : [EXCEL] Liste clients -> recherche géographique


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR