OVH Cloud OVH Cloud

Sauver les images intégrées???

7 réponses
Avatar
Mathieu
Bonjours à vous tous!
J'ai des fichiers excel avec des images intégrées
Je voudrais savoir s'il est possible par vba de sauver ces images en fichier
"jpg" par exemple.
Merci d'avance...

7 réponses

Avatar
LSteph
Bonjour,
(Tu ne précises pas donc je suppose avec WindowsXP).
Oui tu peux
Dans excel copie l'image puis lance mspaint
dans la barre
Démarrer executer mspaint
et colle
tu n'as plus qu'à enregistrer sous le format que tu veux.

lSteph

"Mathieu" <m???@hotmail.com> a écrit dans le message de news:
%
Bonjours à vous tous!
J'ai des fichiers excel avec des images intégrées
Je voudrais savoir s'il est possible par vba de sauver ces images en
fichier "jpg" par exemple.
Merci d'avance...



Avatar
michdenis
Bonjour Mathieu,

voici une façon de faire :

L'exemple suivant suppose que tu as une image ("image 1") dans la "Feuil3" de ton classeur et que tu veuilles la transformer en
fichier ayant une extension jpg, enregistrée dans le répertoire c:

'-----------------------------
Sub ImageEnFichier()
Application.ScreenUpdating = False
With Worksheets("Feuil3").Shapes("Image 1")
Nom = .Name
.CopyPicture
End With
Workbooks.Add
ActiveSheet.Paste
With ActiveSheet.ChartObjects.Add(0, 0, _
Selection.Width, Selection.Height).Chart
.Paste
'Chemin où le fichier(image) sera enregistré
.export "C:" & Nom & ".jpg", "jpg"
End With
ActiveWorkbook.Close False
End Sub
'-----------------------------


Salutations!



"Mathieu" <m???@hotmail.com> a écrit dans le message de news: %
Bonjours à vous tous!
J'ai des fichiers excel avec des images intégrées
Je voudrais savoir s'il est possible par vba de sauver ces images en fichier
"jpg" par exemple.
Merci d'avance...
Avatar
fred
Bonjour Mathieu,

voici une façon de faire :

L'exemple suivant suppose que tu as une image ("image 1") dans la "Feuil3" de
ton classeur et que tu veuilles la transformer en fichier ayant une
extension jpg, enregistrée dans le répertoire c:

'-----------------------------
Sub ImageEnFichier()
Application.ScreenUpdating = False
With Worksheets("Feuil3").Shapes("Image 1")
Nom = .Name
.CopyPicture
End With
Workbooks.Add
ActiveSheet.Paste
With ActiveSheet.ChartObjects.Add(0, 0, _
Selection.Width, Selection.Height).Chart
.Paste
'Chemin où le fichier(image) sera enregistré
.export "C:" & Nom & ".jpg", "jpg"
End With
ActiveWorkbook.Close False
End Sub
'-----------------------------


Salutations!



"Mathieu" <m???@hotmail.com> a écrit dans le message de news:
% Bonjours à vous tous!
J'ai des fichiers excel avec des images intégrées
Je voudrais savoir s'il est possible par vba de sauver ces images en fichier
"jpg" par exemple.
Merci d'avance...


bonjour

peux tu expliquer ta ligne .chartobjects stp
je cherche à récupérer des images mais avec la dimension d'origine et
je me retrouve avec des images tronquées et de quelqes ko!!

merci d'avance
fred

--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net

Avatar
michdenis
Bonjour Fred,

Disons qu'il s'agit ici d'une "supercherie" afin d'avoir accès à la méthode "EXPORT" d'un objet "Chart" qui nous permet de créer le
fichier "image.jpg".

Si tu vas dans l'aide d'excel sous "ChartObject", tu pourras y lire ces 2 lignes qui décrivent assez bien ce que la procédure fait.
------------------
"L'objet ChartObject sert de contenant (cadre) à un objet Chart. Les propriétés et méthodes de l'objet ChartObject déterminent
l'aspect et la taille du graphique incorporé dans la feuille."
------------------
Évidemment une image n'est pas un graphique, mais on utilise le conteneur ChartObject pour lui passer un objet. Cet objet pourrait
être un textbox ou un bouton de commande de la feuille, cela ne ferait aucune différence.

