Tatiak

Excel, Vba, Vbs


21 novembre 2016

Gestion de clefs

Pour répondre à un besoin de Chatillon, voici une application Excel de gestion de clefs.

Cette appli est basée sur le principe de hiérarchisation Passe Général / Passes Partiels

A noter :

  • pour les colonnes PG et PP (passe général/passes partiels), il suffit de cliquer dans les bonnes cases pour mettre à jour la "combinaison"
  • un clic sur une entête de colonne => tri des info selon cette colonne
  • si besoin, les entêtes de colonnes sont modifiables directement sur la feuille "Data" (notamment les intitulés T à Z)


La saisie se fait soit directement sur la feuille "Data", soit par l'interface (bouton "Nouvelle clef") =>utilisez la touche Tab ou Entrée pour aller à la zone de saisie suivante, les croix PG/PP se positionnent par clic de souris.

Pierre

Téléchargement de Clefs_v1.2.xlsm

Posté par tatiak à 16:09 - Applications - Commentaires [4] - Permalien [#]

20 novembre 2016

ComboBox en cascade ou ComboBox liées

Un besoin récurent en VBA est de pouvoir obtenir une liste de choix en fonction d'un premier choix fait dans une première liste déroulante.

En fait ça revient à lister les éléments uniques d'une colonne en fonction d'une première sélection de lignes de données.

La méthode que j'utilise se base sur l'utilisation de tableaux et sur 2 fonctions génériques réutilisables dans tout projet (cf module Tblo) :

  • une fonction de sélection de lignes d'un tableau dont les valeurs d'une colonne correspondent à un premier choix (fonction Select_T de la démo)
  • une fonction de listing d'éléments uniques d'une colonne (fonction Combo_T de la démo)


Dès lors la mise en place du code devient simple :

  1. on charge les données dans une variable tableau (cf sub test_court)
  2. on alimente la première liste déroulante (1 seule ligne de code : dans la démo sub Userform_Initialize)
  3. à la suite d'un choix dans cette première liste, on filtre le tableau (sub filtre) et on alimente la deuxième liste déroulante (toujours par une seule ligne de code)


Dans la démo, une troisième liste est alimentée après le deuxième choix tout aussi simplement par une seule ligne de code, et on pourrait continuer 4ème, 5ème, ...

L'appel aux 2 fonctions principales est simple :

  • pour filtrer un tableau selon une valeur contenu dans une des colonnes (ex : filtrer les CP d'un département) :

Tableau = Select_T(Tableau, colonne, valeur)

  • pour lister les valeurs uniques d'une colonne du tableau (ex : liste des communes)

Liste = Combo_T(Tableau, "Entête_de_colonne")

A noter l'entête de colonne peut être remplacée par le n° de colonne du tableau, par exemple la ligne :

Liste = Combo_T(Tableau, 2) est valide également


Dans la démo, il y a 2 variantes pour initialiser le tableau :

  • une variante "courte" : si vos données commencent en ligne 2 avec des entêtes en ligne 1
  • une variante "longue" : pour le cas où les entêtes sont sur une autre ligne que la ligne 1 et/ou la première colonne de données n'est pas en colonne A


Voici donc une méthode simple pour alimenter vos ComboBox en cascade, le module "Tblo" étant réutilisable en l'état dans votre projet.

Si la méthode correspond à vos besoins, laissez-moi un commentaire!
Pierre

Téléchargement de Combo-liées-Tblo.xlsm

Posté par tatiak à 10:23 - Excel-Howto - Commentaires [0] - Permalien [#]

01 novembre 2016

Catalogue BD/Ouvrages/Livres

En réponse à GIBE59, amateur de BD, je propose aujourd'hui un catalogue d'ouvrages (BD ou autre) avec visuel posible de la couverture de chaque ouvrage.

Les images sont stockées dans le dossier "Img", la liaison entre ouvrage et image se fait par la référence ISBN (réf au format texte, on peut y mettre ce que l'on veut pourvu que la réf soit unique)

L'interface propose à minima une fonction de tri et une fonction de filtre, par exemple pour afficher les album de Tintin dans l'ordre chronologique on sélectionne : Collection commençant par "T" et tri par "date de parution".

Pour la démo seules quelques couvertures sont présentes.

Pour le côté technique Vba : un contrôle "datalist" perso et du sql comme moteur de sélection/tri

Pierre

Téléchargement de Catalogue_x8_v1.2.zip

Posté par tatiak à 11:12 - Excel-Base de Données - Commentaires [3] - Permalien [#]

18 octobre 2016

Carte géographique de répartition

CaptureSur une demande d'Etienne, voici une carte de France indiquant des répartitions par catégories.Le besoin était de réprésenter visuellement la répartition des employés de son entreprise en fonction de leurs domaines d'activité et de pouvoir établir un comparatif avec d'autres entreprises concurrentes. Cette représentation devait pouvoir se faire par région et/ou par villes.

La solution proposée, à partir d'une carte "points GPS" est constituée de :

  • Un premier onglet "Carte" + autant d'onglets que d'entreprises à "benchmarker" (onglets à ajouter en gardant la structure de l'onglet "Tatiak_Inc")
  • Pour chaque onglet "Entreprise" : saisir en ligne 1 les catégories d'activités et les chiffres (ne pas laisser de cellule vide, saisir 0).
  • Sur l'onglet "Carte", une liste déroulante "Entreprise" reprend la liste des onglets "Entreprises" créés au fur et à mesure. Au choix dans cette liste, les camemberts se dessinent en fonction des données.

La carte de répartition se fait soit selon régions, soit selon villes : pour cela, il suffit d'indiquer les coordonnées GPS de la ville concernée (pour obtenir les coordonnées d'une ville=>Googlemap) dans les onglets des entreprises.

 

Bien sûr, l'outil peut être utilisé pour toute autre répartition de données quelconques à comparer.

Et si ce ficier vous est utile, merci de me laisser votre commentaire!

Pierre

Téléchargement de France_Camemberts_v1.1.xlsm

Téléchargement de France_Camemberts_v1.2.xlsm

Téléchargement de France_Camemberts_v1.3c.xlsm

 

PS : Ajout du 31 oct 2016 : version v1.3c adaptée sous Office 2007 (suite à la remarque de Walden).

Au passage cette version est enrichie d'une coloration par région selon critère choisi parmi 5 possibilités

Posté par tatiak à 17:39 - Excel-Cartographie - Commentaires [4] - Permalien [#]

17 octobre 2016

Envoi de SMS par Excel via une Raspberry Pi

Pour répondre à une question de Hans, responsable d'un centre de secours et d'incendie, voici une application Excel permettant l'envoi d'un SMS à un de vos contacts ou à un groupe de contacts.

Avant d'ouvrir le fichier Excel, quelques prérequis sont nécessaire :

  • une Raspberry Pi configurée et connectée à un modem GSM  + carte SIM dédiée
  • l'application RaspiSMS installée sur votre Raspberry


A noter : inutile d'avoir un clavier+écran dédiés à la Raspi, on peut la piloter depuis une appli SSH comme PuTTY. En revanche quelques notions de Linux sont utiles pour installer votre Raspberry et les logiciels qui vont bien. L'installation du tout est très largement documentée (notamment en français), une recherche simple sur le net vous aidera à mener à bien l'affaire.

Le budget à prévoir reste très modeste :

  • Environ 50 € / 100 € pour le matériel,
  • 0 € pour les applications Raspberry (OpenSource).
  • un forfait téléphone mobile avec SMS illimités (il en existe à partir de 2€ mensuel)


Une fois votre Raspberry fonctionnelle (et connectée à votre box), vous pouvez ouvrir SMS_Raspi_v1.xx.xlsm.
Ce fichier est de structure simple :

  • le message à envoyer est à choisir dans la liste déroulante (les messages sont à saisir dans l'onglet "SMS"
  • la liste des contacts avec les n° de téléphone => colonnes A à F
  • autant de colonnes que de listes de diffusion => colonnes G et suivantes :
    • on peux renommer les listes comme on veux
    • on inscrit un contact dans une liste par un simple X dans la bonne colonne
    • le système permet ainsi de mettre une même personne dans plusieurs listes de diffusion
  • sur chaque colonne de liste => un bouton "Go" à cliquer pour envoyer le SMS.
  • pour créer une nouvelle liste, il suffit de copier/coller un bouton "Go" dans une nouvelle colonne vide et de cocher les contacts dans cette colonne, le code reconnait la colonne tout seul.
  • un envoi de SMS individuellement à une seule personne est possible par un double-clic sur ce contact (une confimation d'envoi vous sera demandée).
  • Possibilité de différer ou non l'envoi du message


Avant d'utiliser ce fichier, vous aurez saisi :

  • l'adresse IP de votre box : dans le code du module "SMS" à la ligne :
    • Public Const IP_BOX = "00.000.000.00"
  • vos identifants de connexion au logiciel RaspiSMS à la ligne :
    • Public Const IDENTIFIANT = "?email=xxxxxx@sdis.fr&password=yyyyyy"


Vous voici donc en mesure d'envoyer des SMS depuis Excel à vos contacts ou groupe de contacts de façon simple et rapide avec cette solution low-cost.

Ce code et cette méthode est facilement intégrable dans une appli Excel plus complète qui intègre une gestion de contacts.

Si cette appli ou ce code vous est utile, n'hésitez pas à me laisser votre commentaire!

Pierre

Edit du 20 oct 2016 : ajout d'un historique des SMS envoyés (cf fichier SMS_historic.txt)

Edit du 5 nov 2016 : améliorations diverses

 

Téléchargement de : SMS_Raspi_v1.13.xlsm

Posté par tatiak à 09:36 - Excel-Base de Données - Commentaires [0] - Permalien [#]

05 octobre 2016

Entreprise "Multi-Services"


Sur un cahier des charges de Damien, voici une appli pour entreprise "Multi-Services".

Le besoin : une entreprise propose la réalisation de travaux divers chez les entreprises et particuliers. Pour cela, les ouvriers doivent préparer leur matériel en fonction des besoins.
En fonction des travaux à réaliser (peinture, entretien jardin, ...) l'appli propose de lister le matériel nécessaire. Certaines tâches nécessitant parfois le même matériel (aspirateur pour les déménagements et l'entretien des sols par exemple), ce matériel n'est indiqué qu'une fois (pas de doublon).

Après avoir saisi diverses informations utiles (nom et adresse du client, date du chantier, ...) et cliqué sur les travaux à réaliser, il est possible d'éditer une fiche au format word. Chaque fiche peut être enregistrée.

L'appli est bien sûr configurable :  liste du matériel de l'entreprise, liste des divers travaux réalisables, et liste de matériels pour chaque type de travaux.

Avec cette appli, vous serez en mesure de donner des indications précises à vos ouvriers partant chez un client.

Si cette appli vous est utile, n'hésitez pas à laisser un commentaire
Pierre

 

Téléchargement de : Multi_Services_v1.2d.xlsm

Posté par tatiak à 13:50 - Applications - Commentaires [1] - Permalien [#]

15 juin 2016

Gestion de budget "familial"

Pour répondre à la demande de Joscarca,  voici une proposition d'appli de gestion de budget perso.

Elle permet :

* la gestion de plusieurs comptes différents jusqu'en 2036
* de faire des virements entre comptes
* de prévoir des écritures en débit différé (carte de crédit)
* de faire un pointage
* d'avoir un visuel par mois et par compte des écritures, avec tri possible
* d'avoir un bilan annuel et mensuel par rubrique + graphique
* de créer ses propres rubriques et ses propres intitulés de mode de paiement
* de faire (à la fermeture) une sauvegarde automatique sur son disque dur et sur tout support connecté présent (clé USB, disque externe, ...) => dossier type d:\comptes\

Les données de démo présentes sont fictives. Il suffit de les effacer (onglets "Cptes" et "Ecritures") pour saisir ses propres données.

Téléchargement de : Budget_Perso_v1f.xlsm

 

Pierre

Posté par tatiak à 14:03 - Applications - Commentaires [2] - Permalien [#]

03 juin 2016

Fichier GPX et Excel

Capture

Vous faites de la randonnée ou du cyclisme (ou autre sports), et vous utilisez votre smartphone ou votre GPS  pour enregistrer votre parcours.
Si à l'issue de votre activité vous souhaitez récupérer les données produites, par exemple pour construire un nouveau parcours à effectuer, ce fichier Excel est fait pour vous.

GPX est un format standard de sauvegarde de trace GPS utilisé par de nombreuses appli de smartphone et de nombreux GPS. Ces fichiers sont des fichiers texte au format xml, avec des balises simples.

La première étape va être d'exporter votre parcours depuis votre appli ou votre GPS au format GPX (via la fonction d'export GPX de votre appli, cf le mode d'emploi de votre dispositif).

Ensuite, pour récupérer les données d'un fichier GPX avec Excel, il suffit donc de lire le fichier et de repérer les balises pour copier les coordonnées et autres info dans une feuille.
Une fois cet import de données réalisé, il est facile d'en dessiner la trace sur une feuille Excel blanche pour visualiser votre parcours.

A l'inverse, depuis la liste des coordonnées que vous aurez modifié pour construire votre nouveau parcours, il suffira d'écrire cette liste dans un fichier texte au format xml avec les "balises GPX" pour obtenir un fichier GPX que vous pourrez réinjecter dans votre smartphone ou votre GPS pour votre prochaine randonnée.

Dans le fichier Excel joint dans l'archive zip, vous avez donc un bouton "Import Gpx" pour importer les données d'un fichier GPX et dessiner le parcours sur la feuille "Carte".
Sur la feuille "Data" sont listées les coordonnées importée, que vous pourrez exporter au format GPX => bouton "Export Gpx" après éventuelle modification.

Vous trouverez également dans l'archive zip un fichier GPX de démo, produit par le fichier Excel et lisible par lui.

Téléchargement de : Excel_et_GPX_20160603.zip

 

A noter qu'il sera facile de copier/coller un fond de carte (depuis www.openstreetmap.org par exemple) pour améliorer le visuel de votre tracé : cf illustration


Bonne randonnée!
Pierre

Posté par tatiak à 10:46 - Excel-Cartographie - Commentaires [0] - Permalien [#]

25 mai 2016

Utiliser une base de données Access depuis un fichier Excel

Sous Excel, il est parfois utile d'interagir avec des fichiers Access, par exemple si vous disposez d'une version d'Office sans Access mais que vous avez besoin d'expoiter des données au format .mdb ou .accdb

La solution passe par ADO (ActiveX Data Objects) et des requêtes Sql (cf. http://sql.sh/).
A noter, le Vba n'accepte pas tout le langage Sql standard, mais pour l'essentiel on y arrive.

La méthode se base sur une fonction "passe-partout" qui établit la connection avec le fichier externe et qui exécute une requête Sql quelconque (en lecture ou écriture). La fonction renvoie un entier long correspondant soit à -1 si problème, soit 0 pour des requêtes INSERT ou DELETE qui ont abouti, soit au nombre d'enregistrements lus pour des requêtes SELECT. Dans ce dernier cas les enregistrements sont stockés dans la variable tableau "Rcd".
Voici son code à mettre dans un module quelconque :

Function Query(Req As String, Optional Head As Byte = 1) As Long
Dim Cnx As Object, Rst As Object
Dim T As Variant, Col_SQL As Integer, i As Long, j As Long

    On Error GoTo errhdlr
    Set Cnx = CreateObject("ADODB.Connection")
    Cnx.Provider = "MSDASQL"
    
    Cnx.Open "DRIVER={Microsoft Access Driver (*.mdb, *.accdb)}; DBQ=" & BDD
 
    If Left(Req, 6) = "SELECT" Then
        Set Rst = CreateObject("ADODB.Recordset")
        Rst.Open Req, Cnx, 3

        Col_SQL = Rst.Fields.Count - 1
        If Head = 1 Then
            ReDim Rcd(Col_SQL, 0)
            For i = 0 To Col_SQL
                Rcd(i, 0) = Rst.Fields(i).Name
            Next i
        End If
        
        Query = Rst.RecordCount
        If Not Query = 0 Then
            If Head = 1 Then ReDim Preserve Rcd(Col_SQL, Query) _
            Else ReDim Rcd(Col_SQL, Query - 1)
            ReDim T(Col_SQL, Query - 1)
            Rst.MoveFirst
            T = Rst.GetRows
            For i = 0 To UBound(T, 1)
                For j = 0 To UBound(T, 2)
                    Rcd(i, j + Head) = IIf(IsNull(T(i, j)), "", T(i, j))
                Next j
            Next i
        End If
    Else
        Cnx.Execute Req
        Query = 0
    End If
    
    Cnx.Close
    Set Rst = Nothing
    Set Cnx = Nothing
    Exit Function
    
errhdlr:
    If Not Rst Is Nothing Then If Rst.State = 1 Then Rst.Close
    If Not Cnx Is Nothing Then If Cnx.State = 1 Then Cnx.Close
    Set Rst = Nothing
    Set Cnx = Nothing
    Query = -1
    MsgBox (Err.Description)
End Function

     
Pour commencer, il sera nécessaire d'initialiser la variable BDD, par exemple dès l'ouverture du fichier Excel :

Private Sub Workbook_Open()
    BDD = ActiveWorkbook.Path & "\BaseAccess.accdb"
    ' ou bien : BDD = "C:\dossier_truc\sous-dossier_bidule\BaseAccess.accdb"
End Sub


Voici ensuite 3 procédures de base (à placer par exemple dans le même module que la fonction précédente), pour inserer, mettre à jour ou supprimer un enregistrement d'une base "BDD":

Sub Insert_DB(Tbl As String, Head As String, Data As String)

    Req = "INSERT INTO [" & Tbl & "]"
    If Not Head = "" Then Req = Req & " (" & Head & ")"
    Req = Req & " VALUES (" & Data & ")"
    lig = Sql.Query(Req)
End Sub


Sub Update_DB(Tbl As String, UPD As String, Cond As String)

    Req = "UPDATE [" & Tbl & "] SET " & UPD & " WHERE " & Cond
    lig = Sql.Query(Req)
End Sub


Sub Delete_DB(Tbl As String, Cond As String)

    Req = "DELETE FROM [" & Tbl & "]  WHERE " & Cond
    lig = Sql.Query(Req)
End Sub



Ainsi, pour créer par exemple la 100ème ligne dans la table "CLIENTS", il suffira d'écrire : (ici la table contient 3 champs : Id, Nom, Prenom)

    Insert_DB "CLIENTS", "Id, Nom, Prenom", "100, 'Dupond', 'Jean'"

Vous aurez remarqué : les données textes sont entourées par des quotes simples contrairement aux données numériques.

Pour des dates, elles seront au format mm/jj/aaaa et entourées par des dièses, ex pour le 24 mai 2016 : #05/20/2016#


Pour mettre à jour cette 100ème ligne, on écrira un truc genre:

    Update_DB "CLIENTS", "Nom='DuponT', Prenom='Marc'", "Id=100"
     

Pour supprimer cette 100ème ligne, il suffira d'écrire :

    Delete_DB "CLIENTS", "Id=100"
     

Mais comment savoir que l'enregistrement suivant à créer sera le 100ème?
Et bien il suffit d'interroger la base avant l'Insert via une nouvelle fonction :

Function Get_Max_Id(Tbl As String, Head As String) As Long

    Req = "SELECT MAX(" & Head & ") FROM [" & Tbl & "]"
    Get_Max_Id = Query(Req)
    If Rcd(0, 1) = "" Then Get_Max_Id = 0 Else Get_Max_Id = CLng(Rcd(0, 1))
End Function

Le numéro du prochain enregistrement s'obtient alors facilement  :

    Dim Id_suivant as Long
    Id_suivant = Get_Max_Id("CLIENTS", "Id") + 1


On peut donc interroger la base par des SELECT. Un exemple simple et utile, pour alimenter une liste déroulante à partir d'un champs d'une table, une fonction de base :

Function Get_Combo(Tbl As String, Chps As String) As Variant()

    Req = "SELECT DISTINCT " & Chps & " FROM [" & Tbl & "]" & _
            " ORDER BY " & Chps

    If Query(Req, 0) > 0 Then Get_Combo = Application.Transpose(Rcd) _
    Else Get_Combo = Array("")
End Function

Pour alimenter un combobox (qui sera donc sans doublon et en ordre alfa  : cf DISTINCT et ORDER BY), avec ici la liste des noms des clients, on écrira simplement :

    Userform1.ComboBox1.List = Get_Combo("Clients", "Nom")


Pour finir, un exemple de fonction tirée d'une de mes appli, pour montrer que la requête Sql peut inclure des jointures et des champs calculés (on peut aussi faire des agrégations):

    Function Get_EvnParRsc(id As Long, dt1 As Date, dt2 As Date, Gen As String, Cat As String) As Variant()
                           
        Req = "SELECT E.Genre, E.Categ, E.Deb, E.Fin, E.Hfin-E.Hdeb, R.Nom " & _
                " FROM ([Evnmnts] AS E" & _
                " INNER JOIN [Assoc] AS A ON A.Id_Ev=E.Id)" & _
                " INNER JOIN [Ressources] AS R ON R.Id=A.Id_Re" & _
                " WHERE R.Id=" & id & _
                " AND ((clng(E.Deb) BETWEEN " & CLng(dt1) & " AND " & CLng(dt2) & " )" & _
                " OR (clng(E.Fin)  BETWEEN " & CLng(dt1) & " AND " & CLng(dt2) & ")" & _
                " OR (clng(E.Deb)<" & CLng(dt1) & " AND clng(E.Fin)>" & CLng(dt2) & "))"

        If Not Gen = "" Then Req = Req & " AND E.Genre='" & Gen & "'"
        If Not Cat = "" Then Req = Req & " AND E.Categ='" & Cat & "'"
       
        Req = Req & " ORDER BY E.Genre ASC, E.Categ ASC"

        If Query(Req) > 0 Then Get_EvnParRsc = Application.Transpose(Rcd) _
        Else Get_EvnParRsc = Array("")
       
    End Function

Un appel à une fonction de ce genre renvoie un tableau à 2 dimensions qu'on utilise ensuite comme n'importe quel tableau ordinaire.


Pour illustrer mon propos, ci-après une démo constituée de 2 fichiers (à décompresser dans un même dossier de son Pc) : un fichier Excel sans aucune donnée et un fichier accdb contenant 2 tables (et quelques données fictives) :
* une table 'Clients' (Id, Nom, Prénom)
* et une table 'Information' (Id, Id_C, Nte) => Id=le n° de la fiche info, Id_C= le n° de la fiche 'Client'

Les 2 tables sont  reliées par un index : Id <=> Id_C, relation un-à-plusieurs classique.

Le nom de la base (+ chemin) est initialisé dans le module 'Thisworkbook'

L'ensemble des fonctions de liaison avec la base Access est dans le module 'Sql'

La démo propose 2 fonctions principales :
* création d'une nouvelle fiche => bouton 'nouvelle fiche'
* consultation/modif des fiches => bouton 'Liste'

Dans la liste : un double-clic sur une ligne ouvre la fiche client pour consultation/modification

Dans la fiche : plusieurs boutons pour ajouter/supprimer une info à relier, enregistrer les modif, supprimer la fiche.
La fiche affiche l'Id, le nom, le prénom et la liste des info reliées au client (Nb : dans cette liste, pour l'affichage, des colonnes sont masquées=>largeur=0)

Le tout est fonctionnel (mais simplex), sans code 'exotique', l'objectif étant de montrer la mise en oeuvre d'une liaison Excel/Access (et non de proposer une appli d'une utilité réelle)

Téléchargement de Démo.zip

Pierre

Posté par tatiak à 18:01 - Excel-Base de Données - Commentaires [0] - Permalien [#]

02 mai 2016

Carte géographique sous Excel (coordonnées GPS), Pays d'Europe + Routes

Depuis fin 2015, le site public.opendatasoft.com mets à la disposition de tous (en licence ouverte) des nouveaux jeux de data issus de www.eurogeographics.org

Ces jeux de data sont intéressants puisqu'ils concernent les limites adminitratives de tous les pays européens ainsi que le tracé des routes, en voici les liens :



Ainsi, en suivant ma méthode de dessin de carte sur Excel et en utilisant par exemple pour la Belgique (de nombreux Belges visitent mon blog, bonjour et merci à eux!) les data :


On obtient une carte de ce pays découpée par régions administratives et indiquant quelques unes des routes (de sélection arbitraire, car la liste est longue).

Téléchargement de : Belgique_2mai2016.xlsm



Dans cet exemple, une fonction de coloration de chaque zone est prévue selon un "score" indiqué en colonne G de l'onglet Data, et chaque zone est cliquable pour un affichage d'information.
Cet exemple peut largement être amélioré et adapté à votre usage.

Et bien sûr cet exemple peut être adapté aux différents pays d'Europe référencés dans la base de public.opendatasoft.com, comme par exemple ici pour la Suisse  avec ses principaux lacs:

Téléchargement de : Suisse_16mai2016.xlsm

 

Autre exemple d'utilisation : une carte de l'Ile de France avec ses principaux axes routiers. Un clic sur une route pour afficher son numéro et la surligner en rouge. Sélection/déséselection dans la liste pour afficher/masquer la route.

Téléchargement de : IleDeFrance_Routes.xlsm

Pierre

 

PS : Suite à l'indication de Peter voici le lien vers data.opendatasoft.com qui offre en effet une mine d'informations pour vos cartes futures!

Posté par tatiak à 10:03 - Excel-Cartographie - Commentaires [4] - Permalien [#]