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 With

J'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 With

Je 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 Sub

J'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 With

Si 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.

Rechercher des sujets similaires à "degrade vba"