La ligne de code suivante un graphique vide (le cadre du graphique). La méthode Add de l'objet ChartObjets a 4 paramêtres : Left
,Top Width ,Height . Les 2 permiers "0" dans le coin supérieur gauche de la feuille de calcul. et Selection.Width,
Selection.Height signifie que la hauteur et la largeur du cadre graphique sera de dimension de l'objet dans le presse-papier qui est
l'image que la procédure y a mise.

With ActiveSheet.ChartObjects.Add(0, 0, _
Selection.Width, Selection.Height).Chart

La ligne de code suivante : ".Paste" colle tout simplement l'objet "Image" dans le cadre graphique qui est lui l'objet sélectioné
au moment de coller l'image... c'est ce pourquoi l'image se retrouve dans le cadre graphique plutôt que dans la feuille de calcul.

Si tu veux vraiment voir ce qui se passe, exécute la procédure pas à pas et observe ce qui se passe dans le classeur ajouté entre
chaque ligne de code.

Et pour terminer et illustrer davantage mon propos, voici une procédure qui crée une image d'une plage de cellules en utilisant la
même technique :

'---------------------------------
Sub CreerImagePlageDeCellules()

Dim Nom As String
Application.ScreenUpdating = False
With Worksheets("Feuil1")
.Range("A1:C5").CopyPicture xlScreen, xlPicture
Nom = .Name
End With
Workbooks.Add
ActiveSheet.Paste
With ActiveSheet.ChartObjects.Add(0, 0, _
Selection.Width, Selection.Height).Chart
.Paste
'Chemin où le fichier(image) sera enregistré
.Export "C:" & Nom & ".jpg", "jpg"
End With
ActiveWorkbook.Close False
End Sub
'---------------------------------


Salutations!



"fred" a écrit dans le message de news:
Bonjour Mathieu,

voici une façon de faire :

L'exemple suivant suppose que tu as une image ("image 1") dans la "Feuil3" de
ton classeur et que tu veuilles la transformer en fichier ayant une
extension jpg, enregistrée dans le répertoire c:

'-----------------------------
Sub ImageEnFichier()
Application.ScreenUpdating = False
With Worksheets("Feuil3").Shapes("Image 1")
Nom = .Name
.CopyPicture
End With
Workbooks.Add
ActiveSheet.Paste
With ActiveSheet.ChartObjects.Add(0, 0, _
Selection.Width, Selection.Height).Chart
.Paste
'Chemin où le fichier(image) sera enregistré
.export "C:" & Nom & ".jpg", "jpg"
End With
ActiveWorkbook.Close False
End Sub
'-----------------------------


Salutations!



"Mathieu" <m???@hotmail.com> a écrit dans le message de news:
% Bonjours à vous tous!
J'ai des fichiers excel avec des images intégrées
Je voudrais savoir s'il est possible par vba de sauver ces images en fichier
"jpg" par exemple.
Merci d'avance...


bonjour

peux tu expliquer ta ligne .chartobjects stp
je cherche à récupérer des images mais avec la dimension d'origine et
je me retrouve avec des images tronquées et de quelqes ko!!

merci d'avance
fred

--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net

Avatar
fred
Bonjour Fred,

Disons qu'il s'agit ici d'une "supercherie" afin d'avoir accès à la méthode
"EXPORT" d'un objet "Chart" qui nous permet de créer le fichier "image.jpg".

Si tu vas dans l'aide d'excel sous "ChartObject", tu pourras y lire ces 2
lignes qui décrivent assez bien ce que la procédure fait. ------------------
"L'objet ChartObject sert de contenant (cadre) à un objet Chart. Les
propriétés et méthodes de l'objet ChartObject déterminent l'aspect et la
taille du graphique incorporé dans la feuille." ------------------
Évidemment une image n'est pas un graphique, mais on utilise le conteneur
ChartObject pour lui passer un objet. Cet objet pourrait être un textbox ou
un bouton de commande de la feuille, cela ne ferait aucune différence.

La ligne de code suivante un graphique vide (le cadre du graphique). La
méthode Add de l'objet ChartObjets a 4 paramêtres : Left ,Top Width
,Height . Les 2 permiers "0" dans le coin supérieur gauche de la feuille de
calcul. et Selection.Width, Selection.Height signifie que la hauteur et la
largeur du cadre graphique sera de dimension de l'objet dans le presse-papier
qui est l'image que la procédure y a mise.

With ActiveSheet.ChartObjects.Add(0, 0, _
Selection.Width, Selection.Height).Chart

La ligne de code suivante : ".Paste" colle tout simplement l'objet "Image"
dans le cadre graphique qui est lui l'objet sélectioné au moment de coller
l'image... c'est ce pourquoi l'image se retrouve dans le cadre graphique
plutôt que dans la feuille de calcul.

Si tu veux vraiment voir ce qui se passe, exécute la procédure pas à pas et
observe ce qui se passe dans le classeur ajouté entre chaque ligne de code.

Et pour terminer et illustrer davantage mon propos, voici une procédure qui
crée une image d'une plage de cellules en utilisant la même technique :

'---------------------------------
Sub CreerImagePlageDeCellules()

Dim Nom As String
Application.ScreenUpdating = False
With Worksheets("Feuil1")
.Range("A1:C5").CopyPicture xlScreen, xlPicture
Nom = .Name
End With
Workbooks.Add
ActiveSheet.Paste
With ActiveSheet.ChartObjects.Add(0, 0, _
Selection.Width, Selection.Height).Chart
.Paste
'Chemin où le fichier(image) sera enregistré
.Export "C:" & Nom & ".jpg", "jpg"
End With
ActiveWorkbook.Close False
End Sub
'---------------------------------


Salutations!



"fred" a écrit dans le message de news:

Bonjour Mathieu,

voici une façon de faire :

L'exemple suivant suppose que tu as une image ("image 1") dans la "Feuil3"
de ton classeur et que tu veuilles la transformer en fichier ayant une
extension jpg, enregistrée dans le répertoire c:

'-----------------------------
Sub ImageEnFichier()
Application.ScreenUpdating = False
With Worksheets("Feuil3").Shapes("Image 1")
Nom = .Name
.CopyPicture
End With
Workbooks.Add
ActiveSheet.Paste
With ActiveSheet.ChartObjects.Add(0, 0, _
Selection.Width, Selection.Height).Chart
.Paste
'Chemin où le fichier(image) sera enregistré
.export "C:" & Nom & ".jpg", "jpg"
End With
ActiveWorkbook.Close False
End Sub
'-----------------------------


Salutations!



"Mathieu" <m???@hotmail.com> a écrit dans le message de news:
% Bonjours à vous tous!
J'ai des fichiers excel avec des images intégrées
Je voudrais savoir s'il est possible par vba de sauver ces images en fichier
"jpg" par exemple.
Merci d'avance...


bonjour

peux tu expliquer ta ligne .chartobjects stp
je cherche à récupérer des images mais avec la dimension d'origine et
je me retrouve avec des images tronquées et de quelqes ko!!

merci d'avance
fred


bonjour

merci pour tes explications très claire,
petite question complémentaire , comment tester que la feuille contient
bien une "image 1 " pour passer au fichier suivant si il n'y a pas
d'image

merci d'avance

fred

--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net


Avatar
michdenis
Bonjour Fred,

Copie ce qui suit dans un module standard :

Il ne te reste plus qu'à renseigner la variable NomFeuille de la procédure NombreImagesDansFeuille.

'------------------------------
Sub NombreImagesDansFeuille()

Dim x As Integer, NomFeuille As String
NomFeuille = "Feuil1" '`a déterminer

If Image(NomFeuille, x) = True Then
MsgBox "La feuille " & NomFeuille & _
" contient " & x & " images."
Else
MsgBox "Aucune image dans cette feuille : " & _
NomFeuille & "."
End If
End Sub
'------------------------------
Function Image(feuille As String, Nb As Integer) As Boolean

Dim Sh As Shape
With Worksheets(feuille)
For Each Sh In .Shapes
If TypeName(Sh.OLEFormat.Object) = "Picture" Then
Nb = Nb + 1
End If
Next
End With
If Nb > 0 Then Image = True
Set Sh = Nothing
End Function
'------------------------------


Salutations!




"fred" a écrit dans le message de news:
Bonjour Fred,

Disons qu'il s'agit ici d'une "supercherie" afin d'avoir accès à la méthode
"EXPORT" d'un objet "Chart" qui nous permet de créer le fichier "image.jpg".

Si tu vas dans l'aide d'excel sous "ChartObject", tu pourras y lire ces 2
lignes qui décrivent assez bien ce que la procédure fait. ------------------
"L'objet ChartObject sert de contenant (cadre) à un objet Chart. Les
propriétés et méthodes de l'objet ChartObject déterminent l'aspect et la
taille du graphique incorporé dans la feuille." ------------------
Évidemment une image n'est pas un graphique, mais on utilise le conteneur
ChartObject pour lui passer un objet. Cet objet pourrait être un textbox ou
un bouton de commande de la feuille, cela ne ferait aucune différence.

