Microsoft 365 VBA : Rogner une capture d'écran

2pi_N

XLDnaute Nouveau
Bonjour,

J'ai un fichier Excel qui contient une macro qui prend une capture d'écran (je me place dans la feuille où je veux prendre la capture) et la colle dans une autre feuille, ma macro fonctionne jusque-là mais j'éprouve de la difficulté à rogner la capture d'écran

Voici mon code :
VB:
Sub capture_ecran()

Application.Wait Now + TimeValue("00:00:04")

Application.SendKeys "({1068})", True
DoEvents
Workbooks("Classeur2.xlsm").Worksheets("Feuil1").Paste

Dim shp As Shape
With ActiveSheet
    Set shp = Sheets("Feuil1").Shapes(Sheets("Feuil1").Shapes.Count)
End With

End Sub

1685969528015.png


L'image rognée que je veux obtenir après rognage ci-dessous
1685969605439.png


Dans l'exemple, je voudrais obtenir seulement la zone du graphique en rognant.
Y-a-t-il un moyen de rogner x longueur par la gauche ; y longueur par le bas ; z longueur par la droite et w longueur par le haut ? J'ai lu aussi des conversions à faire entre les pixels et centimètres de résolution d'image concernant le rognage
J'ai pensé aux méthodes CropLeft, CropBottom, CropRight de PictureFormat mais je tombais sur des erreurs, je dois mal les utiliser. J'ai essayé aussi l'enregistreur de macros mais je n'obtiens pas le résultat escompté ou je tombe sur des erreurs

Quelle sont les fonctions qu'il faut utiliser pour rogner une image par VBA ?

Merci d'avance pour votre aide
 

Pièces jointes

  • Classeur2.xlsm
    28 KB · Affichages: 1
Solution
Merci @vgendron, ce n'est pas exactement ce que je recherchais à faire, je voulais effectuer des captures d'écrans et rogner des images à des positions déjà inscrites dans le programme sans que l'utilisateur entre les positions de rognage.
J'ai donc poursuivi mes recherches et trouvé ce que je cherchais, on peut utiliser les méthodes CropLeft, CropBottom, CropRight et CropTop de PictureFormat qui utilisent des points pour rogner une image dans une macro : il faut convertir la longueur à retirer (affichée en cm) en points parce que ces méthodes fonctionnent en terme de points
1 cm équivaut à 28,35 points
shp.PictureFormat.CropLeft = 1699 ' on va retirer à gauche environ 59,92 cm
shp.PictureFormat.CropBottom = 87.9...

vgendron

XLDnaute Barbatruc
Hello

vas voir du coté des ressources
patricktoulon a fait quelque chose de pas mal du tout: si ca peut t'aider
 

2pi_N

XLDnaute Nouveau
Merci @vgendron, ce n'est pas exactement ce que je recherchais à faire, je voulais effectuer des captures d'écrans et rogner des images à des positions déjà inscrites dans le programme sans que l'utilisateur entre les positions de rognage.
J'ai donc poursuivi mes recherches et trouvé ce que je cherchais, on peut utiliser les méthodes CropLeft, CropBottom, CropRight et CropTop de PictureFormat qui utilisent des points pour rogner une image dans une macro : il faut convertir la longueur à retirer (affichée en cm) en points parce que ces méthodes fonctionnent en terme de points
1 cm équivaut à 28,35 points
shp.PictureFormat.CropLeft = 1699 ' on va retirer à gauche environ 59,92 cm
shp.PictureFormat.CropBottom = 87.9 ' on va retirer en bas environ 3,1 cm
shp.PictureFormat.CropRight = 487.33 ' on va retirer environ à droite 17,19 cm
shp.PictureFormat.CropTop = 212 ' on va retirer environ 7,48 cm

Cordialement,
 

Statistiques des forums

Discussions
312 215
Messages
2 086 329
Membres
103 182
dernier inscrit
moutassim.amine