Créer des cartes thermiques interactives, Excel VBA

Créer des cartes thermiques interactives, Excel VBA

Voici un code VBA détaillé pour créer des cartes thermiques interactives dans Excel, avec une explication complète.
Étape 1 : Préparer les données
Supposons que vos données sont dans une plage (par exemple, A1:D10), où chaque cellule représente un point de données. L’objectif est d’utiliser un code couleur pour représenter les valeurs dans cette plage, avec des valeurs plus élevées affichées dans une couleur plus intense et des valeurs plus faibles dans une couleur plus claire.
Étape 2 : Définir le code VBA
Voici le code VBA détaillé pour générer une carte thermique interactive en fonction des valeurs dans une plage spécifiée. Il utilise la mise en forme conditionnelle pour appliquer des couleurs en fonction de la valeur dans chaque cellule.

Sub CreateHeatMap()
    Dim ws As Worksheet
    Dim dataRange As Range
    Dim minValue As Double
    Dim maxValue As Double
    Dim cell As Range
    Dim colorScale As ColorScale
    ' Définir la feuille de calcul et la plage de données
    Set ws = ThisWorkbook.Sheets("Feuil1")  ' Changez "Feuil1" par le nom de votre feuille réelle
    Set dataRange = ws.Range("A1:D10")     ' Adaptez la plage à vos données
    ' Trouver les valeurs minimales et maximales dans la plage
    minValue = Application.WorksheetFunction.Min(dataRange)
    maxValue = Application.WorksheetFunction.Max(dataRange)
    ' Supprimer les mises en forme conditionnelles existantes
    dataRange.FormatConditions.Delete
    ' Appliquer une mise en forme conditionnelle avec une échelle de 3 couleurs
    With dataRange.FormatConditions.AddColorScale(3)
        ' Définir la couleur pour la valeur la plus basse (min)
        With .ColorScaleCriteria(1)
            .Type = xlConditionValueNumber
            .Value = minValue
            .FormatColor.Color = RGB(255, 255, 255)  ' Couleur claire (blanc)
        End With
        ' Définir la couleur pour la valeur médiane (moyenne)
        With .ColorScaleCriteria(2)
            .Type = xlConditionValueNumber
            .Value = (minValue + maxValue) / 2
            .FormatColor.Color = RGB(255, 255, 0)  ' Jaune (plage intermédiaire)
        End With
        ' Définir la couleur pour la valeur la plus élevée (max)
        With .ColorScaleCriteria(3)
            .Type = xlConditionValueNumber
            .Value = maxValue
            .FormatColor.Color = RGB(255, 0, 0)  ' Rouge (valeur élevée)
        End With
    End With
    ' Ajouter l'interactivité : Ajouter une liste déroulante pour changer dynamiquement l'échelle de couleurs
    Call AddInteractivity(ws, dataRange)
End Sub
Sub AddInteractivity(ws As Worksheet, dataRange As Range)
    ' Créer un ComboBox pour sélectionner le type d'échelle de couleurs
    Dim comboBox As Object
    Set comboBox = ws.Shapes.AddFormControl(xlDropDown, 10, 10, 150, 20) ' Position et taille
    With comboBox.ControlFormat
        .AddItem "Échelle de 3 couleurs"
        .AddItem "Échelle de 2 couleurs"
        .AddItem "Pas d'échelle de couleurs"
        .ListIndex = 1 ' Par défaut, échelle de 3 couleurs
    End With
    ' Ajouter un gestionnaire d'événements pour le changement du ComboBox
    ws.OnCalculate = "ChangeColorScale"
End Sub
Sub ChangeColorScale()
    Dim comboBox As Object
    Set comboBox = ActiveSheet.Shapes(1).ControlFormat
    ' Obtenir l'option sélectionnée dans la liste déroulante
    Dim selection As Integer
    selection = comboBox.ListIndex
    ' Réappliquer l'échelle de couleurs correspondante en fonction de la sélection
    Select Case selection
        Case 1 ' Échelle de 3 couleurs
            Call CreateHeatMap
        Case 2 ' Échelle de 2 couleurs (version simplifiée)
            Call ApplyTwoColorScale
        Case 3 ' Pas d'échelle de couleurs
            Call RemoveColorScale
    End Select