La ligne de code suivante un graphique vide (le cadre du graphique). La
méthode Add de l'objet ChartObjets a 4 paramêtres : Left ,Top Width
,Height . Les 2 permiers "0" dans le coin supérieur gauche de la feuille de
calcul. et Selection.Width, Selection.Height signifie que la hauteur et la
largeur du cadre graphique sera de dimension de l'objet dans le presse-papier
qui est l'image que la procédure y a mise.

With ActiveSheet.ChartObjects.Add(0, 0, _
Selection.Width, Selection.Height).Chart

La ligne de code suivante : ".Paste" colle tout simplement l'objet "Image"
dans le cadre graphique qui est lui l'objet sélectioné au moment de coller
l'image... c'est ce pourquoi l'image se retrouve dans le cadre graphique
plutôt que dans la feuille de calcul.

Si tu veux vraiment voir ce qui se passe, exécute la procédure pas à pas et
observe ce qui se passe dans le classeur ajouté entre chaque ligne de code.

Et pour terminer et illustrer davantage mon propos, voici une procédure qui
crée une image d'une plage de cellules en utilisant la même technique :

'---------------------------------
Sub CreerImagePlageDeCellules()

Dim Nom As String
Application.ScreenUpdating = False
With Worksheets("Feuil1")
.Range("A1:C5").CopyPicture xlScreen, xlPicture
Nom = .Name
End With
Workbooks.Add
ActiveSheet.Paste
With ActiveSheet.ChartObjects.Add(0, 0, _
Selection.Width, Selection.Height).Chart
.Paste
'Chemin où le fichier(image) sera enregistré
.Export "C:" & Nom & ".jpg", "jpg"
End With
ActiveWorkbook.Close False
End Sub
'---------------------------------


Salutations!



"fred" a écrit dans le message de news:

Bonjour Mathieu,

voici une façon de faire :

L'exemple suivant suppose que tu as une image ("image 1") dans la "Feuil3"
de ton classeur et que tu veuilles la transformer en fichier ayant une
extension jpg, enregistrée dans le répertoire c:

'-----------------------------
Sub ImageEnFichier()
Application.ScreenUpdating = False
With Worksheets("Feuil3").Shapes("Image 1")
Nom = .Name
.CopyPicture
End With
Workbooks.Add
ActiveSheet.Paste
With ActiveSheet.ChartObjects.Add(0, 0, _
Selection.Width, Selection.Height).Chart
.Paste
'Chemin où le fichier(image) sera enregistré
.export "C:" & Nom & ".jpg", "jpg"
End With
ActiveWorkbook.Close False
End Sub
'-----------------------------


Salutations!



"Mathieu" <m???@hotmail.com> a écrit dans le message de news:
% Bonjours à vous tous!
J'ai des fichiers excel avec des images intégrées
Je voudrais savoir s'il est possible par vba de sauver ces images en fichier
"jpg" par exemple.
Merci d'avance...


bonjour

peux tu expliquer ta ligne .chartobjects stp
je cherche à récupérer des images mais avec la dimension d'origine et
je me retrouve avec des images tronquées et de quelqes ko!!

merci d'avance
fred


bonjour

merci pour tes explications très claire,
petite question complémentaire , comment tester que la feuille contient
bien une "image 1 " pour passer au fichier suivant si il n'y a pas
d'image

merci d'avance

fred

--
Ceci est une signature automatique de MesNews.
Site : http://www.mesnews.net


Avatar
fred
merci pour ton aide
tout est ok

Fred
Bonjour Fred,

Copie ce qui suit dans un module standard :

Il ne te reste plus qu'à renseigner la variable NomFeuille de la procédure
NombreImagesDansFeuille.

'------------------------------
Sub NombreImagesDansFeuille()

Dim x As Integer, NomFeuille As String
NomFeuille = "Feuil1" '`a déterminer

If Image(NomFeuille, x) = True Then
MsgBox "La feuille " & NomFeuille & _
" contient " & x & " images."
Else
MsgBox "Aucune image dans cette feuille : " & _
NomFeuille & "."
End If
End Sub
'------------------------------
Function Image(feuille As String, Nb As Integer) As Boolean

