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