IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Microsoft Office Discussion :

Créer une carte de France avec les dessins de formes libres [Tutoriel]


Sujet :

Microsoft Office

  1. #1
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut Créer une carte de France avec les dessins de formes libres
    Bonjour à tous,

    Vous pouvez sur cette discussion commenter l'article suivant :
    Dessiner une carte de france avec les fonctions de dessins de formes libres

    Aperçu :


    Pensez également à ajouter une note. ("Noter la discussion" en haut à droite)
    Votre avis nous intéresse.


  2. #2
    Invité
    Invité(e)
    Par défaut
    Salut

    Excellent tuto qui ouvre des possibilités énormes de présentations géographiques pour des jeux, des statistiques, etc ...


  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    14
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14
    Points : 10
    Points
    10
    Par défaut
    Bonsoir
    C'était juste pour signaler que j'avais utilisé une technique similaire dans les années 88 (de mémoire) sous Quattro Pro pour Dos, à l'aide d'un programme Pascal qui récupérait les contours départementaux dans une base binaire au format fermé que j'avais quand même réussi à décrypter, et les envoyait dans le langage macro de Quattro.
    Ca marchait du tonnerre. Et comme Quattro connaissait déjà les graphiques à bulles (présents dans la prochaine version 3.2 de OOo tout de même !), j'avais pu illustrer les chiffres par des cercles proportionnels, et même finalement par des hémicycles proportionnels contenant des secteurs eux-mêmes proportionnels. Tout cela grâce au langage macro de Quattro (un magnifique produit de Borland très en avance sur Excel ou 123 à l'époque) pourtant complètement indépendant du Turbo Pascal, lui aussi de Borland.

    Que d'émotions et de souvenirs ! C'était juste après l'épopée des derniers Sinclair, dont le QL qui avait été le premier à démocratiser le tableur sur des mini-cassettes.

    Malheureusement bien entendu je ne retrouve plus les sources depuis longtemps et de toute façon qui a encore une machine capable de faire tourner Quattro Pro sous Dos ??

    En tout cas, ce tuto est très bien fait et plein de promesses.
    Merci à ses auteurs.

  4. #4
    Membre habitué
    Profil pro
    Inscrit en
    Octobre 2007
    Messages
    87
    Détails du profil
    Informations personnelles :
    Âge : 41
    Localisation : France, Haute Garonne (Midi Pyrénées)

    Informations forums :
    Inscription : Octobre 2007
    Messages : 87
    Points : 170
    Points
    170
    Par défaut Améliorations
    Bonjour,
    J'ai suivi votre tuto que j'ai beaucoup aimé et j'ai fait quelques petites améliorations au niveau de l'affichage du département sélectionné (le département concerné est mis en transparence et le nom du département est affiché dans une forme prévue à cet effet). Donc je partage le résultat si ça intéresse quelqu'un.

    Images attachées Images attachées  
    Fichiers attachés Fichiers attachés
    • Type de fichier : zip Map.zip (268,6 Ko, 1698 affichages)

  5. #5
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 122
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 122
    Points : 55 951
    Points
    55 951
    Billets dans le blog
    131
    Par défaut
    Salut!

    Y a pas à dire... C'est bôôôô... et surtout utile.

    Merci. Continue...!
    "Plus les hommes seront éclairés, plus ils seront libres" (Voltaire)
    ---------------
    Mes billets de blog sur DVP
    Mes remarques et critiques sont purement techniques. Ne les prenez jamais pour des attaques personnelles...
    Pensez à utiliser les tableaux structurés. Ils vous simplifieront la vie, tant en Excel qu'en VBA ==> mon tuto
    Le VBA ne palliera jamais une mauvaise conception de classeur ou un manque de connaissances des outils natifs d'Excel...
    Ce ne sont pas des bonnes pratiques parce que ce sont les miennes, ce sont les miennes parce que ce sont des bonnes pratiques
    VBA pour Excel? Pensez D'ABORD en EXCEL avant de penser en VBA...
    ---------------

  6. #6
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Pb avec l'enregistreur de macros
    Bonsoir,

    Belles perspectives pour une utilisation annexe avec un SIG. J'ai voulu tester les formes libres (comme dans l'article) mais l'enregistreur de macro (sous Excel 2007) ne génère pas de code . Après dessin d'une forme libre, la macro enregistrée est vide.

    D'autres actions (saisie dans une cellule, formatage, sélection) sont toutes présentes dans la macro, mais pas le dessin.

    Que me manque t'il ?

    Merci pour un petit coup de pouce explicatif

  7. #7
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    Bjr,

    Citation Envoyé par gksig Voir le message
    J'ai voulu tester les formes libres (comme dans l'article) mais l'enregistreur de macro (sous Excel 2007) ne génère pas de code . Après dessin d'une forme libre, la macro enregistrée est vide.
    Effectivement je n'ai pas non plus d'enregistrement des dessins faits sous Excel 2007.
    D'autant plus étrange que dans Word 2007 ça fonctionne.

  8. #8
    Candidat au Club
    Profil pro
    Inscrit en
    Janvier 2006
    Messages
    4
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2006
    Messages : 4
    Points : 4
    Points
    4
    Par défaut Suite pb enregistreur de macros...
    Bonjour,

    Effectivement sous Word 2007 l'enregistreur de macros transcrit bien les actions de dessin d'une forme.

    J'ai copié/collé la macro dans VBE Excel 2007 en remplaçant bien entendu "ActiveDocument" par "ActiveSheet".

    L'exécution de la macro recrée bien la forme dans la feuille active Excel.

    Avez-vous des interlocuteurs chez Microsoft à qui soumettre ce problème ?

    Mais on a quand même des solutions de repli en copiant les macros de VBE Word vers VBE Excel

    Bonne journée

  9. #9
    Membre actif

    Profil pro
    Inscrit en
    Août 2009
    Messages
    85
    Détails du profil
    Informations personnelles :
    Âge : 52
    Localisation : France, Gironde (Aquitaine)

    Informations forums :
    Inscription : Août 2009
    Messages : 85
    Points : 228
    Points
    228
    Par défaut
    Effectivement, ça fonctionne bien avec excel 2003 (l'enregistrement des formes).

    Bravo pour l'idée, ça marche bien !!

    Par tous les dieux, moi qui bosse dans l'informatique décisionnelle, voilà un moyen fantastique faire du ciblage géographique. Comme j'imagine qu'on doit trouver un peu partout des SVG de cartes...

    Génial !

  10. #10
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    Pour l'enregistrement des macros sous Excel 2007 :
    Citation Envoyé par http://support.microsoft.com/kb/937620
    Ce comportement est voulu par la conception même du produit.
    L'article de la KB : http://support.microsoft.com/kb/937620

    Pas d'autre solution donc que d'utiliser une autre version ou application pour enregistrer les modifications de formes en macro.

    Citation Envoyé par datacell33 Voir le message
    Comme j'imagine qu'on doit trouver un peu partout des SVG de cartes...
    Tout à fait, rien que sur Wikimedia Commons on n'a que l'embarras du choix.
    Par contre ensuite ça n'est pas toujours évident pour isoler les coordonnées utiles.

  11. #11
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 17
    Points : 5
    Points
    5
    Par défaut Carte de France sur Excel : Besoin d'aide pour aller plus loin
    Bonjour à tous,

    Nouveau en vba, nouveau sur le site, tout d'abord BRAVO à la qualité que j'ai pu y trouver, tant sur l'assistance que sur la qualité des réponses.

    J'ai suivi le pdf génial de Arkham46 et j'y suis arrivé après quelques erreurs de débutant. Mes cartes fonctionnent à merveille.

    Je souhaite ajouter les numéros ou les noms des départements ... et c'est là que ça se complique. J'ai bien trouvé les coordonnées xy et les ID dans l'export SVG, mais j'ai beau essayer, je n'arrive pas "programmer " les textbox par dessus mes shapes des départements.

    Une âme charitable aurait-elle quelques minutes à m'accorder du début (sub) à la fin (endsub) ?
    Je suis sous Excel 2003

    Merci par avance

  12. #12
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    bjr,

    Citation Envoyé par Lamperti Voir le message
    Je souhaite ajouter les numéros ou les noms des départements ... et c'est là que ça se complique. J'ai bien trouvé les coordonnées xy et les ID dans l'export SVG, mais j'ai beau essayer, je n'arrive pas "programmer " les textbox par dessus mes shapes des départements.
    bjr,

    un petit essais :
    ftp://ftp-developpez.com/arkham46/ar...s/mapnumxl.zip
    (mirroir http)

    j'ai ajouté les coordonnées des numéros sur la feuille en colonne D et E
    et j'ai ajouté la génération des textbox dans la fonction CreateShapes du module Module1

    ce n'est pas parfait mais si c'est pour générer juste une fois la carte, on peut repositionner correctement les numéros à la main

  13. #13
    Futur Membre du Club
    Profil pro
    Inscrit en
    Octobre 2010
    Messages
    17
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Octobre 2010
    Messages : 17
    Points : 5
    Points
    5
    Par défaut Que du bonheur
    Citation Envoyé par Arkham46 Voir le message
    bjr,

    j'ai ajouté les coordonnées des numéros sur la feuille en colonne D et E
    et j'ai ajouté la génération des textbox dans la fonction CreateShapes du module Module1

    ce n'est pas parfait mais si c'est pour générer juste une fois la carte, on peut repositionner correctement les numéros à la main
    Bonsoir Arkham46,

    Merci beaucoup pour la rapidité et la qualité de la réponse. J'ai rapidement regardé le code et je pense que c'est ce qu'il me fallait pour avancer. Je vais mettre les noms des départements dans une feuille à part pour les "activer à la demande" à l'aide d'une case à cocher. Je pense que je vais encore y passer du temps vu mon très faible niveau, mais c'est par plaisir ... pour maintenir mes neurones en éveil

    Encore merci
    Bonne continuation

  14. #14
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 696
    Points
    6 696
    Par défaut
    Super tuto..

    Qui allie la connaissance à la créativité pour un résultat hors des sentiers communs et dont la portée et l'utilité sont auto-démontrées

    Info :

    L'enregistreur de macro pour les formes est de nouveau actif sous Excel 2010

    cordialement,

    Didier
    Didier Gonard

    Dernier tutoriel :
    Le VBA qu'est ce que c'est ?
    Tutoriels : Voir la liste de mes tutoriels Excel & VBA et mon site pro sur ma Page DVP
    Cours et tutoriels pour apprendre Excel
    N'oubliez pas de mettre : ..quand c'est le cas !

  15. #15
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 113
    Points : 82
    Points
    82
    Par défaut Erreur d'exécution '9', l'indice n'appartient pas à la sélection
    Bonsoir à tous,

    Tout d'abord bravo pour ce tuto
    qui est, à peu de choses près, exactement ce que je cherchais.

    Mais je suis tombé dès la première macro sur des problèmes, sans même essayer de modifier le code. En lançant la macro, Excel se bloque, comme pris dans une boucle infinie. En mode pas à pas, il stoppe à la ligne 29
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Select Case lCoordArray(lCptCoord)
    en m'indiquant "Erreur d'exécution '9', l'indice n'appartient pas à la sélection". Pourtant, il me semble n'avoir loupé aucune étape. J'ai placé le fichier contenant la macro en pièce jointe.

    Avez-vous un moyen de sortir de cette impasse ?

    Pour info, je suis sous Excel 2003 et j'utilise mon ordi professionnel (je le précise au cas où il pourrait s'agir d'une config d'Excel particulière que ma société aurait mise en place). Je précise également que je n'y connais pas grand chose en VBA.

    Merci d'avance.

  16. #16
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    bjr,

    est-ce la même carte svg que celle que j'utilise dans le tuto?

  17. #17
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 113
    Points : 82
    Points
    82
    Par défaut
    Oui, il s'agit de la même.

  18. #18
    Responsable Access

    Avatar de Arkham46
    Profil pro
    Inscrit en
    Septembre 2003
    Messages
    5 865
    Détails du profil
    Informations personnelles :
    Localisation : France, Loiret (Centre)

    Informations forums :
    Inscription : Septembre 2003
    Messages : 5 865
    Points : 14 524
    Points
    14 524
    Par défaut
    je viens de re-tester avec Excel 2003, ça marche bien

    par contre les lignes de la feuille Departements sont-elles bien de 1 à 96?
    il n'y a pas de ligne vide ou une ligne d'en-tête au début?

  19. #19
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 113
    Points : 82
    Points
    82
    Par défaut
    Mea Coulpa, la ligne 1 était vide (je pensais pourtant avoir fait bien attention).

    En revanche, d'autres problèmes étaient apparus ce week-end lorsque j'ai essayé d'adapter cette macro à un autre fichier svg (sans doute en raison de l'image vectorielle). Je présenterai mon problème sur un autre post dès mon retour chez moi ce soir (Lien vers le nouveau post).


    Edit : Ajout du lien

  20. #20
    Membre régulier
    Homme Profil pro
    Inscrit en
    Août 2011
    Messages
    113
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2011
    Messages : 113
    Points : 82
    Points
    82
    Par défaut Améliorations
    Bonjour,

    Je tiens également à apporter ma petite pierre pour rendre ce document encore plus pratique.
    J'ai donc fait quelques améliorations afin de pouvoir facilement adapter ce projet à tout type de cartes, qu'il s'agisse de la carte de France représentant les différents départements comme pour le tuto, mais également de la carte d'une région ou d'un département découpée en cantons, de la carte d'une ville découpée en arrondissements ou quartiers, ou tout autre sorte de carte (carte du monde, carte de l'Europe, ...).

    Voici un aperçu :

    Uploaded with ImageShack.us

    Voici tout d'abord le code permettant de créer cette carte, très similaire au code du tutoriel mais avec quelques modifications mineures (il ne tient plus compte du nom de la feuille Excel ni du nombre de lignes à présent) :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
     Option Explicit
     
     
    '---------------------------------------------------------------------------------------------------------
    ' Importation du fichier SVG des communes et création des formes libres
    '---------------------------------------------------------------------------------------------------------
    Function CreateShapes()
    Dim oSheet As Excel.Worksheet ' Feuille de travail
    Dim NbLignes As Integer ' Nombre total de lignes à traiter
    Dim lLine As Long ' Compteur de lignes
    Dim lCoord As String ' Coordonnées de la commune
    Dim lCoordArray As Variant ' Coordonnées de la commune en tableau
    Dim lCptCoord As Long ' Compteur pour parcourir les coordonnées
    Dim lNbShape As Long ' Nombre de formes créées
    Dim lShapeRange() ' Tableaux des noms de formes créées pour fonction Group
    Dim loFreeformBuilder As Excel.FreeformBuilder 'Constructeur de forme libre
    Dim lFirstX As Double, lFirstY As Double 'Fermeture de la forme libre
     
    ' Feuille de données
    Set oSheet = ActiveSheet
    'comptage du nombre de lignes sur cette feuille
    NbLignes = oSheet.UsedRange.Rows.Count
    ' Parcourt la feuille des données
    For lLine = 1 To NbLignes
        ' Coordonnées
        lCoord = oSheet.Cells(lLine, 1)
        ' Mise en forme des coordonnées
        lCoord = Replace(lCoord, ",", " ")
        ' Crée un tableau à partir de la chaîne de caractères
        lCoordArray = Split(lCoord, " ")
        ' Initialise le compteur
        lCptCoord = LBound(lCoordArray)
        Do
            Select Case lCoordArray(lCptCoord)
            Case "M" ' Point de départ
                ' Crée un constructeur de "forme libre" pour la commune courante sur la feuille oSheet
                Set loFreeformBuilder = oSheet.Shapes.BuildFreeform(msoEditingCorner, Val(lCoordArray(lCptCoord + 1)) * 10, Val(lCoordArray(lCptCoord + 2)) * 10)
                ' Garde la position du premier point
                lFirstX = Val(lCoordArray(lCptCoord + 1))
                lFirstY = Val(lCoordArray(lCptCoord + 2))
                lCptCoord = lCptCoord + 3
            Case "L" ' Segment
                loFreeformBuilder.AddNodes msoSegmentLine, msoEditingAuto, Val(lCoordArray(lCptCoord + 1)) * 10, Val(lCoordArray(lCptCoord + 2)) * 10
                lCptCoord = lCptCoord + 3
            Case "C" ' Courbe
                loFreeformBuilder.AddNodes msoSegmentCurve, msoEditingCorner, _
                Val(lCoordArray(lCptCoord + 1)) * 10, Val(lCoordArray(lCptCoord + 2)) * 10, Val(lCoordArray(lCptCoord + 3)) * 10, Val(lCoordArray(lCptCoord + 4)) * 10, Val(lCoordArray(lCptCoord + 5)) * 10, Val(lCoordArray(lCptCoord + 6)) * 10
                lCptCoord = lCptCoord + 7
            Case "z" ' Fin de la forme
                ' Ferme la forme
                loFreeformBuilder.AddNodes msoSegmentLine, msoEditingAuto, lFirstX * 10, lFirstY * 10
                lCptCoord = lCptCoord + 3
                ' Convertit le Constructeur en Forme
                With loFreeformBuilder.ConvertToShape
                    ' Identifiant de la commune
                    .Name = oSheet.Cells(lLine, 2)
                    ' Incrémente le nombre de formes créées
                    lNbShape = lNbShape + 1
                    ' Redimensionne le tableau de formes créées
                    ReDim Preserve lShapeRange(1 To lNbShape)
                    ' Ajoute le nom de la forme au tableau pour groupement
                    lShapeRange(lNbShape) = .Name
                End With
                ' Libère l'objet constructeur
                Set loFreeformBuilder = Nothing
                ' Sort de la boucle de traitement des coordonnées
                Exit Do
            End Select
        Loop
    Next
    ' Groupe les communes dans une forme
    With oSheet.Shapes.Range(lShapeRange).Group
        .Name = "CarteBasRhin"
        .ScaleHeight 0.05, msoFalse
        .ScaleWidth 0.05, msoFalse
        .LockAspectRatio = msoTrue
    End With
    End Function
    Une chose importante à retenir à propos de l'image vectorielle SVG : les chemins des différentes formes (les attributs d="M ....") doivent être précisées en absolu et non en relatif. Si cela se produit, dans Inkscape (il s'agit du logiciel freeware que j'utilise pour créer/modifier mes images vectorielles), utiliser l'option Menu Extensions > Modifier le chemin > Rendre les segments droits.... Une fois fait et comme Inkscape a remanié les espaces dans le chemin des formes, il n'y a qu'à ajouter des espaces encadrant les lettres "L" et après la lettre "M", et remplacer la lettre "Z" par " z", en minuscule et avec l'espace, avant d'appliquer la macro (utiliser la fenêtre Remplacer (Ctrl +H) de préférence et faite : "M" -> "M " (avec l'espace en plus), "L" -> " L ", et "Z" (z en majuscule) -> " z" (espace + z en minuscule)). Ca a marché pour moi, d'autant que tous mes segments étaient droits à la base. Je ne connais pas par contre le moyen de rendre les coordonnées absolues si l'un des segments était courbe.
    Attention également si les chemins sont très longs, cela peut poser problème sous Excel 2003 (pas de problème par contre sous Excel 2010 apparemment). Utilisez dans ce cas la méthode avec la librairie Microsoft XML présentée dans le tuto.


    Concernant l'utilisation de cette carte, voici les principales fonctionnalités supplémentaires que j'ai mises en place :
    • Le fichier est constitué de 2 feuilles : une feuille "Données" et une feuille "Carte" reprenant l'identifiant ("ID") et le nom des régions/départements/communes/... présents sur la feuille "Données" ainsi que les valeurs de l'une des colonnes du tableau de données.
    • La feuille "Carte" est constituée de 4 zones :
      - Une zone (les colonnes A à C) reprenant les données de la feuille "Données". Concernant les colonnes A et B, copier-coller les identifiants et noms de la feuille "Données". Pour la colonne C, une formule détermine la bonne valeur, il n'y a donc qu'à copier cette formule sur toute la colonne. Le type de données peut facilement être choisi en cliquant sur le titre en C1. L'icône d'une liste apparaît alors à côté de l'icône de tri, permettant ainsi le choix des données à afficher.
      - Les colonnes D et E permettent de choisir si oui ou non une échelle personnalisée doit être utilisée et quelles sont les valeurs de cette échelle (par défaut, l'échelle est découpée en 15 intervalles constants). Quelques valeurs statistiques (man, max, moyenne, médiane...) sont également indiquées.
      - Vient ensuite la carte proprement dite. Cette carte est interactive, l'utilisateur pouvant y sélectionner une région/ville/... juste en cliquant sur la carte. Si une donnée est manquante, la forme correspondante utilise simplement un motif de remplissage en treillis au lieu d'une couleur de remplissage.
      - Pour finir sont présentent la commande pour la coloration de la carte, une zone de liste déroulante permettant de sélectionner une région/ville/... particulière sur la carte, et une boîte de texte fournissant quelques données sur la région/ville/... sélectionnée sur la carte ou dans la zone de liste déroulante.
    • Il est possible à présent de faire une carte où une région/ville/... soit représentée par plusieurs formes. Ca peut sembler idiot, mais j'ai eu ce cas sur ma carte.


    Voici quelques points à prendre en compte avec ce fichier :
    • La feuille "Données" ne débute pas avec le tableau de données mais avec quelques lignes de présentation. Il est important qu'il n'y ait aucune cellule vide sur la première colonne entre le début de la feuille et les données. Si des lignes sont supprimées ou ajoutées, il faut alors modifier la formule présente sur la colonne C de la feuille "Carte", plus précisément les Données!$5:$5 qui représentent la ligne de titres du tableau de données.
    • Toujours sur la feuille "Données", il est nécessaire de conserver le titre "Libellé géographique" pour le nom des régions/villes/... Si ce titre ne convient pas, il faudra également modifier la formule présente sur la colonne C de la feuille "Carte".
    • Si une autre carte est utilisée, ne pas oublier d'y affecter la macro "Carte_Click" via un clic droit sur la carte, de même si un autre nom est affecté à la carte (faîte une recherche sur "CarteBasRhin" dans l'éditeur Visual Basic, qui fut le nom de ma propre carte).
    • Pour modifier le texte de la boîte de texte, il faut modifier la ligne strInfo = "Vous avez cliqué sur la ville : " & Chr(12) & villeNom & " (" & villeNum & ")" & vbNewLine & "xxx" sur les macros "Carte_Click()" et "Select_Commune_Click()".
    • Il est également possible de modifier le nombre de chiffres significatifs affichés dans l'échelle. Pour cela, aller dans la macro "ColorMap" et modifier les 2 lignes
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      valEchelle(i) = ArrondiInf(valtarget, 2)  ' Arrondi de valtarget à 2 chiffres significatifs
      et
      Code : Sélectionner tout - Visualiser dans une fenêtre à part
      valEchelle(i) = ArrondiSup(valtarget, 2)
    • Cette carte peut également être modifiée automatiquement si une valeur ou la colonne de données est modifiée. Cette fonctionnalité a pour l'instant été désactivée. Pour la réactiver, supprimer les apostrophes de la macro "Worksheet_Change" (sous la macro "Select_Commune_Click").


    Je pense n'avoir rien oublié et avoir corrigé tous les bugs, et j'espère que mes explications sont suffisamment claires.

    Pour finir, je tiens à remercier plus particulièrement Arkham46, bbil et Daniel.C qui m'ont apportés une grande aide à ma modeste contribution à l'amélioration de cette carte, ainsi que les autres forumeurs qui sont intervenus ponctuellement sur le projet.
    Fichiers attachés Fichiers attachés

Discussions similaires

  1. [XL-2007] Créer une zone de liste avec les données disposées en ligne
    Par pmarquis dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/05/2015, 19h09
  2. Réponses: 5
    Dernier message: 23/05/2008, 16h26

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo