Redimentionner une photo via VBA

Fab117

XLDnaute Impliqué
Salut,
J'avais fait une super macro dans Excel 2003 qui après avoir mis une photo dans une cellule redimentionnait la photo.
Le code était :
LigneOuCollerLaPhoto = 7
For i = 1 To NombreDeLigneTotale
Cells(LigneOuCollerLaPhoto, 1).Select
NomDeLaPhoto = Cells(LigneOuCollerLaPhoto, 1)

' Va chercher la photo dans le répertoire ...\TmpPhotosMiniatures
CheminDAccesAuxPhotos = ThisWorkbook.Path & "\TmpPhotosMiniatures\"
' Insère la photo dans la cellule selectionnée
ActiveSheet.Pictures.Insert( _
CheminDAccesAuxPhotos & NomDeLaPhoto). _
Select ' Le nom de la photo est malheureusement définie
' Redimentionnement de la photo
Selection.ShapeRange.ScaleWidth 0.48, msoFalse, msoScaleFromTopLeft
Selection.ShapeRange.ScaleHeight 0.48, msoFalse, msoScaleFromTopLeft

LigneOuCollerLaPhoto = LigneOuCollerLaPhoto + 3
Next i
Je suis passé à Excel 2007 et avec le même code, il insère toutes les photos les unes sur les autres (hors cellule) en tailles trop petites.
J'ai essayé via l'éditeur de macro d'enregistrer le redimentionnement d'une photo, mais il n'enregistre pas ces opérations.

Quelqu'un saurait-il pourquoi ça ne fonctionne plus et surtout comment remédier ?

Merci d'avance.

Fab
 
G

Guest

Guest
Re : Redimentionner une photo via VBA

Bonjour,

Essaie quelque chose comme ceci:

Code:
    With ActiveSheet.Pictures.Insert(CheminDAccesAuxPhotos & NomDeLaPhoto)
        .Top = c.Top
        .Left = c.Left
        .TopLeftCell = c
        .Height = c.Height
    End With

Où c est une cellule déterminée préalablement.

A+
 

Fab117

XLDnaute Impliqué
Re : Redimentionner une photo via VBA

Salut,
Merci pour ton aide, mais ça ne fonctionne pas.
Apparement il a du mal a trouver la bonne cellule.
Lorsque je fais :
Sub essai()
LigneOuCollerLaPhoto = 7
NombreDeLigneTotale = 21
For i = 1 To NombreDeLigneTotale
Cells(LigneOuCollerLaPhoto, 1).Select
MsgBox "toto " & i
i = i + 3
Next i
End Sub

Il selectionne bien "A7" pour la première MsgBox, mais il y reste ensuite (pourtant dans la Msgbox il indique bien le bon numéro "i").

Fab
 
G

Guest

Guest
Re : Redimentionner une photo via VBA

Re,

Code:
For i = 1 To NombreDeLigneTotale step 3
MsgBox Cells(i, 1).Address
Next i

Les Select sont rarement nécessaire en VBA. Ils ralentissent les macros.

Sans plus de renseignement ni d'exemple difficile d'en dire plus.

A+
 

Fab117

XLDnaute Impliqué
Re : Redimentionner une photo via VBA

Salut,
Malheureusement, ça n'est pas la solution.
J'ai préparé un fichier exemple, mais zipper, il fait encore 600 kb (à cause des photos) et je ne peux pas le joindre en pièce attaché à ce message.
Je l'ai donc envoyé par email sur YopMail : E-mail jetable et anonyme.
login : Forum_Excel_Download_Fab
Dans le premier onglet, ce que j'avais avec Excel 2003
Dans le deuxième onglet, ce que j'ai avec Excel 2007
Troisième onglet pour tester la macro

Fab
 

Fab117

XLDnaute Impliqué
Re : Redimentionner une photo via VBA

Resalut,
En remplacant :
Cells(LigneOuCollerLaPhoto, 1).Select par Range("A" & i).Select
Il selectionne correctement la cellule (le groupe de cellules)
=>
Sub essai()
LigneOuCollerLaPhoto = 7
NombreDeLigneTotale = 21
For i = 7 To NombreDeLigneTotale
Range("A" & i).Select
MsgBox "toto " & i
i = i + 3
Next i
End Sub

par contre après, il n'insère pas les photos correctement et ne les redimentionne pas non plus correctement.

Fab
 
G

Guest

Guest
Re : Redimentionner une photo via VBA

Re,

Euh quand je te demandais de joindres des fichiers, c'était en une seule fois dans un fichier Zip avec des photo compressées.

Dans le fichier joint la macro fonctionne.
Je n'ai pas trop bien compris ce que tu voulais faire du nom de l'image, aussi je te laisse adapter.

Tu as le principe général pour manipuler tes objets images.

Le zip contient le dossier avec les photos.

A+
 

Fab117

XLDnaute Impliqué
Re : Redimentionner une photo via VBA

Salut,
Merci pour ton aide.
Ton code fait exactement ce que je souhaite et il est beaucoup plus simple que le mien.
Pour le zip contenant le tout, j'ai essayé, mais il me le refusait car taille supérieure à 48.8 ko.

Encore merci et bonne soirée.

Fab
 

Discussions similaires

Statistiques des forums

Discussions
312 393
Messages
2 088 006
Membres
103 698
dernier inscrit
Guillaume MPOYI