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
etHeight
). - 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
et1
.
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.