Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

redimenssioner une image

10 réponses
Avatar
joseph84
Bonjour tout le monde,

j'ai besoin d'aide, je voudrais faire un print screen sur un fichier
et le coller sur un autre fichier et le redimenssioner.

est-ce que c est possible?

merci

10 réponses

Avatar
MichD
Bonjour,

En supposant que tu veuilles transformer une image("Michd") de
la feuil1 dans le classeur où tu copies la macro en Fichier image (.gif)
pour ensuite l'insérer dans le fichier de ton choix et dans la feuille
de ton choix

'================================ Sub test()

Dim Localisation As String
Dim Sh As Shape, F As Worksheet

'Où sera copié l'image
Localisation = "C:MichD.gif"

Application.ScreenUpdating = False
With ThisWorkbook 'à adapter
With Worksheets("Feuil1") 'à adapter
Set Sh = .Shapes("Michd")
Sh.CopyPicture
End With
Set F = Worksheets.Add
With F
.Paste
With .ChartObjects.Add(0, 0, _
Selection.Width, Selection.Height).Chart
.Paste
.Export Localisation, "GIF"
End With
End With
End With
Application.DisplayAlerts = False
F.Delete
Application.DisplayAlerts = True

With Workbooks("NomDuClasseur.xls") 'à adapter
With Worksheets("Feuil3") 'à adapter
.Shapes.AddPicture Filename:=Localisation, _
LinkToFile:=msoFalse, _
SaveWithDocument:=msoTrue, _
Left:=.Range("A5").Left, _
Top:=.Range("A5").Top, _
Width:=.Range("A5").Resize(, 5).Width, _
Height:=.Range("A5").Resize(5).Height
End With
End With
Kill Location
End Sub
'================================
MichD
--------------------------------------------
"joseph84" a écrit dans le message de groupe de discussion :


Bonjour tout le monde,

j'ai besoin d'aide, je voudrais faire un print screen sur un fichier
et le coller sur un autre fichier et le redimenssioner.

est-ce que c est possible?

merci
Avatar
joseph84
Merci pour ta réponse,

je voudrais que tu m'explique la ligne suivante:

Set Sh = .Shapes("Michd")

particulierement : .shapes("Michd")

juste pour etre un peux plus precis de ce que je veux faire :

-j'ai deux classeur et je voudrais faire un screenShot sur un des
fichier est venir le coller dans un endroit bien précis sur l'autre
classeur et je besoin aussi de controler les demissions du
screenShot.

merci
Avatar
MichD
| particulierement : .shapes("Michd")

***MichD est simplement le nom de l'image dans la feuille

| Set Sh = .Shapes("Michd")

***Sh est une variable objet qui pointe sur l'objet image("Michd")


Voici un autre exemple si tu veux faire un printscreen de l'écran du fichier
affiché à l'écran et copier l'image dans une feuille d'une autre classeur.

A ) Cette macro suppose que les 2 classeurs sont ouverts
B ) Elle fait une copie de l'écran lorsque la feuil1 est la feuille
active de l'application dans le classeur du classeur où tu
copieras la procédure et copie le "PrintScreen" dans la "Feuil3"
du classeur2.xls
C ) Volontairement, j'ai situé l'image à partir du coin supérieur gauche
de la cellule G5 de la feuil3 où l'image est copiée. Tu choisis
l'emplacement de ton choix et tu lui attribues la largeur et la hauteur
que tu désires.

'---------------------------------------
Sub test()
Application.Wait (Now + (TimeValue("0:00:01")))
Application.ScreenUpdating = False
With ThisWorkbook 'à adapter
With .Worksheets("Feuil1") 'à adapter
.Activate
ActiveWindow.VisibleRange.Select
Call Envoi_Touche_PrintScreen
With Workbooks("Classeur2.xls")
.Activate
With .Worksheets("Feuil3") 'à adapter
.Activate
.Paste
Selection.Left = .Range("G5").Left
Selection.Top = .Range("G5").Top
Selection.Width = 350
Selection.Height = 300
.Range("A1").Activate
End With
End With
.Parent.Activate
.Range("A1").Select
End With
End With
Application.DisplayAlerts = True
End Sub
'---------------------------------------
Sub Envoi_Touche_PrintScreen()
Application.SendKeys "(%{1068})"
End Sub
'---------------------------------------

MichD
--------------------------------------------


"joseph84" a écrit dans le message de groupe de discussion :


Merci pour ta réponse,

je voudrais que tu m'explique la ligne suivante:

Set Sh = .Shapes("Michd")

particulierement : .shapes("Michd")

juste pour etre un peux plus precis de ce que je veux faire :

-j'ai deux classeur et je voudrais faire un screenShot sur un des
fichier est venir le coller dans un endroit bien précis sur l'autre
classeur et je besoin aussi de controler les demissions du
screenShot.

merci
Avatar
MichD
Correctif à apporter :

