Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2013 msopicture dans picture sur feuille

patricktoulon

XLDnaute Barbatruc
bonjour tous
connaissez vous un moyen plus rapide( je veux dire direct sans passer par un oléobject pour créer une picture avec un icon du ruban
VB:
Sub test1()
    Dim v$, I&, Img As OLEObject
    v = "_3DEffectColorPickerClassic"
    'Set Img = ActiveSheet.OLEObjects.Add(ClassType:="Forms.Image.1", Link:=False, DisplayAsIcon:=False, Left:=0, Top:=0, Width:=40, Height:=40)
    Set Img = ActiveSheet.OLEObjects.Add("Forms.Image.1", , , 0, 0, Width:=40, Height:=40)
    With Img
        .Object.Picture = Application.CommandBars.GetImageMso(v, 40, 40)
        .Object.PictureSizeMode = 1
        .Object.BorderStyle = 0
        Do Until I = 50: I = I + 1: DoEvents: Loop    'indispensable visiblement sinon l'image est blanche
        'copie en WMF(xlpicture)
        .Parent.Shapes(.Name).CopyPicture
        .Parent.Pictures.Paste
        .Delete
        'ou
        'issue de l'enregistrement de macro
        'copie en png
        '.Parent.Shapes.Range(Array(.Name)).Select
        'Selection.Copy
        '.Parent.PasteSpecial Format:="Image (PNG)", Link:=False, DisplayAsIcon:=False
        '.delete
    End With
End Sub
 

fanch55

XLDnaute Barbatruc
Salut Pat,
un code à tester ( non finalisé car existence du shape non testé ) :
VB:
Sub testF()
    Dim v$
    v = "_3DEffectColorPickerClassic"
    File = Environ("Temp") & "\" & v & ".jpg"
    stdole.SavePicture Application.CommandBars.GetImageMso(v, 40, 40), File
    ActiveSheet.Pictures.Insert File
End Sub
 

patricktoulon

XLDnaute Barbatruc
Bonjour @fanch55
a oui j'y ai même pas pensé a celle là
le stdtole est superflu mais je garde
savepicture est intégré dans VBA
VB:
Sub testF()
    Dim v$
    v = "_3DEffectColorPickerClassic"
    File = Environ("Temp") & "\" & v & ".jpg"
    SavePicture Application.CommandBars.GetImageMso(v, 40, 40), File
    ActiveSheet.Pictures.Insert File
End Sub

merci
 

Dranreb

XLDnaute Barbatruc
Bonjour.
savepicture est intégré dans VBA
Chez moi non, apparemment, il n'est pas membre de la bibliothèque VBA, seulement la stdole.
Mais ça m'intéresse un peu. Je n'ai jamais bien compris ce qu'on pouvait tirer de cette bibliothèque, sans doute parce que je ne m'y étais intéressé qu'il y a trop longtemps pour avoir été suffisamment expérimenté …
 

fanch55

XLDnaute Barbatruc


Normalement, la bib est implicitement incluse au lancement d'excel et effectivement, savepicture concerne celle-ci .
 

Dranreb

XLDnaute Barbatruc
Oui, ça c'est vrai, et ce depuis extrêmement longtemps. Elle fait partie des 4 bibliothèques toujours chargées dans le projet VBA d'un nouveau classeur: Excel, Office, stdole et VBA.
 

Dranreb

XLDnaute Barbatruc
Oui, pour moi aussi c'est un peu nébuleux.
J'ai pensé un truc : en utilisant son .hPal serait-il possible de récupérer dans un tableau la palette d'une image, la modifier et la renvoyer ? Ça pourrait être un canal à des animations d'images … Je pense notamment à des aiguilles de montre … La map, aussi ? Remarque, j'ai ce qu'il faut dans un coin, mais c'est horriblement compliqué … J'en suis toujours revenu à passer par un .bmp
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…