Si j'ai bien compris ta demande, il faut utiliser la propriété GradientStops pour définir le point de fin du dégradé (valeur entre 0 et 1):
Code:
Dim Obj As Shape
Set Obj = ActiveSheet.Shapes(1)
With Obj.Fill
.ForeColor.SchemeColor = 11
.BackColor.SchemeColor = 10
.TwoColorGradient msoGradientHorizontal, 1
.GradientStops.Item(1).Position = 0.7
End With
J'utilise une méthode en faisant varier 2 rectangles mais après il exite peut être d'autres façons de faire.
N'hésitez je suis preneur, car j'ai très très peu de temps pour trouver une solution.
Je ne dispose pas d'Excel 2003, mais est ce que tu peux déja le faire manuellement sans macro ? Si ce n'est pas le cas, ça ne fonctionne ra pas plus par macro.