Dégradé cellule par VBA
Bonsoir à tous,
Je viens vers vous car je suis embêté avec un codage VBA qui ne veut pas fonctionner.
Mon but : que le fond de certaines cellules soit automatiquement un dégradé comme je souhaite.
En utilisant l'enregistreur de macro, j'ai réussi à obtenir ceci :
Range("A4").Select
With Selection.Interior
.Pattern = xlPatternLinearGradient
.Gradient.Degree = 270
.Gradient.ColorStops.Clear
End With
With Selection.Interior.Gradient.ColorStops.Add(0)
.Color = 676095
.TintAndShade = 0
End With
With Selection.Interior.Gradient.ColorStops.Add(1)
.ThemeColor = xlThemeColorDark1
.TintAndShade = 0
End WithJ'ai tenté d'adapter comme ceci :
With .Cells(l + 1, 1)
With .Interior
.Pattern = xlPatternLinearGradient
.Gradient.Degree = 270
.Gradient.ColorStops.Clear
End With
.Interior.Gradient.ColorStops.Add(0).Color = 676095
.Interior.Gradient.ColorStops.Add(1).Color = 16777215
End WithJe ne sais pas pourquoi cela ne fonctionne pas. Quelqu'un saurait-il m'aider ?
Merci !
Bonsoir
Essayes en enlevant le . (point) devant le Cells(l+1......
Sub test()
Dim L As Long
With Cells(L + 1, 1)
With .Interior
.Pattern = xlPatternLinearGradient
.Gradient.Degree = 270
.Gradient.ColorStops.Clear
End With
.Interior.Gradient.ColorStops.Add(0).Color = 676095
.Interior.Gradient.ColorStops.Add(1).Color = 16777215
End With
End SubJ'obtiens la même chose qu'avec la 1ère macro
Bonjour Banzai
Et déjà, merci pour ta réponse. Je viens d'essayer de faire la même chose en enlevant le point et en mettant un .Activate après la ligne With Sheets(MonthName(mois)) mais il semble que ça ne veuille pas.
Le point est présent dans ma macro parce qu'il y a une boucle sur plusieurs feuilles (cf extrait suivant).
Sub CréerMois()
'Améliorer la réactivité d'Excel
Application.ScreenUpdating = False
'Début Boucle des mois
For mois = 1 To 12
With Sheets(MonthName(mois))
'----------- MISE EN FORME DES NOMS -----------
'Déterminer der_lig_bulle
der_lig_bulle = Sh_BDD.Range("A" & Rows.Count).End(xlUp).Row
'Mise en forme de la colonne et RAZ Données
With .Range(.Cells(2, 1), .Cells(Rows.Count, 1))
.RowHeight = 15
.ColumnWidth = 24.29
.Clear
End With
'Mise en forme bulles
l = 2
For bu = 2 To 10
.Cells(l, 1).RowHeight = 6
With .Cells(l + 1, 1)
.Value = Sh_BDD.Cells(bu, 7)
.Font.Bold = True
.HorizontalAlignment = xlCenter
With .Borders(xlEdgeLeft)
.LineStyle = xlContinuous
.Weight = xlThin
.Color = RGB(0, 0, 0)
End With
With .Borders(xlEdgeRight)
.LineStyle = xlContinuous
.Weight = xlThin
.Color = RGB(0, 0, 0)
End With
With .Borders(xlEdgeTop)
.LineStyle = xlContinuous
.Weight = xlThin
.Color = RGB(90, 90, 90)
End With
With .Borders(xlEdgeBottom)
.LineStyle = xlDash
.Weight = xlThin
.Color = RGB(255, 80, 10)
End With
With .Interior
.Pattern = xlPatternLinearGradient
.Gradient.Degree = 270
.Gradient.ColorStops.Clear
End With
.Interior.Gradient.ColorStops.Add(0).Color = 676095
.Interior.Gradient.ColorStops.Add(1).Color = 16777215
End WithSi les codes du message précédent fonctionnent tous deux, il y a sûrement une erreur dans mon code ci-dessus. Mais j'ai beau prendre mon écran et tourner le code dans tous les sens, je ne vois pas où est l'erreur (à noter que tout ce qui est bordures, cela fonctionne).
Je suis content de voir que c'est toi qui me répond. Tu m'avais déjà beaucoup aidé.
Bonne journée
Bonjour
Ton fichier est indispensable
Tu y indiques exactement quelles cellules tu veux colorier
Bonjour Banzai
Finalement, c'est pas la peine, je viens de trouver où était le problème.
Quelques lignes plus loin, j'avais la demande suivante :
.Range("A1", .Cells(der_lig + 1, der_col)).Interior.Color = RGB(255, 255, 255)En remplaçant A1 par B1, ma macro fonctionne impeccablement.
Merci quand même pour l'aide.