En référence à cette discussion...
Bonjour,
Désolé de ressortir un vieux sujet, mais j'ai un problème lié à l'insertion d'une image dans un fichier excel sur lequel j'espère que vous pourrez m'aider.
Je développe une application VB6 qui doit éditer des fichiers excel avec des images dedans. Je possède :
- un modèle excel dans lequel le simages sont des contrôles vides
- une macro qui va alimenter mon modèle excel.
Mon application VB6 fait donc appel à ma macro qui se charge de remplir mon modèle excel.
Voici le code de mon application VB :
avec :
Code : Sélectionner tout - Visualiser dans une fenêtre à part Exapp.Run "Macro_Carto_new.xls!Alim_Image", NUMSHEET_REP_SURFACE, x, Fic_Image_jpg
- Exapp : mon application excel sous VB
- Macro_Carto_new.xls : mon fichier excel dans lequel est défini ma macro
- Alim_Image : le nom de ma macro
- NUMSHEET_REP_SURFACE : le numéro de la feuille de mon modèle dans laquelle je veux insérer l'image
- x : le numéro de mon image dans mon modèle
- Fic_Image_jpg : le chemin ver smon image au format "jpg"
Et pour ma macro:
Ma solution fonctionne très bien et l(utilisation d'un modèle me permet d'avoir me simages directement placée là où j'ai positionné mes controles.
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 Public Sub Alim_Image(ByVal feuille As Long, ByVal n As Long, ByVal FicImg As String) On Error GoTo fin Select Case n Case 1: Application.Sheets(feuille).image1.Picture = LoadPicture(FicImg) Case 2: Application.Sheets(feuille).image2.Picture = LoadPicture(FicImg) ... End Select fin: End Sub
Cependant cette solution conduit à des fichiers excel très volumineux (je suis très vite arrivé dans mon cas sans trop pousser à des fichiers de plus de 150Mo)
J'ai alors essayé de remplacer le code de ma macro par :
Avec cette deuxième technique j'obtiens un fichier de taille considérablement plus petite. Cependant je dois définir où positionner mes images ce qui est très problématique car ca implique de changer pas mal de choses au sein de l'application telle qu'elle existe actuellement dans l'entreprise (à moins de me servir du positionnement de mes controles pour insérer mes image sau même endroit... à voir)
Code : Sélectionner tout - Visualiser dans une fenêtre à part Application.Sheets(feuille).Pictures.Insert (FicImg)
Mes questions sont donc les suivantes :
Quel est la différence entre "LoadPicture" et "Insert"
peut-on utiliser "LoadPicture" sans faire exploser la taille du fichier ou alors existe -t- il une autre méthode similaire qui fasse cela en utilisant le positionnement de mes controels dans mon fichier modèle ?
Je vous remercie d'avance pour vos contributions.
Cordialement.
Partager