Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Colorer une carte a partir d'un tableau

cedric82

XLDnaute Nouveau
Bonjour a tous,

Le langage VBA est un peu compliqué pour moi pourtant j'essaie de trouver des solutions mais parfois il faut savoir demander de l'aide.

Pour mon travail, j'utilise une carte des départements (trouvé sur le net) et un tableau pour la colorer
J utilise une Macro (trouvé sur le Net et modifié selon mes connaissances) que voici :

Sub ColorMap()
Dim oSheet As Excel.Worksheet ' Feuille
Dim lLine As Long ' Numéro de ligne
Dim loShape As Shape ' Forme
Dim lColor As Long ' Couleur
' Feuille contenant la carte
Set oSheet = ThisWorkbook.Sheets("Visites")
' Désactive le remplissage de la carte
oSheet.Shapes("Groupe 192").Fill.Visible = msoFalse
' Pour chaque ligne de Visites
For lLine = oSheet.UsedRange.Row + 1 To oSheet.UsedRange.Row + oSheet.UsedRange.Rows.Count
If oSheet.Cells(lLine, 3) = " " Then lColor = RGB(255, 255, 255)
If oSheet.Cells(lLine, 3) >= 0 And oSheet.Cells(lLine, 3) < 1 Then lColor = RGB(255, 255, 255)
If oSheet.Cells(lLine, 3) >= 1 And oSheet.Cells(lLine, 3) < 50 Then lColor = RGB(204, 204, 255)
If oSheet.Cells(lLine, 3) >= 51 And oSheet.Cells(lLine, 3) < 65 Then lColor = RGB(153, 153, 255)
If oSheet.Cells(lLine, 3) >= 66 And oSheet.Cells(lLine, 3) < 80 Then lColor = RGB(51, 51, 255)
If oSheet.Cells(lLine, 3) >= 81 And oSheet.Cells(lLine, 3) <= 99 Then lColor = RGB(0, 0, 204)
If oSheet.Cells(lLine, 3) = 100 Then lColor = RGB(0, 0, 102)
If oSheet.Cells(lLine, 3) = "B-" Then lColor = RGB(32, 224, 224)

' Parcours les départements de la carte
For Each loShape In oSheet.Shapes("Groupe 192").GroupItems
' Si la forme loShape a pour nom la valeur de la première colonne (l'identifiant FR-XX)
If loShape.Name = oSheet.Cells(lLine, 1) Then
' Réactive le remplissage de la forme
loShape.Fill.Visible = True
' Type de remplissage = couleur unie
loShape.Fill.Solid
' Pas de transparence
loShape.Fill.Transparency = 0#
' Couleur de remplissage
loShape.Fill.ForeColor.RGB = lColor
' La forme a été trouvée => on sort de la boucle
Exit For
End If
Next
Next
End Sub



Aujourd'hui je voudrais pouvoir faire 2 choses,
-mettre cette carte sur une autre feuille de mon classeur tout en la gardant interactive bien sur afin de créer des pages prêtes a imprimé rapidement ( j'ai essayé longuement et je ne comprends pas pourquoi je n'y arrive pas).
-Faire une Macro que j'affecterais a un bouton qui copierait d'un tableau identique d'une autre page uniquement les lignes comportant dans la colonne Visite une donnée précise (mon test c'était "B-") en recopiant b- et en copiant 0 dans les autres afin de colorer uniquement les départements contenants cette donnée. J'espère avoir été assez clair.

Vous allez peut être me trouvé bête mais je n'ai jamais eu de cours sur Excel et j'essaie d'apprendre petit a petit.





D'avance merci pour votre aide
 
Dernière édition:
Solution
Re,

Une p'tite dernière.

Quand on clique sur un département, on affiche son numéro, son nom et sa valeur de la feuille "Visites".
Pour refermer la boite d'information, cliquer sur le bouton OK ou bien sur la touche Esc.
On n'affiche les informations que pour les départements répondant au filtre actif.

cedric82

XLDnaute Nouveau
Pour cette version imaginons que je rajoute 2 colonnes a mon tableau et que je veuille que les infos de ces 2 colonnes ( D et E) s'affichent aussi comment s'écrirait le code et deuxième question comment verrouillé ma carte (pour que personne ne bouge les formes) sans bloqué "colormap" car quand je verrouille la modification des objets impossible du coup de changer de couleur Peut on faire cela?


D'avance merci pour le temps passer sur mon cas
 

Discussions similaires

Réponses
0
Affichages
352
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…