Bonsoir à tous,
Est-ce qu'il y a une possibilité d'insérer une image PNG dans une UserForm sous Excel ?
En direct, j'ai vu que cela n'était pas possible, mais peut-être existe-t 'il un autre moyen.
Merci par avance pour votre aide
Version imprimable
Bonsoir à tous,
Est-ce qu'il y a une possibilité d'insérer une image PNG dans une UserForm sous Excel ?
En direct, j'ai vu que cela n'était pas possible, mais peut-être existe-t 'il un autre moyen.
Merci par avance pour votre aide
Pas que je sache... Rien d'un tout petit peu sérieux faisable graphiquement sur un formulaire, hélas....
Bonsoir MarcJinger
Merci pour votre réponse.
Eh bien tant pis, je vais m'arranger autrement.
Bonne fin de journée
Hello,
Il faut attendre d'autres avis avant de mettre la discussion en résolu (alors que ce n'est pas résolu).
En fait c'est possible avec la bibliothèque gdiplus ( c'est ce que j'utilise ici) et son module de classe VBA clGdiplus (Voir ici)
Ami calmant, J.PCitation:
Gdi+ supporte notamment les formats BMP, GIF, JPEG, PNG, TIFF et EMF.
Bonjour J.P,
Je ne connaissais pas cette bibliothèque :plusser:
Hello Philippe
Le souci c'est que le module de classe VBA qui l'interface est volumineux ( > 600Koctets). Bien sûr on peut le réduire en utilisant que ce qui nous intéresse dedans mais cela risque d'être pénible ou alors le mettre dans les macros personnelles.
Voici le code pour charger une image png dans le contrôle image d'un formulaire :
Pièce jointe 626224Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 Private Sub CommandButton1_Click() Dim oGdi As clGdiplus Set oGdi = New clGdiplus Dim strFile As String strFile = Application.GetOpenFilename(FileFilter:="png files (*.png*), *.png*", Title:="Choisir un fichier PNG", MultiSelect:=False) ' Chargement de l'image If oGdi.LoadFile(strFile) Then ' Chargement réussi Debug.Print "Format :", oGdi.ImageFormatText Debug.Print "Taille :", oGdi.ImageWidth & " x " & oGdi.ImageHeight oGdi.Repaint Me.Image1 Else ' Erreur de chargement MsgBox "Erreur au chargement de l'image" End If End Sub
Ami calmant, J.P
Bonjour J.P,
Merci pour ton code.
Je trouvais intéressant de connaître l'existence de ce module pour ne pas répondre "impossible" mais jusqu'à présent je n'ai jamais eu besoin de charger des images au format png, je m'arrange très bien avec des jpg et la conversion de PNG en un autre format est simple.
Finalement, c'est possible de charger un png avec transparence dans un contrôle image avec ce code par exemple :
Pièce jointe 626240Code:
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16 Private Sub CommandButton1_Click() Dim oGdi As clGdiplus Set oGdi = New clGdiplus Dim strFile As String strFile = Application.GetOpenFilename(FileFilter:="png files (*.png*), *.png*", Title:="Choisir un fichier PNG", MultiSelect:=False) ' Chargement de l'image If oGdi.LoadFile(strFile) Then ' Chargement réussi Debug.Print "Format :", oGdi.ImageFormatText Debug.Print "Taille :", oGdi.ImageWidth & " x " & oGdi.ImageHeight oGdi.Repaint Me.Image1, , , Me.BackColor Else ' Erreur de chargement MsgBox "Erreur au chargement de l'image" End If End Sub
Bonjour à tous,
Merci pour vos réponses et désolé d'avoir clôturé cette discussion un peu trop tôt.
Je ne connaissais pas du tout cette méthode, je me coucherai moins bête ce soir.
Je vais pouvoir mettre mon horloge dans une UserForm, reste à la faire fonctionner par la suite.
Mais je suis sur d'autres pistes que je fignolent et que partageraient si je réussi.
J'ai monopolisé le post de NONO, j'espère qu'il ne m'en voudra pas. En même temps cela fait peut-être avancer son projet.