End Sub
Sub ApplyTwoColorScale()
    Dim ws As Worksheet
    Dim dataRange As Range
    Dim minValue As Double
    Dim maxValue As Double
    ' Définir la feuille de calcul et la plage de données
    Set ws = ThisWorkbook.Sheets("Feuil1")
    Set dataRange = ws.Range("A1:D10")
    ' Trouver les valeurs minimales et maximales
    minValue = Application.WorksheetFunction.Min(dataRange)
    maxValue = Application.WorksheetFunction.Max(dataRange)
    ' Supprimer les mises en forme conditionnelles existantes
    dataRange.FormatConditions.Delete
    ' Appliquer une échelle de 2 couleurs
    With dataRange.FormatConditions.AddColorScale(2)
        ' Définir la couleur pour la valeur la plus basse (min)
        With .ColorScaleCriteria(1)
            .Type = xlConditionValueNumber
            .Value = minValue
            .FormatColor.Color = RGB(255, 255, 255)  ' Blanc (valeur faible)
        End With
        ' Définir la couleur pour la valeur la plus élevée (max)
        With .ColorScaleCriteria(2)
            .Type = xlConditionValueNumber
            .Value = maxValue
            .FormatColor.Color = RGB(255, 0, 0)  ' Rouge (valeur élevée)
        End With
    End With
End Sub
Sub RemoveColorScale()
    Dim ws As Worksheet
    Dim dataRange As Range
    ' Définir la feuille de calcul et la plage de données
    Set ws = ThisWorkbook.Sheets("Feuil1")
    Set dataRange = ws.Range("A1:D10")
    ' Supprimer toutes les mises en forme conditionnelles
    dataRange.FormatConditions.Delete
End Sub

Étape 3 : Explication du Code
1. Fonction principale – CreateHeatMap

  • Feuille et Plage de données : La feuille de calcul (ws) et la plage de données (dataRange) sont définies, en ciblant les cellules contenant vos données.
  • Trouver les valeurs minimales et maximales : Les valeurs minimales et maximales dans la plage de données sont utilisées pour définir les limites de l’échelle de couleurs.
  • Mise en forme conditionnelle : La méthode FormatConditions.AddColorScale est utilisée pour appliquer une échelle de couleurs. Le code applique une échelle de 3 couleurs :
  • Blanc pour la valeur minimale.
  • Jaune pour la valeur médiane.
  • Rouge pour la valeur maximale.

2. Interactivité avec ComboBox – AddInteractivity

  • Un ComboBox est ajouté à la feuille pour permettre à l’utilisateur de sélectionner l’échelle de couleurs.
  • Le ComboBox offre trois options :

1. Échelle de 3 couleurs (par défaut).
2. Échelle de 2 couleurs (simplifiée).
3. Pas d’échelle de couleurs (supprime la mise en forme conditionnelle).

  • L’événement OnCalculate est déclenché lorsque l’utilisateur modifie la sélection dans le ComboBox, appelant ainsi la procédure ChangeColorScale.

3. Procédure ChangeColorScale

  • Cette procédure vérifie l’option sélectionnée dans le ComboBox et applique l’échelle de couleurs correspondante (ou la supprime).

4. Procédures ApplyTwoColorScale et RemoveColorScale

  • La fonction ApplyTwoColorScale applique une échelle de 2 couleurs : blanc pour la valeur minimale et rouge pour la valeur maximale.
  • La fonction RemoveColorScale supprime toute mise en forme conditionnelle existante.

Étape 4 : Exécution du Code

  • Exécutez la procédure CreateHeatMap pour initialiser la carte thermique avec des options interactives.
  • L’utilisateur peut choisir entre différentes échelles de couleurs via le ComboBox, offrant ainsi une expérience interactive de visualisation des données.

Conclusion :
Ce code permet de créer une carte thermique interactive avec VBA dans Excel, permettant à l’utilisateur de modifier dynamiquement l’échelle de couleurs pour la visualisation des données. Grâce à la mise en forme conditionnelle et à l’interactivité via VBA, vous pouvez personnaliser la présentation de vos données et offrir une visualisation plus claire et dynamique.

Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x