bonjour
comme beaucoup suis à la recherche d une solution de représentation sous excel ( 365) d une carte de france illustrant des secteurs commerciaux par département .
A ce titre la solution ci dessous me convient mais j ai plus de 15 vendeurs ... ds le tableau il n y en que 4 .

ai tenté de regarder le VBA ... mais je n y comprends rien...
pouvez vous m aider et modifier ce fichier pour que je puisse repartir les départements suivant cette équipe de 15 personnes ??
d avance merci
j ai passé plusieurs heures sur le sujet et mon patron n attends pas ...
cordialement
benoit



Citation Envoyé par jurassic pork Voir le message
hello,
houla 2300 lignes de code pour une procédure cela fait "exploser" le visual basic et c'est pour cela que tu as le message : erreur de compilation procédure trop longue
tout ceci peut ête simplifié en utilisant des boucles.
Si j'ai bien compris tu veux sur la carte mettre une couleur suivant la personne affectée à un département.
Pour réaliser ceci je te propose :
1 - on crée un dictionnaire avec les noms des personnes qui affecte une couleur à chaque personne (la couleur du fond de la cellule dans l'endroit où l'on trouve la liste des personnes (I5 à I8 de la feuille département
2 - on balaie tous les départements (dans la feuille départements ligne 3 à 98) et en fonction du nom de la personne affectée au département on colore dans la feuille Carte la forme du département avec la couleur affectée à la personne.
Pour utiliser un dictionnaire (dictionary) en VBA il faut ajouter la bibliothèque Microsoft Scripting Runtime aux références dans l'Editeur Visual Basic (menu Outils/Références)
Le code n'est plus trop long
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
Sub MaProcColoriage()
Dim dict As dictionary
Set dict = New dictionary
Dim Forme, Nom As String
' on crée un dictionnaire pour retrouver la couleur à utiliser par personne
For i = 5 To 8
dict.Item(Sheets("Départements").Range("I" & i).Value) = Sheets("Départements").Range("I" & i).Interior.Color
Next
For i = 3 To 98
        Nom = Sheets("Départements").Range("D" & i)   ' nom affecté au départeement
        Forme = Sheets("Départements").Range("E" & i) ' forme correspondant au département
        Sheets("Carte").Shapes(Forme).Fill.ForeColor.RGB = dict.Item(Nom) ' couleur affectée au nom
        Sheets("Carte").Shapes(Forme).Fill.Visible = msoTrue
        Sheets("Carte").Shapes(Forme).Fill.Solid
    Next
End Sub
et voici ce que cela donne :

Pièce jointe 214566

Ami calmant, J.P