XL 2019 Besoin d'aide calcul distance excel vba

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

mmaiga

XLDnaute Nouveau
Bonjour,

J'aurais besoin de votre aide. C'est à propos du calcul de la distance entre plusieurs coordonnées. Et faire trier de manière automatique les distances les plus proches parmis ces coordonnées. A savoir que les coordonnées ne sont pas ordonnées.

Vos suggestions seront les bien bienvenus.
Dans l'attente de votre retour
 
Merci @sylvanu pour ce retour rapide.

Vous trouverez ci-joint le fichier Excel.

L'idée est de trouver un doublon de PCI avec des cellules différentes dans un rayon de 15 km ou 20 km. La colonne B correspond à des cellules et la colonne D correspond aux valeurs de PCI suivi des coordonnées GPS . J'aimerais bien afficher dans la colonne E le doublon de PCI.

Si vous avez besoin de plus de précision je serais à votre disposition. J'espère que ma question a été claire..

Dans l'attente de votre retour...


A noter que j'ai enlevé quelques lignes car le fichier était trop volumineux.
 

Pièces jointes

Bonjour mmaiga,
Rien compris. Désolé.
1- Dans votre fichier vous avez déjà beaucoup de doublons avec même latitude, même longitude.
Par ex lignes 5 et 6 : 35299_001-61 et 35299_001-81, ou encore ligne 7 et 8 : 49373_001-61 et 49373_001-81
Ils seront fatalement doublons.
2- De ce que j'ai compris, pour chaque point définit par Lat et Long de chaque ligne, on recherche les autres points distants de moins de 20km ?
Si c'est ça, ça va être très très long en temps de calcul.
Et que faire si on trouve plusieurs points distant de moins de 20km ?
3- Si c'est bien ça, il faut recourir au VBA, mais acceptez vous des macros VBA ?


NB: pour trouver une distance entre deux points définis par leur lat et long, il suffit de faire par ex dans votre fichier en I2:
VB:
=ACOS(SIN(RADIANS(F2))*SIN(RADIANS(F3))+COS(RADIANS(F2))*COS(RADIANS(F3))*COS(RADIANS(G2-G3)))*6371
qui donnera la distance entre 35299_001-51 et 50416_001-51, soit 117.774 km.
 
Bonjour mmaiga,
Rien compris. Désolé.
1- Dans votre fichier vous avez déjà beaucoup de doublons avec même latitude, même longitude.
Par ex lignes 5 et 6 : 35299_001-61 et 35299_001-81, ou encore ligne 7 et 8 : 49373_001-61 et 49373_001-81
Ils seront fatalement doublons.
2- De ce que j'ai compris, pour chaque point définit par Lat et Long de chaque ligne, on recherche les autres points distants de moins de 20km ?
Si c'est ça, ça va être très très long en temps de calcul.
Et que faire si on trouve plusieurs points distant de moins de 20km ?
3- Si c'est bien ça, il faut recourir au VBA, mais acceptez vous des macros VBA ?


NB: pour trouver une distance entre deux points définis par leur lat et long, il suffit de faire par ex dans votre fichier en I2:
VB:
=ACOS(SIN(RADIANS(F2))*SIN(RADIANS(F3))+COS(RADIANS(F2))*COS(RADIANS(F3))*COS(RADIANS(G2-G3)))*6371
qui donnera la distance entre 35299_001-51 et 50416_001-51, soit 117.774 km.
Bonjour Sylvanu,

Je vais éclaircir d'avantage. Pour les cellules 61 et 81 que vous venez de citer ils sont les même PCI dans ce cas en terme de stratégie (pas de doublon) idem pour le 62/82 et 63/83 de la même cellule. Ce que je cherche approximativement c'est d'avoir le même PCI avec des cellules différentes dans un rayon de 15 à 20 KM.

2. A propos de de ta question, oui ce que je cherche.
3. Un code VBA est la bienvenue.


J'aimerais avoir cette approche via ce fichier ci-joint. Si j'arrive à afficher les sites tels que les villes sont affiché ça sera parfait pour moi. Le reste je peux me débrouiller.

J'ai essayé de l'adapter avec mon cas, mais je n'arrive pas car il m'affiche des erreurs dans les calcules
 

Pièces jointes

1671981239086.png




Voici le résultat. Les calculs ne sont pas correctes. Cette fois-ci je pris par site pour éviter d'avoir le doublon cette fois ci
 
C'est le 3eme fichier différent. 😡 Donc trois fois le travail.
Pourquoi ne pas mettre le bon fichier et les bonnes explications dès le premier post ?
Je n'avais pas envie de repartir de 0, donc je suis reparti de mon fichier. Voir PJ.
Le temps d'exécution est autour de 5s sur mon PC.
J'ai rajouté dans le statusbar l'évolution des calculs, ainsi que le temps de calcul en G12.
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
XL 2013 VBA Excel
Réponses
2
Affichages
617
Réponses
8
Affichages
561
Réponses
4
Affichages
706
  • Question Question
Microsoft 365 Code vba
Réponses
3
Affichages
496
Réponses
16
Affichages
1 K
Retour