XL 2016 RESOLU : Nommer automatiquement des images dans Powerpoint en VBA Excel

lulu_31

XLDnaute Nouveau
Bonjour,

J’ai un problème de migration d’une macro Excel de Excel 2007 vers Excel 2016.
Ma macro a pour but d’insérer une image dans un fichier powerpoint, puis de la mettre aux bonnes dimensions.
Dans Excel 2007, mon code est le suivant :

Element = Worksheets("Data").Range("F" & i).Value
Ref = Worksheets("Data").Range("G" & i).Value
lien_image = Worksheets(Element).Range("B1").Value & "\" & Ref & ".bmp"
Set oPicture = ppPres.Slides(i + 1).Shapes.AddPicture(lien_image, True, True, 381, 267)

… (je fais plusieurs modifications sur le slide)

If Element = "Autre" Then
Set oPicture = ppPres.Slides(i + 1).Shapes(Ref & ".bmp")
With oPicture
.LockAspectRatio = msoFalse
.Top = ppPres.Slides(i + 1).Shapes("Image").Top
.Left = 434.6
End With
Endif

Cette macro fonctionne très bien sous Excel 2007.
Dans Excel 2016, la macro s’arrête à la ligne en gras dans le code ci-dessus (Set oPicture = ppPres.Slides(i + 1).Shapes(Ref & ".bmp")).
La raison pour laquelle la macro ne fonctionne pas est que : lors de l’ajout d’une image dans Powerpoint avec 2007, l’objet créé (oPicture) prend automatiquement le nom du fichier image. Dans la version 2016, l’objet créé ne prend pas le nom de l’image mais s’appelle image1 (le numéro dépendant du nombre d’images insérées dans le fichier).

Comment faire pour nommer les images insérées par le nom du fichier source ?

Merci d’avance.
 

lulu_31

XLDnaute Nouveau
En ajoutant .Name = Ref & ".bmp" dans le With au moment où je crée l'image dans le ppt, l'image prend bien le nom que je souhaite. Mais j'ai toujours un message d'erreur lorsque j'essaye de sélectionner cette image (Erreur d'exécution 13 (incompatibilité de type))
.

Element = Worksheets("Data").Range("F" & i).Value
Ref = Worksheets("Data").Range("G" & i).Value
lien_image = Worksheets(Element).Range("B1").Value & "\" & Ref & ".bmp"
Set oPicture = ppPres.Slides(i + 1).Shapes.AddPicture(lien_image, True, True, 381, 267)
With oPicture
.LockAspectRatio = msoFalse
.Top = ppPres.Slides(i + 1).Shapes("Image").Top
.Left = ppPres.Slides(i + 1).Shapes("Image").Left
.ZOrder msoBringToFront
.Name = Ref & ".bmp" 'Nouvelle ligne
End With

... (je fais plusieurs modifications sur le slide)

If Element = "Autre" Then
Set oPicture = ppPres.Slides(i + 1).Shapes(Ref & ".bmp")
With oPicture
.LockAspectRatio = msoFalse
.Top = ppPres.Slides(i + 1).Shapes("Image").Top
.Left = 434.6
End With
Endif
 

lulu_31

XLDnaute Nouveau
En fait non, ça fonctionne !
J'avais ajouté un Dim oPicture as Shape qui faisait planter la macro !

Avant de créer le post, j'avais pourtant essayé d'ajouter la ligne oPicture.Name = Ref & ".bmp", mais j'avais surement déjà ajouté la définition de ma variable... :(

Merci beaucoup !
 

Discussions similaires

Statistiques des forums

Discussions
311 720
Messages
2 081 897
Membres
101 833
dernier inscrit
sandra25