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.