Mettre en couleur une carte (des formes) selon un critère

Bonjour,

Je suis en période de stage et j'analyse le panel fournisseur de transport pour mon entreprise.

J'essaie actuellement de réaliser une cartographie pour voir quelles sont les destinations les plus livrées de mon entreprise à : "destination".

Pour faire cette cartographie, j'ai regardé le tutoriel d'un youtuber qui m'a bien aidé. Le hic, c'est que dans son tutoriel, on met en couleur la carte et en une autre couleur la région cliquée. Or, ce que je voudrais, c'est mettre en couleur les départements (de france) selon un critère : celui du volume du Chiffre d'affaire (chiffre d'affaire=coût du transport).

Exemple :

  • si mon entreprise livre dans le département de l'Ain pour 100 000€ (100 000 représente le coût de transport total payé sur l'année), alors je met le département de l'Ain en rouge.
  • Si mon entreprise livre dans le département de corse pour 200€, alors je met ce département en blanc.

Je n'ai pas encore défini de légende. J'aimerais avoir la formulation VBA. Je voudrais que les formes (ici, les départements) soient coloriées selon le critère du CA. Le plus lisible (à mon avis) serait de colorier les département par tranche de Chiffre d'affaire (le chiffre d'affaire représente le coût du transport).

A noter que je suis une quiche de VBA, si j'ai réussi à faire la carte que j'ai joins à ce post, c'est grâce à une vidéo d'un youtuber qui est très pédagogue (qui parle à un débutant : https://www.youtube.com/watch?v=_AMJ4N43wFk ).

Voici le code VBA que j'ai fait (mais qui je pense ne sert à rien pour ce que je voudrais) :

Sub carteinteractive()
'déclaration des variables que l'on utilise dans la VBA

Dim NomCadre As String
Dim Shape
Dim NoLigne As Integer
Dim Departement As String
Dim NumDepartement As Integer
Dim CA As Integer
Dim Pourcentage As Single
Dim Prixmoyen As Currency
Dim Poidsmoyen As Integer
Dim Rang As Integer
Dim Nocolonne As Integer

'Shape = formes
'NoLigne et Nocolonne sont des variables de la VBA
'le reste des variables sont les critères du tableau

NomCadre = Application.Caller 'NomCadre=application.caller permet de donner un nom aux formes de la carte que l'on peut renommer
For Each Shape In ActiveSheet.Shapes 'cette formule permet de donner une couleur à toutes les formes de la carte (=shape)
Shape.Fill.ForeColor.RGB = RGB(248, 218, 140) 'RGB=RedGreenBlue
Next Shape

ActiveSheet.Shapes(NomCadre).Fill.ForeColor.RGB = RGB(52, 52, 52)
'cette formule permet de donner une couleur différente à la forme selectionnée

Range("I3:O98").Interior.ColorIndex = 0 'donne une couleur au tableau (ici blanche)
Range("I3:O98").Font.ColorIndex = 1 'donne une couleur à la police du tableau (ici noir)

For NoLigne = 3 To 98 'on définit la plage de ligne du tableau

Departement = Range("J" & NoLigne).Value 'tableau principal
NumDepartement = Range("I" & NoLigne).Value
CA = Range("K" & NoLigne).Value
Pourcentage = Range("L" & NoLigne).Value
Prixmoyen = Range("M" & NoLigne).Value
Poidsmoyen = Range("N" & NoLigne).Value
Rang = Range("O" & NoLigne).Value

'ajoute données fournisseurs
'on précise quelle colonne du tableau contient quel critère

If Departement = NomCadre Then 'si departement = nom de la forme (nomcadre), alors
    Range("I" & NoLigne).Select 'on colorie à partir de la colonne I
    For Nocolonne = 0 To 6    ' on colorie les 6 colonnes
        ActiveCell.Offset(0, Nocolonne).Interior.Color = RGB(248, 218, 140) 'couleur de remplissage de la ligne du tableau associée à sa forme selectionnée
        ActiveCell.Offset(0, Nocolonne).Font.Color = RGB(255, 47, 25) 'couleur de police de la ligne du tableau associée à sa forme selectionnée
 Next Nocolonne

Je pense qu'il est nécessaire que je parte sur une base vierge, mais vous êtes plus à même de me le dire.

Si quelqu'un à la bonté de me montrer par une vidéo ou un post les formules VBA à mettre, je suis preneur.

Je vous remercie d'avance,

Stéphane

Bonjour drihem70 et bienvenue sur le forum!

Sujet intéressant, et déjà traité en partie par différents membres, je pense qu'avant de te lancer dans des recherches complexes tu devrais regarder ce qui a déjà été proposé, surtout que tu ne connais que peu le VBA.

Pour la cartographie de France par région, je dois retrouver sur le forum l'excellent fichier d'un de nos membres. Tu utiliseras la carte des nouvelles régions ou les "anciennes"?

Pour ta formule de couleur c'est très simple:

Tu prends toutes tes valeurs. Le mini = le blanc (RGB = 255;255;255) et le max = le rouge (RGB = 255,0,0). Il suffira donc d'utiliser une régression linéaire, ce qui donnera RGB = 255, f(x),f(x)

Où f(x) =a*x + b

PS: RGB = red/green/blue -> chaque couleur est composée de ces 3 couleurs primaires

255,0,0 -> rouge | 0,255,0 -> vert | 0,0,255 -> bleu

------------- EDIT

https://forum.excel-pratique.com/post406690.html?hilit=CARTE%20REGIONS#p406690

Sur ce lien tu pourras trouver une simple carte de la France et de ses départements de pierrep56

Si cette carte convient, je te propose de travailler dessus pour la mise en couleur!

Bonjour,

Exemple en PJ

Ceuzin

Bonjour,

merci pour vos réponse et votre aide précieuse.

Du coup, la carte que vous m'avez joins Ceuzin est exactement ce qu'il me faut. Il n'y rien de plus simple à utiliser.

Je vous remercie beaucoup !

Stéphane

Rechercher des sujets similaires à "mettre couleur carte formes critere"