XL 2013 Trouver les communes dans un rayon km

tatiak

XLDnaute Barbatruc

Fichiers joints

Dernière édition:

arthour973

XLDnaute Barbatruc
Supporter XLD
Re Pierre,

Merci d'être encore là ;)

J'ai téléchargé la base sur le site indiqué.

Mais ça plante à un autre endroit :
J'ai copié-collé du fichier de la base :
SAINT-JUST-D'AVRAY
69870

et ça beug ici :

beug.jpg

En revanche : VILLE-D'AVRAY (92410) Fonctionne.
C'est à rien ni comprendre :confused:

Mais si c'est trop de temps pour toi, je comprendrai.
Amicalement,
arthour973,
 
Dernière édition:

job75

XLDnaute Barbatruc
Bonsoir Lionel et les autres,

C'est évident : pour éviter tout problème la liste des villes doit avoir été construite à partir de la base étudiée.

A+
 

arthour973

XLDnaute Barbatruc
Supporter XLD
Bonsoir Gérard,

Merci d'être encore là :)

Normalement, c'est le cas car j'ai téléchargé la base indiqué par Pierre qui est la basse de recherche sur le site (si j'ai bien compris).
Et j'ai copié la commune à rechercher à partir de cette base.
@+
 

arthour973

XLDnaute Barbatruc
Supporter XLD
Bonjour PIerre,
Bonjour à toutes et à tous.

J'ai fait pas mal de test et jusqu'à maintenant ça marche bien et je me servirais de ton fichier.
Je t'en remercie.

J'aimerais aussi me servir des infos d'un autre site :
http://www.codepostauxfrance.com/rayon-de-recherche-par-code-postal
rrésultat recherche sur site.jpg

Tu me sembles être très fort en importations des informations sites < excel.
Je me permets de te demander s'il est possible d'importer toutes les communes trouvées de ce site dans un fichier excel ?

Amicalement,
arthour973,
 

tatiak

XLDnaute Barbatruc
...
Je me permets de te demander s'il est possible d'importer toutes les communes trouvées de ce site dans un fichier excel ?
...
Bonjour,

Les données de public.opendatasoft.com sont en OpenData en accès légal et gratuit.

Le site que tu indiques est un site marchand qui vend ses bases de données (pour une entreprise : France=199€, Europe=1199€, Monde=1999€), donc le téléchargement de ces données est illégal si tu ne payes pas.

Je ne ferai donc pas (surtout pour des données qu'on peut avoir gratuitement ailleurs ...).
Pierre
 

tatiak

XLDnaute Barbatruc
Pour ce site, si la recherche est gratuite via un navigateur, le "siphonnage" automatisé des données via du code reste illégal.
 

tatiak

XLDnaute Barbatruc
Pour Herve62 (et ceux qui en ont besoin) :

Pour éviter à chaque recherche de pointer sur un fichier extérieur via internet, voici une autre version qui utilise un fichier qu'on télécharge une bonne fois pour toute.

Le fichier de données (en txt) est toujours issu de l'opendata public.opendatasoft.com, mais a été simplifié et allégé (pour passer de 100Mo à 3,7Mo). Il est indispensable de le placer dans le même dossier que le fichier excel

L'appli est simplifiée également (on a plus de carte dessinée).
Après avoir choisi dans les listes déroulantes la région+le département+la commune et indiqué un kilométrage maxi, le bouton "Chercher" dresse la liste des communes proches avec le code Insee, le code postal et la distance (toujours en ligne droite, d'épicentre à épicentre)

Bon week-end
Pierre
 

Fichiers joints

tatiak

XLDnaute Barbatruc
Bonjour à tous,

Juste pour compléter, voici une version du fichier "offline" avec une carte de France (métropole).
Une fois la liste des communes (incluses dans le rayon) affichée, un cercle est dessiné sur la carte :
* le centre correspond à la ville sélectionnée
* le rayon du cercle correspond à la valeur indiquée en I3 (de l'onglet "Base")

+ amélioration de la lecture des CP multiples

Ce fichier nécessite toujours d'avoir le fichier geoflar-communes-2016_light.txt dans le même dossier

Pierre
 

Fichiers joints

arthour973

XLDnaute Barbatruc
Supporter XLD
Re-Pierre,

Les test que j'ai effectués sont concluants, ça fonctionne nickel :)
Même nettement mieux qu'en allant sur le site car beaucoup plus rapide.
Encore merci pour ce super boulot qui m'est très utile.

Juste un truc LOL qui me gène un peu :
Il faut renseigner les 3 champs
Région
Département
Commune

J'ai très souvent besoin de trouver les communes dans un rayon de X km autour d'une commune km 0.

Je connais le département et le nom de la commune, évidemment,j sans avoir à chercher = pas de perte de temps.

Il n'en est pas de même pour le nom des régions que je n'ai pas en tête et il me faut à chaque fois faire une recherche sur internet qui me prend du temps.

Serait-il possible, si ce n'est pas trop de modifications pour toi, de ne pas avoir besoin d'indiquer la région ?

Encore merci pour ce super fichier.
Amicalement,
arthour973,
 

tatiak

XLDnaute Barbatruc
La seule modif à faire c'est de charger la liste des départements dès le début.
Ce qui permet de chercher une ville connaissant uniquement son département.
Pour ça c'est simple : module "Accueil", procédure "Init", changer la ligne :
VB:
.ComboBox2.Clear
par :
VB:
.ComboBox2.List = Combo_T(Tdata, 4)
Et ce sera effectif à l'ouverture suivante du fichier

Pierre
 

arthour973

XLDnaute Barbatruc
Supporter XLD
Re-Bonjour Pierre,
Encore merci pour ce super travail :)
Mais je viens de m'apercevoir d'une erreur dans la recherche :
recherche.jpg
Quand tu auras un moment, pourrais-tu voir ?
Avec mes remerciements,
amicalement,
arthour973
 
Dernière édition:

tatiak

XLDnaute Barbatruc
Il existe bien aussi une commune La Rochelle dans le département Haute-Saône.
Pour éviter la confusion la procédure Acquisition devient (vérif du n° insee) :
VB:
Sub Acquisition(Optional x As Byte)
Dim Km As Single, T As Variant, i As Long, j As Byte, insee As String

    With Sheets(1)
        Km = CSng(Split(.Range("I3").Value, " ")(0))
        ReDim T(1 To UBound(Tdata, 1) - 1, 1 To 5)
        insee = Tdata(Idx_T2D(Tdata, .ComboBox3.Value, 6), 7)
        For i = 2 To UBound(Tdata, 1)
            T(i - 1, 1) = Tdata(i, 1)
            For j = 2 To 3
                T(i - 1, j) = Tdata(i, j + 4)
            Next j
            T(i - 1, 4) = Replace(Tdata(i, 8), ",", "|")
            If Tdata(i, 6) = .ComboBox3.Value And Tdata(i, 7) = insee Then
                T(i - 1, 5) = 0
            Else
                T(i - 1, 5) = Dist(Coord0, CStr(Tdata(i, 9)))
            End If
        Next i
        T = Select_T_Val(T, 5, Km)
        T = Tri2D(T, 5, True, True)
        .Range("A5").Resize(UBound(T, 1), UBound(T, 2)) = T
       
        Efface
        T = Split(Coord0, "|")
        Point XY(CSng(T(0)), CSng(T(1))), 2
        Point XY(CSng(T(0)), CSng(T(1))), Km * UN
    End With
End Sub
 

Discussions similaires


Haut Bas