Pour faire mouche à tout coup, je te suggère d'insérer une temporisation
comme ceci après cette ligne de code : Call Envoi_Touche_PrintScreen

Call Envoi_Touche_PrintScreen
Application.Wait (Now + (TimeValue("0:00:01")))

La procédure devient :
'---------------------------------------
Sub test()
Application.Wait (Now + (TimeValue("0:00:01")))
Application.ScreenUpdating = False
With ThisWorkbook 'à adapter
With .Worksheets("Feuil1") 'à adapter
.Activate
ActiveWindow.VisibleRange.Select
Call Envoi_Touche_PrintScreen
Application.Wait (Now + (TimeValue("0:00:01")))
With Workbooks("Classeur2.xls") ' à adapter
.Activate
With .Worksheets("Feuil3") 'à adapter
.Activate
.Paste
Selection.Left = .Range("G5").Left
Selection.Top = .Range("G5").Top
Selection.Width = 350
Selection.Height = 300
.Range("A1").Activate
End With
End With
.Parent.Activate
.Range("A1").Select
End With
End With
Application.DisplayAlerts = True
End Sub
'---------------------------------------
Sub Envoi_Touche_PrintScreen()
Application.SendKeys "(%{1068})"
End Sub
'---------------------------------------

MichD
--------------------------------------------
Avatar
joseph84
Merci beaucoup c'est parfait je voudrais savoir si je peux donner un
nom au print screen parce que j'ai a le supprimer par apres
Avatar
MichD
On pourrait aussi écrire la macro comme ceci :

A ) Lorsque l'on utilise la commande "Sendkeys", il faut lancer
la procédure à partir de l'interface de la feuille de calcul et non
directement à partir de la fenêtre de l'éditeur de code.

B ) Si la touche "NumLock" est désactivée suite à la procédure, tu dois
augmenter la temporisation légèrement après la ligne de code
Call Envoi_Touche_PrintScreen

C ) Cette approche te permet de choisir la cellule dans le coin supérieur
gauche de la feuille...

'---------------------------------------
Sub test()
Application.Wait (Now + (TimeValue("0:00:01")))
Application.ScreenUpdating = False
Application.Goto ThisWorkbook.Worksheets("Feuil1").Range("A1"), True
Call Envoi_Touche_PrintScreen
Application.Wait (Now + (TimeValue("0:00:02")))
Application.Goto Workbooks("Classeur2.xls").Worksheets("Feuil3").Range("G5"), True
With ActiveSheet
.Paste
Selection.Left = .Range("G5").Left
Selection.Top = .Range("G5").Top
Selection.Width = 350
Selection.Height = 300
.Range("A1").Activate
End With
Application.Goto ThisWorkbook.Worksheets("Feuil1").Range("A1"),True
Application.DisplayAlerts = True
End Sub
'---------------------------------------
Sub Envoi_Touche_PrintScreen()
Application.SendKeys "(%{1068})"
End Sub
'---------------------------------------

MichD
--------------------------------------------
Avatar
MichD
| si je peux donner un nom au print screen parce que j'ai a le supprimer par apres

Je ne comprends pas. Qu'est-ce que tu veux supprimer ? La procédure "Envoi_Touche_PrintScreen" ?



MichD
--------------------------------------------
"joseph84" a écrit dans le message de groupe de discussion :


Merci beaucoup c'est parfait je voudrais savoir si je peux donner un
nom au print screen parce que j'ai a le supprimer par apres
Avatar
joseph84
je voudrais supprimer l'image du print screen
Avatar
MichD
Dans le haut du module, tu déclares une variable
La procédure a été modifiée légèrement. Après que
la procédure a été exécutée au moins une fois, pour
supprimer la dernière image copiée,


Sub Supprimer_Image()
Sh.delete
End Sub

Public Sh As Shape
'-------------------------
Sub test150()
Application.Wait (Now + (TimeValue("0:00:01")))
Application.ScreenUpdating = False
With ThisWorkbook 'à adapter
With .Worksheets("Feuil1") 'à adapter
.Activate
ActiveWindow.VisibleRange.Select
Call Envoi_Touche_PrintScreen
Application.Wait (Now + (TimeValue("0:00:01")))
With Workbooks("Classeur2.xls") ' à adapter
.Activate
With .Worksheets("Feuil3") 'à adapter
.Activate
.Paste
Set Sh = Selection
Sh.Left = .Range("G5").Left
Sh.Top = .Range("G5").Top
Sh.Width = 350
Sh.Height = 300
.Range("A1").Activate
End With
End With
.Parent.Activate
.Range("A1").Select
End With
End With
Application.DisplayAlerts = True
End Sub



MichD
--------------------------------------------
"joseph84" a écrit dans le message de groupe de discussion :


je voudrais supprimer l'image du print screen
Avatar
joseph84
merci beaucoup pour ton aide rien sa fonctionne apres que j'ai change"
Application.ScreenUpdating = False " à true parce que le print screen
va se faire sur le classeur ou je veux coller mon print screen.

encore merci :)