VBA : Centrer un graphique sur une plage de cellules

Ranipet

XLDnaute Junior
Bonjour,

Je voudrais qu'un grpahique fasse presque la taille d'une plage mais pas tout à fait (question esthétique, je n'aime pas quand le cadre du graph colle pile poil aux bords des cellules).

Actuellement, je fais ça :
Code:
    With ActiveSheet.ChartObjects(ActiveSheet.ChartObjects.Count) 'Placement en B3:L23
        .Left = Range("B3:L23").Left
        .Top = Range("B3:L23").Top
        .Width = Range("B3:L23").Width
        .Height = Range("B3:L23").Height
    End With
    With ActiveSheet.Shapes(ActiveSheet.ChartObjects(ActiveSheet.ChartObjects.Count).Name)
        .ScaleWidth 0.98, msoFalse, msoScaleFromTopLeft  'Redimensionnement
        .ScaleHeight 0.98, msoFalse, msoScaleFromTopLeft 'Redimensionnement
        .IncrementTop 4     'Décalage de quelques pixels
        .IncrementLeft 6    'Décalage de quelques pixels
    End With

Merci de me dire s'il y a une solution plus élégante que le .IncrementTop :eek:
 

James007

XLDnaute Barbatruc
Re : VBA : Centrer un graphique sur une plage de cellules

Bonjour,

Dans la mesure où toutes les objets Shapes ont "leur autonomie" ... tu ne peux les gérer que par rapport à l'écran ou à une cellule de référence ...

Ta première élégance est d'avoir composé un code qui fonctionne ... :)

A +
 

mromain

XLDnaute Barbatruc
Re : VBA : Centrer un graphique sur une plage de cellules

Bonjour Ranipet, James007,

Voici un essai :
VB:
Dim decalage

    decalage = 3
    With ActiveSheet.ChartObjects(ActiveSheet.ChartObjects.Count) 'Placement en B3:L23
        .Left = Range("B3:L23").Left + decalage
        .Top = Range("B3:L23").Top + decalage
        .Width = Range("B3:L23").Width - 2 * decalage
        .Height = Range("B3:L23").Height - 2 * decalage
    End With
a+
 
Dernière édition:

Ranipet

XLDnaute Junior
Re : VBA : Centrer un graphique sur une plage de cellules

Bonjour Ranipet, James007,

Voici un essai :
Merci c'est déjà nettement plus élégant :)

En tout cas ... pas à ma connaissance ...
Par contre, il existe
Code:
.ScaleHeight
qui te permet d'ajuster par rapport à la taille d'origine ...
Oui (c'est ce que j'utilisais) mais ScaleHeight ne centre pas ensuite :(
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 215
Messages
2 086 330
Membres
103 187
dernier inscrit
ebenhamel