Problème d'insertion d'image en vba. BMP OK, JPG NOK !
Bonjour à tous,
après avoir épluché une bonne partie des sujets relatifs à mon problème, je voudrais up celui-ci pour vous faire part d'un problème qui me paraît assez bizarre.
Je suis un peu coincé donc, voici les détails :
J'ai monté un VBA sous Excel permettant, en cliquant sur un bouton, de lancer un exécutable qui prend une photo à partir d'une webcam et en fait un BMP.
Suite à cette génération de fichier, j'appelle un autre exécutable qui convertit le BMP en JPG.
Pour finir, je charge l'image dans l'Excel et la positionne dans le document.
Oui mais voila, après mes nombreux tests, autant l'image en BMP s'affiche Nickel, autant celle convertie en JPG ne veut pas s'afficher, rien à faire !
J'ai essayé avec différents convertisseurs en ligne de commande, dont imagemagick, j'obtiens toujours la même chose, pas de message d'erreur, mais un beau carré vide avec la mention "Impossible d'afficher l'image".
Bien que la solution BMP fonctionne, elle n'est pas viable car le document fait déjà 2 Mo après avoir indséré 2 images. J'en ai une trentaine à insérer comme ça.
Y a t'il un problème avec l'insertion d'image en JPG ?? Merci d'avance.
Voici le code :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44
| Public Function PrendrePhoto(posLeft As Integer, posTop As Integer, width As Integer, height As Integer, nomFic As String)
Dim RetVal
' Make sure the current directory is set to the one
' where the Excel file is saved
ChDir (ActiveWorkbook.Path)
If Dir(nomFic + ".bmp") > "" Then
' Suppression de la dernière image
Kill (nomFic + ".bmp")
End If
If Dir(nomFic + ".jpg") > "" Then
Kill (nomFic + ".jpg")
End If
' Capture new image
RetVal = Shell("CommandCam.exe /preview /delay 2000 /filename " + nomFic + ".bmp", vbHide)
' Wait until image file is definitely there
While Dir(nomFic + ".bmp") = ""
Wend
' Short delay to let new file finish saving
Application.Wait (Now + TimeValue("00:00:01"))
' Conversion de l'image en JPG
' RetVal = Shell("imagemagick/convert.exe " + nomFic + ".bmp " + nomFic + ".jpg", vbHide)
RetVal = Shell("BMP2JPG.exe " + nomFic + ".bmp " + nomFic + ".jpg", vbHide)
While Dir(nomFic + ".jpg") = ""
Wend
' Load new image into image object on spreadsheet
' Image1.Picture = LoadPicture("image.bmp")
' Insertion de l'image avec un lien externe
' ActiveSheet.Pictures.Insert(nomFic + ".bmp").Select
' Insertion de l'image embarquée dans le document
ActiveSheet.Shapes.AddPicture Filename:=nomFic + ".jpg", linktofile:=msoFalse, savewithdocument:=msoCTrue, Left:=posLeft, Top:=posTop, width:=width, height:=height
End Function |