Microsoft 365 Insérer une image à fond transparent à format png dans un Userform

TCHIS

XLDnaute Occasionnel
Bonjour à tous
Certains d'entre vous ont une idée sur quoi je travail 😁 😁 et pour les dernière finissions j'ai besoin de votre aide car tout seul je n'arrive passer à resoudre un problème que je rencontre.
En soit mon souci porte sur des images que je souhaite insérer dans mon formulaire Acceuil pour illustrer certaines fonctions.
Et donc j'ai des images pour illustrer ces fonctions et toutes ces images sont à fnd transparent mais ils sont en format png et pas de comme ce format n'est pas pris en charge il faut le faire passer en jpg ce j'arrive effectivement à faire avec paint 3D mais malheureusement quand je passe en jpg je pers ce fond transparent de mes images :mad:o_Oo_Oo_O

Or cette possibilité d'avoir mes illustrations (images) en fond transparent est indispensable pour un souci d'affichage.
En pièce joint j'ai mis deux images.
Une image pour que vous ayez idée de ce à quoi ressemble mon userform et une autre pour une des illustrations​
Vraiment j'ai besoin de d'aide pour que ça marche et que ces images prennent parfaitement les dimensions des contrôles images ou des label utiliser pour afficher🙏🙏🙏🙏
 

Pièces jointes

  • Capture d’écran (210).png
    Capture d’écran (210).png
    890 KB · Affichages: 52
  • Personal files-bro (2).png
    Personal files-bro (2).png
    403.1 KB · Affichages: 28

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bjr :)
Avec ce site :
Tu pourras supprimer le fonds de ts images (même si jpg)
:)
 

TooFatBoy

XLDnaute Barbatruc
Bonjour,

il faut le faire passer en jpg ce j'arrive effectivement à faire avec paint 3D mais malheureusement quand je passe en jpg je pers ce fond transparent de mes images
Ça me semble normal puisque, à ma connaissance, le JPG ne gère pas le fond transparent, contrairement au PNG, GIF ou JPEG2000.


Et donc j'ai des images pour illustrer ces fonctions et toutes ces images sont à fnd transparent mais ils sont en format png et pas de comme ce format n'est pas pris en charge
Tu es sûr de ça ?
 

TCHIS

XLDnaute Occasionnel
Tu es sûr de ça ?
Oui j'en suis sur le format PNG n'est pas pris en charge
Bjr :)
Avec ce site :
Tu pourras supprimer le fonds de ts images (même si jpg)
:)
Et Usine à gaz ton site marche oui c'à-d qu'il permet de rendre le fond blanc transparent 👍 mais l'image transparent lui il est en PNG et ce format n'est pas pris en compte donc on reviens au même point de départ
 

TCHIS

XLDnaute Occasionnel
Pourtant ça fonctionne.
Format png pris en charge chez moi.
Voire fichier joint
:)
C'est sur un formulaire et non une feuille excel que l'image à fond transparent doit etre afficher et sur userform (formulaire) le format png n'est pas pris en charge
Effectivement, le PNG n'est pas pris en charge, mais :

Donc transforme ton PNG transparent en GIF transparent, et roule ma poule. ;)
Okey ça roule ma poule je vais tenter cela 🤣 🤣 🤣
 

patricktoulon

XLDnaute Barbatruc
re
Bonjour à tous
ouais... ok
si à chaque fois qu'on m'aurait dit ben non excel ou vba ne sais pas faire
je ne serais pas allé bien loin

comment enlever le fond blanc d'une image avec Excel vba
et cela que se ce soit une jpg , png , gif , et même une ico

-pour l'exemple je reprends le cuicui de Lionel
-alors surtout regardez bien ça va très vite hein 😁
demo.gif

et donc là vous vous dites oauis.. mais ca doit etre une usine à gaz ton truc avec la dll gdi et tout et tout
ben non pas du tout j'utilise seulement les fonctions vba pour image de excel
pour info cette astuce est vielle comme le monde
allez cadeau
VB:
Sub hop()
    couleur = vbWhite
    With ActiveSheet
        .Shapes(1).Copy
        .Pictures.Paste
        With .Shapes(.Shapes.Count).PictureFormat
            .TransparentBackground = True
            .TransparencyColor = couleur
            .Parent.Fill.Visible = False
        End With
    End With
End Sub
pour les image png dans controls image dans userform
faut il que je vous le montre aussi ou vous saurez taper mon pseudo dans le moteur de recherche de XLD
 

TCHIS

XLDnaute Occasionnel
re
Bonjour à tous
ouais... ok
si à chaque fois qu'on m'aurait dit ben non excel ou vba ne sais pas faire
je ne serais pas allé bien loin

comment enlever le fond blanc d'une image avec Excel vba
et cela que se ce soit une jpg , png , gif , et même une ico

-pour l'exemple je reprends le cuicui de Lionel
-alors surtout regardez bien ça va très vite hein 😁
Regarde la pièce jointe 1167789
et donc là vous vous dites oauis.. mais ca doit etre une usine à gaz ton truc avec la dll gdi et tout et tout
ben non pas du tout j'utilise seulement les fonctions vba pour image de excel
pour info cette astuce est vielle comme le monde
allez cadeau
VB:
Sub hop()
    couleur = vbWhite
    With ActiveSheet
        .Shapes(1).Copy
        .Pictures.Paste
        With .Shapes(.Shapes.Count).PictureFormat
            .TransparentBackground = True
            .TransparencyColor = couleur
            .Parent.Fill.Visible = False
        End With
    End With
