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
 

fanch55

XLDnaute Barbatruc
Bonjour.

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é …
1681662102301.png


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

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

Statistiques des forums

Discussions
315 095
Messages
2 116 170
Membres
112 676
dernier inscrit
little_b