Positionner un graphique au bon endroit avec Excel VBA

En plus d’ajuster la taille des graphiques, nous sommes nombreux à passer beaucoup de temps à leur placement approprié afin qu’ils soient bien présentés sur le tableau de bord managérial. La macro suivante permet de les localiser dans une plage définie afin qu’ils soient toujours au bon endroit.
Comment ça marche?
Chaque parcelle a quatre propriétés responsables de sa taille et de sa puissance. Il s’agit de Height, Width, Top et Left, dans l’ordre. Fait intéressant, chaque objet Range a les mêmes propriétés. Ainsi, si les propriétés Height, Width, Top et Left sont définies pour correspondre à une plage spécifique, le tracé sera simplement placé dans cette plage.
L’idée est de prendre note des plages de chaque zone du bureau lorsque vous décidez de l’apparence de la disposition du tableau de bord. Les données peuvent ensuite être utilisées dans une macro pour positionner chaque tracé de manière appropriée. Dans l’exemple suivant, nous ajusterons la position des quatre tracés afin qu’ils d’adaptent Height, Width, Top et Left vers la plage spécifiée.
Chaque carte sera identifiée par un nom. Les graphiques sont appelés par défaut le mot Graphique et le numéro de séquence (Graphique 1, Graphique 2, Graphique 3, etc.). Pour vérifier le nom de chaque graphique, cliquez dessus, puis dans le ruban, sélectionnez Format / Sélectionner le volet. Un panneau avec tous les objets de la feuille et leurs noms s’affichera.

Sub positionGraphique ()

'Etape 1: Déclaration des variables

Dim SnapPlage As Range

Set SnapPlage = ActiveSheet.Range("B6:G19")

With ActiveSheet.ChartObjects("Graphique 1")

.Height = SnapPlage.Height

.Width = SnapPlage.Width

.Top = SnapPlage.Top

.Left = SnapPlage.Left

End With

Set SnapRange = ActiveSheet.Range("B21:G34")

With ActiveSheet.ChartObjects("Graphique 2")

.Height = SnapPlage.Height

.Width = SnapPlage.Width

.Top = SnapPlage.Top

.Left = SnapPlage.Left

End With

Set SnapPlage = ActiveSheet.Range("I6:Q19")

With ActiveSheet.ChartObjects("Graphique 3")

.Height = SnapPlage.Height

.Width = SnapPlage.Width

.Top = SnapPlage.Top

.Left = SnapPlage.Left

End With

Set SnapPlage = ActiveSheet.Range("I21:Q34")

With ActiveSheet.ChartObjects("Graphique 4")

.Height = SnapPlage.Height

.Width = SnapPlage.Width

.Top = SnapPlage.Top

.Left = SnapPlage.Left

End With

End Sub

 

Comment appliquer une macro?
Pour implémenter cette macro, vous pouvez copier et coller son code dans un module standard. Dans ce but:
1. Utilisez la combinaison de touches Alt + F11 pour activer Visual Basic Editor.
2. Dans la fenêtre Projet, cliquez avec le bouton droit sur le nom du projet ou de la feuille.
3. Sélectionnez Insertion / Module.
4. Entrez ou collez le code dans le module nouvellement créé.

S’abonner
Notifier de
0 Commentaires
Inline Feedbacks
Voir tous les commentaires

Initiation à Excel

Fonctions Excel

Excel VBA

Macros VBA Utiles

Plus d'outils

Sur Facebook

Sur YouTube

0
Nous aimerions avoir votre avis, veuillez laisser un commentaire.x