Microsoft 365 Frame sur Userform

  • Initiateur de la discussion Initiateur de la discussion TCHIS
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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 ?
 
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

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 )
 
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
@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
 
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

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
 
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
 
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

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: 16
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Retour