End Sub
pour les image png dans controls image dans userform
faut il que je vous le montre aussi ou vous saurez taper mon pseudo dans le moteur de recherche de XLD
oui tu peux s'il te plait nous l'apprendre
 

TCHIS

XLDnaute Occasionnel
En pièce jointe, ton PNG transformé (de façon un peu approximative) en GIF.
En GIF effectivement l'image est affichée même si elle perd un peu en qualité au moins elle est affichée dans le formulaire🤩🤩

Mais stp comment arrives tu à faire la conversion de l'image de PNG en GIF ?

Parce que j'ai d'autres images à mettre dans mon formulaire et je me suis dit qu'avec Paint enregistrer 'image en format GIF suffirait mais non seulement je pers la qualité de l'image mais en plus la transparence aussi est perdue 🙏 🙏 🙏
 

patricktoulon

XLDnaute Barbatruc
re
méthode
insertpicture sur feuille
suppression du fond par la couleur du fonc( dans mon exemple précédent le blanc)
copy de l'image obtenue
recup dans le clipboard
enregistrement des data de l'image du clip dans une fichier wmf(garde la transparence )
load picture dans le control du wmf
en moins de 30 lignes de code c'est possible de le faire
et je l'ai déjà fait
;)
 

patricktoulon

XLDnaute Barbatruc
re
allez je remontre pour la N eme fois
pour l'exemple je vais prendre un jpeg trois boule de couleur sur un fond blanc
1680900703272.png



dans un module je fait ce code

VB:
Function PictureWithTransparence(chemin, Optional couleur As Long = -1)
  Dim fichier$, HandleClipImage&, retour
  With ActiveSheet
        .Pictures.Insert (chemin)
        If couleur <> -1 Then
            With .Shapes(.Shapes.Count).PictureFormat
                .TransparentBackground = True: .TransparencyColor = couleur: .Parent.Fill.Visible = False
            End With
        End If
        With .Shapes(.Shapes.Count): .CopyPicture: .Delete: End With
        fichier = ThisWorkbook.Path & "\pict.wmf"
        ExecuteExcel4Macro ("CALL(""user32"",""OpenClipboard"",""JJ""," & 0& & ")")
        HandleClipImage = ExecuteExcel4Macro("CALL(""user32"",""GetClipboardData"",""JJ""," & &HE & ")")
        retour = ExecuteExcel4Macro("CALL(""gdi32"",""CopyEnhMetaFileA"",""JJC""," & HandleClipImage& & ",""" & fichier & """)")
        ExecuteExcel4Macro ("CALL(""gdi32"",""DeleteEnhMetaFile"",""JJ""," & retour & ")")
        ExecuteExcel4Macro ("CALL(""user32"",""CloseClipboard"",""J"")")
Application.OnTime Now + 0.00001, "killimage"
    End With
    PictureWithTransparence = fichier
End Function
Sub killimage(): Kill ThisWorkbook.Path & "\pict.wmf": End Sub
dans un userform je met un control image en bakckstyle transparent
et deux bouton pour la demo
je met un paysage dans le fond du userform pour que l'on vois bien le truc
1680900482977.png



dans le userform je code les deux boutons (pour la démo)
un pour loader l'image en supprimant le fond blanc
l'autre pour loader l'image tel quel

VB:
Const chemin As String = "C:\Users\patrick1\Desktop\mon image.jpg"

Private Sub CommandButton1_Click()
Me.Image1.Picture = LoadPicture(PictureWithTransparence(chemin, vbWhite))
End Sub

Private Sub CommandButton2_Click()
Me.Image1.Picture = LoadPicture(chemin)
End Sub

si tu veux loader une image png ou gif etant déjà transparent
ben c'est simple tu enlève l'argument couleur dans l’appel

VB:
Private Sub CommandButton1_Click()'si c'est déjà un png transparente
Me.Image1.Picture = LoadPicture(PictureWithTransparence(chemin))
End Sub

ATTENTION TOUT DE MEME LES CONTROLS IMAGES DANS USERFORM NE SUPPORTENT PAS LA SEMIE TRANSPARENCE (TRANSLUCIDE)

Bon ben ... voilà y a tout


démonstration
demo.gif


enjoy ;)
 

Pièces jointes

  • mon image.jpg
    mon image.jpg
    6.1 KB · Affichages: 26
  • ya tout les images qui rentre chez patou de toulon .xlsm
    29.7 KB · Affichages: 23

patricktoulon

XLDnaute Barbatruc
pour le coup
juste pour vous donner une idée des possibilités j'ai ressorti un de mes vieux truc que j'ai fait il y a au moins 10 ans
et visiblement ca fonctionne encore
demo.gif

j'avais poussé à l'extrême avec des shapes comme bourttons dans le userform et avec le rollOver en plus

qu'on vienne me dire que l'on peut pas 🤣
diabolo.gif
 
Dernière édition:

Discussions similaires

Statistiques des forums

Discussions
312 206
Messages
2 086 222
Membres
103 159
dernier inscrit
FBallea