Private Sub Worksheet_Activate()
Dim FeuilCarte As Worksheet, feuilData As Worksheet, FeuilParam As Worksheet
Dim iData As Integer, nomPays As String, valeurPays As Double, nomForme As String
Dim iCouleur As Long, cellFind As Range, nbLignes As Long
Set FeuilCarte = ActiveSheet
Set feuilData = ThisWorkbook.Sheets("2010 Country Stat.")
Set FeuilParam = ThisWorkbook.Sheets("Liste pays forme")
'calculer la dernière ligne saisie dans la feuille de données (sans compter la dernière ligne de total)
nbLignes = feuilData.Range("A" & feuilData.Rows.Count).End(xlUp).Row
'boucler sur toutes les lignes de la feuille de données
For iData = 2 To nbLignes
'récupérer le nom du pays et sa valeur
nomPays = feuilData.Range("A" & iData).Text
valeurPays = feuilData.Range("O" & iData).Value * 100
'rechercher ce pays dans la colonne A de la feuille "Liste Pays-Forme"
Set cellFind = FeuilParam.Range("A:A").Find(nomPays, , xlValues, xlWhole)
'si on a trouvé le pays
If Not cellFind Is Nothing Then
'récupérer le nom de la forme associée au pays
nomForme = cellFind.Offset(0, 1).Text
'si un nom de forme est bien associé
If nomForme <> "" Then
'boucler sur toutes les lignes "code couleur"
For iCouleur = 2 To FeuilParam.Range("E" & FeuilParam.Rows.Count).End(xlUp).Row
'si on est sur la ligne correspondante à la valeur du pays
If (FeuilParam.Range("E" & iCouleur) < valeurPays) And (FeuilParam.Range("F" & iCouleur) >= valeurPays) Then
'colorier la forme du pays à la couleur associée
FeuilCarte.Shapes(nomForme).Fill.ForeColor.RGB = FeuilParam.Range("G" & iCouleur).Interior.Color
End If
Next iCouleur
End If
End If
Next iData
End Sub