Créer une transparence dynamique sur une plage de cellules, Excel VBA

Créer une transparence dynamique sur une plage de cellules, Excel VBA

Voici un code VBA détaillé pour créer une transparence dynamique sur une plage de cellules dans Excel. L’idée ici est d’ajuster la transparence d’une forme (par exemple, un rectangle) superposée à une plage de cellules. Comme Excel ne permet pas directement de définir la transparence pour les plages de cellules, nous utilisons une forme semi-transparente pour recouvrir la plage sélectionnée.
Explication détaillée
1. Concept :

  • Excel ne permet pas de définir la transparence directement pour les plages de cellules.
  • Nous superposons une forme (rectangle) sur la plage sélectionnée et ajustons sa transparence dynamiquement.
  • La transparence peut être contrôlée par VBA en modifiant la propriété Fill.Transparency de la forme.

2. Étapes du code VBA :

  • L’utilisateur sélectionne une plage de cellules.
  • Une forme (rectangle) est créée sur cette plage.
  • Le code ajuste la position, la taille et la transparence de la forme.
  • La transparence peut être définie dynamiquement (par exemple, en fonction d’une entrée utilisateur ou d’un processus en boucle).

Code VBA

Sub CreateDynamicRangeTransparency()
    Dim ws As Worksheet
    Dim rng As Range
    Dim shp As Shape
    Dim transparencyLevel As Double
    Dim leftPos As Double, topPos As Double, widthSize As Double, heightSize As Double
    ' Définir la feuille active
    Set ws = ActiveSheet
    ' Demander à l'utilisateur de sélectionner une plage
    On Error Resume Next
    Set rng = Application.InputBox("Sélectionnez une plage pour appliquer la transparence :", Type:=8)
    On Error GoTo 0
    ' Quitter si aucune plage n'est sélectionnée
    If rng Is Nothing Then Exit Sub
    ' Supprimer la forme existante si elle est présente
    For Each shp In ws.Shapes
        If shp.Name = "TransparencyOverlay" Then
            shp.Delete
            Exit For
        End If
    Next shp
    ' Récupérer la position et la taille de la plage sélectionnée
    leftPos = rng.Left
    topPos = rng.Top
    widthSize = rng.Width
    heightSize = rng.Height
    ' Créer une forme rectangle au-dessus de la plage sélectionnée
    Set shp = ws.Shapes.AddShape(msoShapeRectangle, leftPos, topPos, widthSize, heightSize)
    ' Définir les propriétés de la forme
    With shp
        .Name = "TransparencyOverlay"  ' Donner un nom unique à la forme
        .Fill.ForeColor.RGB = RGB(200, 200, 200) ' Couleur gris clair
        .Fill.Transparency = 0.5 ' Définir le niveau de transparence (0 = opaque, 1 = totalement transparent)
        .Line.Visible = msoFalse ' Supprimer la bordure
    End With
    ' Optionnel : Permettre à l'utilisateur de définir un niveau de transparence
    transparencyLevel = InputBox("Entrez le niveau de transparence (de 0 à 1) :", "Contrôle de transparence", 0.5)
    ' Vérifier que l'entrée est valide
    If transparencyLevel >= 0 And transparencyLevel <= 1 Then
        shp.Fill.Transparency = transparencyLevel
    Else
        MsgBox "Valeur de transparence invalide. Elle doit être comprise entre 0 et 1.", vbExclamation
    End If
    ' Nettoyage
    Set rng = Nothing
    Set shp = Nothing
End Sub

Comment cela fonctionne
1. Entrée de l’utilisateur :

  • L’utilisateur sélectionne une plage de cellules via Application.InputBox(Type:=8), ce qui garantit que l’objet sélectionné est une plage valide.
  • Si l’utilisateur annule, la macro se termine.

2. Création de la forme :

  • Le code supprime toute forme existante nommée "TransparencyOverlay", garantissant qu’une seule forme soit présente.
  • La position et la taille de la plage sélectionnée sont récupérées (les propriétés Left, Top, Width et Height).
  • Un rectangle est dessiné sur cette plage en utilisant Shapes.AddShape.

3. Contrôle de la transparence :

  • La transparence est définie par défaut à 0.5 (50 % de transparence).
  • L’utilisateur est invité à entrer un niveau de transparence personnalisé via une InputBox (0 pour opaque, 1 pour totalement transparent).
  • La validation de l’entrée garantit que la valeur est comprise entre 0 et 1.

4. Ajustements finaux :

  • La forme est formatée sans bordure et avec un remplissage gris clair par défaut.
  • Enfin, les objets sont nettoyés en libérant les références aux variables.

Améliorations possibles

  • Mises à jour dynamiques : Lier la transparence à une valeur de cellule pour une mise à jour en temps réel.
  • Personnalisation des couleurs : Permettre à l’utilisateur de choisir une couleur de remplissage pour la forme.
  • Déplacement de la forme : Ajuster la transparence dynamiquement lorsque l’utilisateur fait défiler ou modifie la sélection.
Facebook
Twitter
LinkedIn
WhatsApp
Email
Print
0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x