Recadrage de graphiques dans une macro (Microsoft Excel)
John colle souvent des captures d’écran dans un classeur Excel. Il doit invariablement recadrer ces graphiques sur les quatre côtés d’une quantité définie. Parce qu’il effectue cette tâche si souvent, il se demande s’il existe un moyen de le faire facilement dans une macro.
Il existe plusieurs façons de résoudre ce problème, et toutes impliquent l’utilisation de macros. (Il n’y a pas de commandes intégrées pour effectuer une telle tâche.) Si vous voulez simplement recadrer un graphique que vous avez déjà ajouté, vous pouvez le faire en utilisant une simple macro comme celle-ci:
Sub CropPicture() With Selection.ShapeRange.PictureFormat .CropLeft = 200 .CropTop = 300 .CropBottom = 50 .CropRight = 100 End With End Sub
Vous devrez, bien sûr, spécifier les valeurs pour le recadrage. Ces valeurs sont spécifiées en points et elles sont relatives à la taille d’origine de l’image. Ainsi, par exemple, si vous avez précédemment mis à l’échelle l’image sélectionnée à 150% de sa taille d’origine, puis que vous exécutez cette macro, tous les paramètres de recadrage sembleront être 1,5 fois leurs valeurs réelles. (Ainsi, par exemple, le recadrage à gauche semblerait être de 300 pixels, et non de 200 pixels.)
La macro pourrait facilement être modifiée pour faire le collage et ensuite rogner automatiquement l’image. Cela se fait en ajoutant simplement une commande de collage sur une seule ligne:
Sub PasteCropPicture() ActiveSheet.Paste With Selection.ShapeRange.PictureFormat .CropLeft = 200 .CropTop = 300 .CropBottom = 50 .CropRight = 100 End With End Sub
La macro suppose que vous avez précédemment copié la capture d’écran dans le Presse-papiers; si vous essayez de l’exécuter sans l’avoir fait, vous risquez bien d’obtenir une erreur.
Il y a une autre chose à retenir lors de l’exécution d’une macro comme celle-ci:
Lorsque cela est fait, il apparaîtra que votre image a bougé de sa position d’origine dans la feuille de calcul. Cela se produit car le recadrage des quatre côtés changera le coin supérieur gauche apparent de l’image vers un emplacement différent. Vous pouvez, si vous le souhaitez, compenser cela dans votre macro en ajoutant du code qui « se souvient » du coin supérieur gauche de l’image:
Sub CropPositionPicture() Dim MyShape As Shape Dim LeftSide As Single Dim TopSide As Single Set MyShape = Selection.ShapeRange LeftSide = MyShape.Left TopSide = MyShape.Top With MyShape.PictureFormat .CropLeft = 200 .CropTop = 300 .CropBottom = 50 .CropRight = 100 End With MyShape.Left = LeftSide MyShape.Top = TopSide End Sub
Bien sûr, il y a une chose à retenir lorsque vous choisissez de recadrer des graphiques, quelle que soit la façon dont vous choisissez de le faire. Le recadrage n’affecte pas la taille de l’image. Ainsi, par exemple, si vous recadrez une capture d’écran de sorte que seule la moitié de l’écran soit visible, toutes les parties « invisibles » de la capture d’écran sont toujours là, occupant de l’espace. Cela ajoute à la taille globale de votre classeur, parfois étonnamment.
Le seul moyen de contourner ce problème est de pas recadrer les graphiques dans Excel.
Au lieu de cela, traitez l’image dans un programme graphique, enregistrez votre image traitée, puis insérez cette image traitée dans la feuille de calcul. Le résultat est des classeurs plus petits, ce qui signifie une sauvegarde et un chargement plus rapides.
ExcelTips est votre source pour une formation Microsoft Excel rentable.
Cette astuce (11580) s’applique à Microsoft Excel 2007, 2010, 2013 et 2016.