Bonjour à tous !
Alors accrochez-vous ça va être un peu complexe à comprendre. Je vais essayer d'être la plus claire possible.
J'ai donc une feuille INSEE :
Où se trouve en première colonne le code postal, puis pw = le poids. La colonne Ville 1 correspond à la distance entre le code postal et la ville 1. La colonne Ville2 idem, c'est la distance entre le code postal et la ville2 etc...
La colonne zone depot : c'est la ville la plus proche des 3 du code postal. (Mon nombre de villes sera variable pour d'autres fichiers)
(Pour le côté représentation réel ceux sont 3 villes proches l'une de l'autre)
A côté se trouve le tableau "somme pw" :
ou se trouve la somme de chaque ville pour pw, l'objectif que je veux atteindre (c'est une répartition), et la colonne delta qui est la différence entre actuel et objectif.
Mon objectif : je veux pouvoir changer la répartition actuelle et me rapprocher de l'objectif. Tout en prenant les codes postaux les plus proches qu'une seule fois.
La méthode " à la main" serait donc de commencer la répartition par la ville ayant le delta minimum et négatif ici : VILLE3
donc pour tous les codes postaux de VILLE3 on les garde et on met dans la colonne G (nv depot) : ville3
Ensuite pour atteindre l'objectif il nous faut donc attribuer 10% (= delta*-1). Je dois donc sélectionner les codes postaux les plus proches de VILLE3
A la main je triais la colonne VILLE3 ordre croissant, je ne prends pas en compte les lignes où il y a déjà un nv dépôt et j'ajoute au fur et à mesure ville3 ds colonne G jusqu'à atteindre un nouveau pw (colonne L) >= à l'objectif (colonne J)
ensuite j'aimerai créer une boucle pr pouvoir passer à la prochaine ville qui a le prochain delta minimum, ici : VILLE2
(pour l'instant j'inscris un 0 dans le delta précédent et je relance ma macro)
donc on prend tous les codes postaux ayant nv dépot vide et zone depot=VILLE2 -> on inscrit ville2 ds nv depot
on trie col VILLE2 ordre croissant pr avoir les codes postaux restants les plus proches
et on ajoute ville2 ds colonne nv depot jusqu'à ce que le nv pw actuel soit >= objectif (c'est ce jusqu'à que je ne sais pas coder)
puis prendre la prochaine ville avec delta min, ici : VILLE1
comme c'est la dernière ville et que delta >0 je peux inscrire ds les lignes vides de colonne nv depot : ville1
Infos supp/recap :
On prend en premier le delta min et ainsi de suite
Lorsque delta_villeX est <0 on doit prendre tous les codes postaux avec colonne_zone_depot = "VILLEX" et colonne_nv_depot="" -> inscrire ds col_nv_depot = "VILLEX"
+ le restant de pw donc = delta_villeX que l'on trouve en triant la colonne VILLEX, qui ont colonne_nv_depot="" et on inscrit ds col_nv_depot ="VILLEX" jusqu'à ce que nv pw actuel >= objectif
Lorsque delta_villeX >0 on prends tous les codes postaux qui ont col_zone_depot="VILLEX" et colonne_nv_depot="" -> inscrire ds col_nv_depot="VILLEX"
Une fois la ville faite, je modifie le delta par 0 pour trouver le prochain delta minimum à la nouvelle relance de la macro, j'aimerai bien trouver autre chose et pouvoir lancer la macro une seule fois pr avoir tout le résultat en 1 coup
Je vous joins mon fichier excel, sachez que je devrais faire cette étape sur plus de 50 fichiers différents avec plus de 500 lignes, et le nombre de villes peut aller de 2 à une dizaine
J'espère avoir été claire, sinon n'hésitez pas à me poser des questions.
Je vous remercie d'avance à l'intérêt que vous porterez à ma requête !!
Dans l'attente de vous lire bonne journée![]()
Partager