Microsoft 365 Frame sur Userform

TCHIS

XLDnaute Occasionnel
Bonjour à tous et à toutes.

Je me suis lancé dans la conception de BD sous excel depuis peu.

Alors il y a certaines fonctions je voudrai attribuer à mon USF.

D'abord mon USF possède un fond d'image et je souhaiterai avoir une Frame dont le fond est transparent et qui s'afficherai après l'appui sur un bouton (le sens d'apparition de cette frame serait du bas vers le haut pour s'arrêter net en dessous d'une Listview qui est déjà opérationnelle ).

Pourriez vous s'il vous plait m'apporter de vos lumières ?
 

fanch55

XLDnaute Barbatruc
Bonjour,
Si vous voulez une Frame transparente, oubliez cela n'existe pas .
Même les subterfuges pour y palier ne fonctionnent pas ou pas correctement ou pas dans tous les cas .
Le palliatif est d'utiliser un objet Picture et de regrouper tous les controles de la pseudo frame dans un même objet Dictionary au sein de cette Picture .
Attention au poids de l'image ....
 

Pièces jointes

  • FRmTrans.xlsm
    274.1 KB · Affichages: 6

patricktoulon

XLDnaute Barbatruc
Bonsoir
@fanch55
Si vous voulez une Frame transparente, oubliez cela n'existe pas .
Même les subterfuges pour y palier ne fonctionnent pas ou pas correctement ou pas dans tous les cas
Ah bon!!
méthode api 1 par les macro 4
demo.gif


et j'en ai d'autres en réserve si tu veux
et ça fonctionne très bien 32/64 bits

méthode 2
l'astuce la plus simple et la plus connue qui (SIMULE!!) la transparence
c'est une picture dans la frame de la même taille que le inside du userform
le left et top en négatif simetriquement au left et pop positif de la frame

avec les api déclarées je vais même plus loin la frame transparente et avec les angles arrondis
mais celle là il faut que je prenne le temps de la refaire en macro 4 (pour le fun )
 

TCHIS

XLDnaute Occasionnel
Bonsoir
@fanch55

Ah bon!!
méthode api 1 par les macro 4
Regarde la pièce jointe 1163886

et j'en ai d'autres en réserve si tu veux
et ça fonctionne très bien 32/64 bits

méthode 2
l'astuce la plus simple et la plus connue qui (SIMULE!!) la transparence
c'est une picture dans la frame de la même taille que le inside du userform
le left et top en négatif simetriquement au left et pop positif de la frame

avec les api déclarées je vais même plus loin la frame transparente et avec les angles arrondis
mais celle là il faut que je prenne le temps de la refaire en macro 4 (pour le fun )
 

TCHIS

XLDnaute Occasionnel
Bonsoir
@fanch55

Ah bon!!
méthode api 1 par les macro 4
Regarde la pièce jointe 1163886

et j'en ai d'autres en réserve si tu veux
et ça fonctionne très bien 32/64 bits

méthode 2
l'astuce la plus simple et la plus connue qui (SIMULE!!) la transparence
c'est une picture dans la frame de la même taille que le inside du userform
le left et top en négatif simetriquement au left et pop positif de la frame

avec les api déclarées je vais même plus loin la frame transparente et avec les angles arrondis
mais celle là il faut que je prenne le temps de la refaire en macro 4 (pour le fun )
Bonsoir merci pour une réponse si rapide.
Je voudrai bien essayer cette méthode mais le souci est que l'image d'arrière plan que j'ai mis dans Userform je l'ai fait par code VBA via un chemin d'accès.

Code
With UserFormOpen
.Picture = LoadPicture("C:\Users\Tchis\Desktop\DTC-S.A.S\Images\Image1.jpg")
.PictureSizeMode = fmPictureSizeModeStretch
.Height = Me.Height
End With


Quand je met l'image directement via la propriété picture de l'userform celle-ci ne s'affiche pas bien c'est-à-dire que l'userform ne prend pas les dimension direct de l'image.
Ce qui fait que si j'applique l'image à la farme celle-là aussi ne prend pas les dimension direct de l'image
 

patricktoulon

XLDnaute Barbatruc
démonstration
demo.gif


c'est tout bète
VB:
rivate Sub CommandButton1_Click()
'load une image pour le fond de l'userform
    fichier = Application.GetOpenFilename("Text Files (*.jpg;*.gif;*.bmp;*.wmf), *.jpg;*.gif;*.bmp;*.wmf", 1, "ouvrir une image")
    If fichier = False Then Exit Sub
    Me.Picture = LoadPicture(fichier)
End Sub

Private Sub CommandButton2_Click()
'on met la copie bmp du fond de l'userform dans un nouveau control image dynamique
'l'image aura la meme taille que l'interieur du userform
'la meme propriété d'affichage
' reste plus qu'a la depacer de exactement le left et le top de la frame mais !!!! en negatif
'comme c'est le dernier controls ajouté on le met en arriare plan "zorder 1"
    Set img = Me.Frame1.Controls.Add("forms.Image.1", "fondframe")
    With img
        .Move 0 - Frame1.Left - 1, 0 - Frame1.Top - 1, Me.InsideWidth, Me.InsideHeight
        .Picture = Me.Picture
        .PictureSizeMode = Me.PictureSizeMode
        .ZOrder 1
    End With
End Sub

et voilà on croirait vraiment que ta frame est transparente

c'est simple non ?
 

Pièces jointes

  • simulation de frrame transparente .xlsm
    14.8 KB · Affichages: 9

patricktoulon

XLDnaute Barbatruc
ya pas de soucis
si ta frame a une caption (titre) il faut modifier un peu
VB:
Private Sub CommandButton1_Click()
'load une image pour le fond de l'userform
    fichier = Application.GetOpenFilename("Text Files (*.jpg;*.gif;*.bmp;*.wmf), *.jpg;*.gif;*.bmp;*.wmf", 1, "ouvrir une image")
    If fichier = False Then Exit Sub
    Me.Picture = LoadPicture(fichier)
End Sub

Private Sub CommandButton2_Click()
'on met la copie bmp du fond de l'userform dans un nouveau control image dynamique
'l'image aura la meme taille que l'interieur du userform
'la meme propriété d'affichage
' reste plus qu'a la depacer de exactement le left et le top de la frame mais !!!! en negatif
'comme c'est le dernier controls ajouté on le met en arriare plan "zorder 1"
    If Frame1.Caption <> "" Then l = 2: t = 6 Else l = 1: t = 1
    Set img = Me.Frame1.Controls.Add("forms.Image.1", "fondframe")
    With img
        .Move 0 - Frame1.Left - l, 0 - Frame1.Top - t, Me.InsideWidth, Me.InsideHeight
        .Picture = Me.Picture
        .PictureSizeMode = Me.PictureSizeMode
        .ZOrder 1
    End With
End Sub

Private Sub CommandButton5_Click()
    Me.Frame1.Controls.Remove "fondframe"
End Sub
 

TCHIS

XLDnaute Occasionnel
démonstration
Regarde la pièce jointe 1163890

c'est tout bète
VB:
rivate Sub CommandButton1_Click()
'load une image pour le fond de l'userform
    fichier = Application.GetOpenFilename("Text Files (*.jpg;*.gif;*.bmp;*.wmf), *.jpg;*.gif;*.bmp;*.wmf", 1, "ouvrir une image")
    If fichier = False Then Exit Sub
    Me.Picture = LoadPicture(fichier)
End Sub

Private Sub CommandButton2_Click()
'on met la copie bmp du fond de l'userform dans un nouveau control image dynamique
'l'image aura la meme taille que l'interieur du userform
'la meme propriété d'affichage
' reste plus qu'a la depacer de exactement le left et le top de la frame mais !!!! en negatif
'comme c'est le dernier controls ajouté on le met en arriare plan "zorder 1"
    Set img = Me.Frame1.Controls.Add("forms.Image.1", "fondframe")
    With img
        .Move 0 - Frame1.Left - 1, 0 - Frame1.Top - 1, Me.InsideWidth, Me.InsideHeight
        .Picture = Me.Picture
        .PictureSizeMode = Me.PictureSizeMode
        .ZOrder 1
    End With
End Sub

et voilà on croirait vraiment que ta frame est transparente

c'est simple non ?
Pas vraiment rien que la première ligne du code ne veut pas passer (tout juste après load une image pour le fond de l'userform)
ça dit erreur de compilation.
En plus l'image de fond du l'userform je préfèrerai qu'elle se charge dès l'ouverture de l'userform
 

TCHIS

XLDnaute Occasionnel
Bonjour
si tu a ce genre de problème avec un code aussi simple c'est que tu a un soucis dans ton system
tu peux livrer le fichier dans le quel tu a essayé
et c'est un exemple ; je l'ai fait par un bouton mais tu peux le faire au activate
voici le fichier sur lequel je voudrai conserver l'arrière plan de l'userform et mettre la frame en transparence
 

Pièces jointes

  • TCHIS.xlsm
    399.1 KB · Affichages: 7

TCHIS

XLDnaute Occasionnel
Bonjour
si tu a ce genre de problème avec un code aussi simple c'est que tu a un soucis dans ton system
tu peux livrer le fichier dans le quel tu a essayé
et c'est un exemple ; je l'ai fait par un bouton mais tu peux le faire au activate
Bonjour j'ai réessayer et effectivement ça marche
vous pourriez me mettre sur la bonne voix afin que l'image d'arrière plan du Userform s'affiche non seulement dès l'ouverture mais en plus de cela que l'image s'adapte au dimension de mon Userform.

En gros faudrait qu'il s'affiche comme cet capture si dessous
 

Pièces jointes

  • Capture d’écran (198).png
    Capture d’écran (198).png
    829.4 KB · Affichages: 14

Statistiques des forums

Discussions
311 725
Messages
2 081 944
Membres
101 849
dernier inscrit
florentMIG