Macro tableau double entrée meilleurs choix

Bonjour à tous,

Je dispose d'un tableau à double entrée avec des villes et leur distances en km.

Je souhaiterais créer une macro qui me permet de regrouper les villes par 3 selon leur proximité.

Jusque là c'est pas trop dur. Il suffit de sélectionner les 3 valeurs les plus faible dans une colonne ou ligne.

La difficulté est que une fois regroupée par 3 je vais les retirer de la liste et que peut être une des villes retirées été plus proche d'une autre qui est toujours dans le tableau.

Avec un exemple ce sera plus parlant

Exemple du problème :

Imaginons nous prenons Biarritz, Bayonne, Marseille, Nice. Comment faisons nous le tri ? En effet, la recherche commence par Bayonne pour une raison quelconque. Nous allons donc trouver Marseille et Biarritz. Si nous retirons ces deux villes de la liste et que nous faisons ensuite une recherche sur Nice, nous allons trouver des villes peut-être plus loin que Marseille (en particulier à l'Est)...

Comment faire pour être sur de sélection les 3 villes les plus proches sans altérer la sélection des suivantes ?

129distance-site.xlsx (14.77 Ko)

Bonjour,

Pour avoir la meilleure solution il faudrait explorer toutes les combinaisons ce qui parait impossible à moins d'avoir qcq siècles devant soit.

Créer un algorithme n'est pas évident non plus.

Je te propose la force brute (un peu amélioré, voir le code) : des combinaisons au hasard sont testées.

Plus tu laisses tourner, plus tu as de chance d'améliorer le résultat.

eric

130distance-site.xlsm (54.10 Ko)

Merci Éric ! Je suis en vacances cette semaine. Je regarde ça la semaine pro. En tout cas ca m'a l'air bien !


Merci Éric ! Je suis en vacances cette semaine. Je regarde ça la semaine pro. En tout cas ca m'a l'air bien !

Bonjour Eriiic,

Tout d'abord merci pour ton fichier !

J'ai cependant quelques questions,

1) A quoi correspond le kmMax ?

2) Comment est ce que je peux faire pour rajouter des lignes à mon tableau ? (mettre plus de site)

3) Enfin quand dans la feuil2 on a :

Index :

13 19 7

Ville :

LOUBE CONF6 CHABA

Je ne vois pas à quoi correspond les distances

Dans la ligne CHABA, aucune valeur n'est égal à 7

Merci de ton aide

Bonjour,

houlaaa, une semaine après j'ai un peu oublié...

Déjà une chose que j'ai oublié de te dire. Je fais des groupes de 3, je calcule les 3 kilométrages du groupe et je fais la somme des tous les kilométrage. C'est cette somme que je cherche à minimiser.

Dans l'exemple il reste une ville toute seule qu'il faudra regrouper manuellement.

1) A quoi correspond le kmMax ?

Je me suis dit que ne retenir qu'une seule solution n'était peut-être pas le mieux.

Conserver toutes les améliorations au fur et à mesure n'allait pas bien (les 1ères étaient élevées et ne servaient à rien).

Donc je ne sauvegarde en Feuil2 que si le kilométrage total est inférieur à kmMax.

Je l'ai évalué pour avoir une 1ère solution en moins d'une minute, et pour ne pas avoir trop de réponses non plus.

Si tu augmentes le 0.47 tu auras plus de solutions.

2) Comment est ce que je peux faire pour rajouter des lignes à mon tableau ? (mettre plus de site)

Il faut modifier le code. Mettre par exemple les '5 dernières sol' au dessus pour libérer toute la place.

La plage des distances (ici C2:X23) doit être nommée TableKm. Peut-être le faire dans le code pour éviter cette partie manuelle.

Dis-moi si tu ne t'en sens pas capable (même pour moi, une semaine après il me faudra un peu de temps...)

3) Enfin quand dans la feuil2 on a :

Je ne vois pas à quoi correspond les distances

Pour que ce soit plus rapide je travaille avec les index des villes.

7 est la 7ème ville : CHABA

D'où l'utilité du bouton Ville en haut.

Tu arrêtes la recherche avec Stop et tu peux convertir en nom des villes. Tu recliques dessus pour remettre les index (mais je l'avais intégré dans le code pour éviter les oublis il me semble) et tu peux relancer la recherche en conservant les résultats déjà trouvés.

eric

eriiic a écrit :

2) Comment est ce que je peux faire pour rajouter des lignes à mon tableau ? (mettre plus de site)

Il faut modifier le code. Mettre par exemple les '5 dernières sol' au dessus pour libérer toute la place.

La plage des distances (ici C2:X23) doit être nommée TableKm. Peut-être le faire dans le code pour éviter cette partie manuelle.

Dis-moi si tu ne t'en sens pas capable (même pour moi, une semaine après il me faudra un peu de temps...)

Je veux bien que tu m'aides, je ne suis pas très doué en vba, je ne m'y retrouve plus avec toutes les variables que tu as mis .

En fait je vais utilisé cette macro pour plusieurs tableaux de tailles différentes. Si je pouvais modifier la plage de distance simplement ce serait top.

Dans tout les cas je te remercie de ton aide !

Re,

Pas besoin de nommer la plage des distances, la macro s'en occupe.

A tester...

eric

111distance-site-v2.xlsm (55.90 Ko)

Merci encore une fois, j'ai testé la macro et elle fonctionne bien.

Seul problème, le temps...

Je vais chercher un moyen de diminuer le temps de recherche peut être avec un algo comme tu le proposais dans les post précédent.

Tu sais ça s'approche du problème du voyageur de commerce qui n'a pas d'algorithme de résolution.

Il faut tout explorer. Tu peux essayer d'optimiser mais pour chaque test ajouté c'est du temps de traitement en moins et tu explores moins de solutions par seconde.

Difficile de trouver un équilibre positif...

Bon courage

eric

oui, il reste toujours la solution de la carte et des cercles !

Sinon à partir de quel moment une solution est mémorisé en feuil2 ?

C'est ce que je t'ai expliqué lors de ta question sur kmMax.

eric

Rechercher des sujets similaires à "macro tableau double entree meilleurs choix"