none
Pictures.Insert et AddPicture RRS feed

  • Discussion générale

  • Bonjour,

    Je me casse les dents sur un problème qui me laisse un peu perplexe...

    Voici ce que je fais (sous Office 2010) :
    1- J'ouvre un nouvel Excel
    2- J'enregistre une macro
    3- Je fais : Insertion -> Image et je choisis une image GIF (ex : C\test.gif)
    4- J'arréte l'enregistreur
    5- Je sauvegarde et je ferme le fichier
    6- Je renomme le fichier C:\test.gif en C:\test-.gif
    7- J'ouvre mon classeur Excel
    8- Ok, j'ai mon image qui apparait
    9- Je supprime l'image que j'ai généré
    10- Je renomme le fichier C:\test-.gif en C:\test.gif (le nom d'origine)
    11- J'ouvre la console VBA et j'exécute le code que j'ai enregistré dans les étapes 2 à 4 (du type : ActiveSheet.Pictures.Insert...)
    12- Je sauvegarde (l'image devrait être dans la feuille active) et je ferme
    13- Je refais l'étape (6-) : renommer le fichier image en C:\test-.gif
    14- J'ouvre l'Excel et là.... L'image disparait et me met un message d'erreur ...????

    Pourquoi ????

    Surtout que la même manipulation sous Office 2003 n'a pas le même comportement.
    Le seul moyen de contournement que j'ai trouvé est d'utiliser ActiveSheet.Shapes.AddPicture au lieu de ActiveSheet.Pictures.Insert...

    Merci d'avance pour vos réponses

    Bonne journée,

    mardi 7 février 2012 13:54

Toutes les réponses

  • Bonjour,

    Selon moi, tout dépend si l'image est intégrée ou liée. Dans le second cas, l'image ne fait pas partie intégrante du document et doit rester disponible dans l'emplacement depuis lequel elle a été sélectionnée...

    Pouvez-vous poster votre code ?


    Argy

    vendredi 17 février 2012 15:36
    Modérateur
  • Hello,

    La suite m'intéresse...

    J'ai le même problème... j'aimerais que mes images soit intégré et non liés.

    Quelqu'un sait comment faire sous Excel 2010?

    Merci!

    vendredi 24 février 2012 20:58
  • Bonjour,

    C'est la méthode AddPicture de l'objet Shape qui vous permet cela. Cette méthode possède les arguments permettant de lier ou incorporer l'image.

    Vous pouvez utiliser cet exemple :

    Private Function InsertAnyPicture(ByRef TargetSheet As Worksheet, ByVal PictureFileName As String, ByVal L As Single, ByVal T As Single, ByVal W As Single, ByVal H As Single, Optional ByVal LinkToFile As Boolean = False, Optional ByVal SaveWithDocument As Boolean = True) As Boolean On Error GoTo L_ErrInsertAnyPicture TargetSheet.Shapes.AddPicture PictureFileName, LinkToFile, SaveWithDocument, L, T, W, H InsertAnyPicture = True On Error GoTo 0 L_ExInsertAnyPicture: Exit Function L_ErrInsertAnyPicture: InsertAnyPicture = False Resume L_ExInsertAnyPicture End Function Sub TestPourVoir() 'Insère l'image a 120 points du bord haut et gauche avec une taille de 100 points
    Call InsertAnyPicture(Worksheets(2), "D:\Mes images\LitBlanc.jpg", 120, 120, 100, 100) End Sub

    Ici, vous voyez que les deux arguments optionnels passés à la fonction possèdent des valeurs par défaut qui pemettent d'incorporer l'image au document.

    Ces deux arguments possèdent les mêmes noms que ceux de la méthode AddPicture.


    Argy

    samedi 25 février 2012 19:01
    Modérateur