Dim Sh As Shape
With Worksheets(feuille)
For Each Sh In .Shapes
If TypeName(Sh.OLEFormat.Object) = "Picture" Then
Nb = Nb + 1
End If
Next
End With
If Nb > 0 Then Image = True
Set Sh = Nothing
End Function
'------------------------------


Salutations!




"fred" a écrit dans le message de news:

Bonjour Fred,

Disons qu'il s'agit ici d'une "supercherie" afin d'avoir accès à la méthode
"EXPORT" d'un objet "Chart" qui nous permet de créer le fichier
"image.jpg".

Si tu vas dans l'aide d'excel sous "ChartObject", tu pourras y lire ces 2
lignes qui décrivent assez bien ce que la procédure fait. ------------------
"L'objet ChartObject sert de contenant (cadre) à un objet Chart. Les
propriétés et méthodes de l'objet ChartObject déterminent l'aspect et la
taille du graphique incorporé dans la feuille." ------------------
Évidemment une image n'est pas un graphique, mais on utilise le conteneur
ChartObject pour lui passer un objet. Cet objet pourrait être un textbox ou
un bouton de commande de la feuille, cela ne ferait aucune différence.

La ligne de code suivante un graphique vide (le cadre du graphique). La
méthode Add de l'objet ChartObjets a 4 paramêtres : Left ,Top Width
,Height . Les 2 permiers "0" dans le coin supérieur gauche de la feuille de
calcul. et Selection.Width, Selection.Height signifie que la hauteur et la
largeur du cadre graphique sera de dimension de l'objet dans le
presse-papier qui est l'image que la procédure y a mise.

With ActiveSheet.ChartObjects.Add(0, 0, _
Selection.Width, Selection.Height).Chart

La ligne de code suivante : ".Paste" colle tout simplement l'objet "Image"
dans le cadre graphique qui est lui l'objet sélectioné au moment de coller
l'image... c'est ce pourquoi l'image se retrouve dans le cadre graphique
plutôt que dans la feuille de calcul.

Si tu veux vraiment voir ce qui se passe, exécute la procédure pas à pas et
observe ce qui se passe dans le classeur ajouté entre chaque ligne de code.

Et pour terminer et illustrer davantage mon propos, voici une procédure qui
crée une image d'une plage de cellules en utilisant la même technique :

'---------------------------------
Sub CreerImagePlageDeCellules()

Dim Nom As String
Application.ScreenUpdating = False
With Worksheets("Feuil1")
.Range("A1:C5").CopyPicture xlScreen, xlPicture
Nom = .Name
End With
Workbooks.Add
ActiveSheet.Paste
With ActiveSheet.ChartObjects.Add(0, 0, _
Selection.Width, Selection.Height).Chart
.Paste
'Chemin où le fichier(image) sera enregistré
.Export "C:" & Nom & ".jpg", "jpg"
End With
ActiveWorkbook.Close False
End Sub
'---------------------------------


Salutations!



"fred" a écrit dans le message de news:

Bonjour Mathieu,

voici une façon de faire :

L'exemple suivant suppose que tu as une image ("image 1") dans la "Feuil3"
de ton classeur et que tu veuilles la transformer en fichier ayant une
extension jpg, enregistrée dans le répertoire c:

'-----------------------------
Sub ImageEnFichier()
Application.ScreenUpdating = False
With Worksheets("Feuil3").Shapes("Image 1")
Nom = .Name
.CopyPicture
End With
Workbooks.Add
ActiveSheet.Paste
With ActiveSheet.ChartObjects.Add(0, 0, _
Selection.Width, Selection.Height).Chart
.Paste
'Chemin où le fichier(image) sera enregistré
.export "C:" & Nom & ".jpg", "jpg"
End With
ActiveWorkbook.Close False
End Sub
'-----------------------------


Salutations!



"Mathieu" <m???@hotmail.com> a écrit dans le message de news:
% Bonjours à vous tous!
J'ai des fichiers excel avec des images intégrées
Je voudrais savoir s'il est possible par vba de sauver ces images en
fichier "jpg" par exemple.
Merci d'avance...


bonjour

peux tu expliquer ta ligne .chartobjects stp
je cherche à récupérer des images mais avec la dimension d'origine et
je me retrouve avec des images tronquées et de quelqes ko!!

merci d'avance
fred


bonjour

merci pour tes explications très claire,
petite question complémentaire , comment tester que la feuille contient
bien une "image 1 " pour passer au fichier suivant si il n'y a pas
d'image

merci d'avance

fred



--
fred