Regrouper code géographiques selon critères de distance et de taille

VMarine

XLDnaute Nouveau
Bonjour !

Je vous explique mon objectif : j'ai des codes (géograpiques), caractérisé par une taille (ex taille de pop, ici ETP) et des coordonnées x et y (point de référence du code).
Je cherche a former des regroupements sous deux conditions : la distance entre les codes (je pose un Dmax) et la taille totale du groupe formé (je souhaite que les groupes soient entre ETP min et ETP max)
Je fixe également un code de départ.
Mon idée serait de créer une macro qui construit petit a petit les groupes.

Partant du code de départ, je cherche le code le plus proche.
Si la somme des ETP des deux codes est <ETP max je regroupe les 2 codes.
Je définis alors un nouveau code (rassemblant les deux) et dont le point de ref est le barycentre des 2 codes, pondéré par la taille de chacun.
Si la somme des ETP est également < ETP min, je cherche un nouveau code a ajouter au groupe pour atteindre la taille requise. (cette fois je compare les distance entre les codes et le barycentre formé) ... et ainsi de suite
Sinon, si je suis entre ETP min et max, je considère le groupe comme formé. J'arrete la boucle,
Je défini un nouveau point de départ et je recommence un groupe.

Malheuresement je galère beaucoup beaucoup avec vba !
je pensais faire un tableau modélisant mon code de départ et ses caractéristiques et un autre tableau modélisant les autres codes, et les distances entre chacun et le code de départ.
puis faire une boucle while, tant que la taille de mon centre n'a pas atteind ETP min<<ETP max je recherche le code le plus proche, calcule le barycentre et ainsi de suite...

Pensez vous que ce soit la bonne méthode pr faire ca. et pourriez vous m'aider svp ?
Merci d'avance,

Marine
 

Pièces jointes

  • GroupesCodes.xlsm
    23.5 KB · Affichages: 31

mromain

XLDnaute Barbatruc
Re : Regrouper code géographiques selon critères de distance et de taille

Bonsoir Marine, le forum

Ton besoin a le mérite d'être clair :)
Par contre, cela semble très compliqué...

Voici une visualisation des données que tu nous as fourni :
attachment.php


Personnellement, je vois mal comment automatiser la tâche. On peut toujours la faciliter par contre.
Par simple curiosité, combien de données as-tu réellement ? Sont-elles toutes présentes dans le fichier ?

A+
 

Pièces jointes

  • Image1.png
    Image1.png
    37.1 KB · Affichages: 62
  • Image1.png
    Image1.png
    37.1 KB · Affichages: 91
  • Image1.png
    Image1.png
    37.1 KB · Affichages: 85

VMarine

XLDnaute Nouveau
Re : Regrouper code géographiques selon critères de distance et de taille

Bonjour !!

Alors en effet j'ai pas mis toutes mes données. En tout j'aurai 800 à 900 lignes.
Pour la visualisation, en fait on utilise un logiciel sig. Donc on aura un fond de carte avec les codes découpant le territoire. et ensuite on représente les points "centroïdes" qui nous servent de points référents pour calculer les distance de code à code. A la fin on pourra donc faire apparaitre le regroupement de codes sur la zone entière...
je me rends bien compte de la complexité du truc... c'est bien là mon malheur ! je n'apprends à coder sur vba que depuis quelques jours...

Merci de votre aide !!

Marine
 

VMarine

XLDnaute Nouveau
Re : Regrouper code géographiques selon critères de distance et de taille

ReBonjour !!

En creusant la question je suis tombée sur ce forum dans lequel une question très similaire a été posée (même vraiment très semblable à en croire les précisions données dans la discussion)
[XL-2010] Faire des regroupements selon la distance entre des lieux
je vais donc décortiquer les solutions proposées ... voir comment cela pourrait être adapté, ça peut toujours aider...

Merci de votre aide !

Marine
 

VMarine

XLDnaute Nouveau
Re : Regrouper code géographiques selon critères de distance et de taille

Bonsoir,

Voilà où j'en suis :
en m'inspirant de la discussion trouvée sur l'autre forum, je pensais faire :
je crée un feuille avec les codes, les ETP associés, et longitude et latitude du point de ref
je place en première ligne le code de départ
ensuite je calcule les distance entre chaque code et ce code de départ, et je trie le tableau (sauf première ligne) pour avoir ces distances par ordre croissant.

Ensuite je pense essayer d'ajouter une colonne indiquant le numéro de groupe pour suivre l'evolution des regroupements.
donc Ligne 1 et ligne 2 (code le plus proche) devienne G1 si la somme de leurs ETP est inférieurs ) ETPmax

Puis si somme ETP < ETP min alors je dois continuer a ajouter des codes au groupe.
Je vais essayer de créer une fonction qui calcule les distances de nouveau. mais je voudrais calculer la distance entre chaque code restant et le barycentre des codes 1 et 2, pondéré par ETP de chacun.

Quand on atteind ETP min, alors G1 est terminé, on commence a former G2 sur le même principe.

...
Je poursuis mes tentatives de codage mais je galère pas mal...
si vs avez une idée, déjà de ce qui beug dans la fonction distance de l'excel joints, ...

merci d'avance de votre aide !

Marine
 

Pièces jointes

  • beug macro.xlsm
    33.3 KB · Affichages: 22
  • beug macro.xlsm
    33.3 KB · Affichages: 31
  • beug macro.xlsm
    33.3 KB · Affichages: 24

Discussions similaires

Réponses
93
Affichages
2 K
Réponses
12
Affichages
347
  • Résolu(e)
Microsoft 365 Taille UserForm
Réponses
3
Affichages
376

Statistiques des forums

Discussions
312 371
Messages
2 087 711
Membres
103 649
dernier inscrit
soltani soltani