IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

rendre une frame transparente


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 502
    Par défaut rendre une frame transparente
    bonjour
    j'arrive pas à trouver comme on peut rendre une frame transparente ??


    merci

  2. #2
    Expert confirmé

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Par défaut
    bonjour

    j'espère que ce lien pourra t'aider

    http://excel.developpez.com/sources/...ameTransparent


    bonne journée
    michel

  3. #3
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    Reste que le code de ce lien ne concerne que l'image de fond (et pas les contrôles éventuellement existants derrière le Cadre).

    La chose (image + contrôles) est réalisable sous VB6 ...
    Je vais voir dans la journée (sur mon portable où j'ai Excel) si je peux écrire pour VBA ce que j'ai écrit pour VB.

    (je rencontrerai peut-être un problème de hwnd du Frame....)

  4. #4
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 502
    Par défaut
    bonjour
    l'exemple est interessant.
    J'ai repris le code mais je comprends pas la partie ci-dessous surtout au niveau .......me, image1 ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
     
     Frame_Transparent Frame1, Me, Image1

    repris dans l'ensemble du code l'exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
     
     
     
     
    Private Sub UserForm_Initialize()
      Frame_Transparent Frame1, Me, Image1
    End Sub
     
     
    Private Sub Frame_Transparent(cadre As Frame, f As UserForm, imaj As Image)
     
      cadre.BorderStyle = 0
    ' cadre.ZOrder 'peut être supprimé si inconnu sous VBA
      cadre.BackColor = f.BackColor
    '  imaj.ZOrder 1 'peut être supprimé si inconnu sous VBA
      imaj.Picture = f.Picture
      imaj.Move -cadre.Left, -cadre.Top, f.Picture.Width, f.Picture.Height
    End Sub

    merci de votre aide

  5. #5
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Me et image1 sont deux des trois paramètres envoyés à la procédure !

    Me, c'est ton UserForm
    Image1, c'est ton image de fond ...

    Edit :
    Ceci étant dit (revoir l'un de mes messages plus haut) :

    1) je n'aime pas vraiment ce code. Il avait été écrit pour VB6 (et "aménagé" pour VBA...) pour ne traiter que la transparence par rapport à une image de fond.
    2) je suis persuadé de ce que l'on peut faire beaucoup mieux (me relire), ce que j'ai déjà fait sous VB6... et qu'il me faudra tenter de transposer pour VBA... après avoir résolu un problème de handle sous VBA, ce à quoi il me reste donc à m'atteler dès que j'en aurai le temps

  6. #6
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 502
    Par défaut
    bonjour
    pour l'image1 ,j'ai une erreur du type Variable non definie.
    mon image de fond est present(propriete PICTURE)?
    Pour mon Image , faut il mettre le nom reel de image ou ce nom IMAGE1 est elle standard ?

  7. #7
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2007
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 491
    Par défaut
    bonsoir,

    pour rendre une userform transparente

    http://www.developpez.net/forums/sho...ghlight=handle

    pour une frame , je pense qu il faut recuperer le handle de la frame puis appliquer la procedure du liens cité en haut du message

    pour avoir la valeur du handle d un bouton ou autre objet d une userform
    il faut utiliser l api
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    Public Declare Function FindWindowEx Lib "user32" Alias "FindWindowExA" (ByVal hWnd1 As Long, _
    ByVal hWnd2 As Long, ByVal lpsz1 As String, ByVal lpsz2 As String) As Long

  8. #8
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Non !

    Juste NON !

    on ne traitera pas le Frame comme une Form !

    Et on n'utilisera pas de layers ...

    Je vais m'y mettre... patience ...

  9. #9
    Membre éclairé
    Inscrit en
    Juillet 2007
    Messages
    502
    Détails du profil
    Informations forums :
    Inscription : Juillet 2007
    Messages : 502
    Par défaut
    bonsoir

    debat de specialiste,je suis perdu!

  10. #10
    Membre chevronné
    Profil pro
    Inscrit en
    Février 2007
    Messages
    491
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 491
    Par défaut
    bonsoir,

    apres avoir recherché sur le forum et sur le net

    apparement on ne peut pas recupérer le handle des controles( d une userform) crées a l aide de la boite à outil vba .


    je vais essayé avec la fonction apigetfocus qui a donnée un resultat probant
    lors de cette discussion

    http://www.developpez.net/forums/sho...d.php?t=248842

  11. #11
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Par défaut
    Bonjour,

    Heu...

    Je vois mal comment pn pourrait donner le focus à un Frame ...

    Impossible sous VB6 ... je vais voir avec VBA !!!!

    EDIT : oui, on peut donner le focus à un Frame sous VBA !!! (pas sous VB6)...

    Mais c'est pour moi de mauvaise augure...

    Je dois passer à table .
    Essaye le code du lien et dis nous si tu obtiens autre chose que 0

    Merci ...

Discussions similaires

  1. Rendre une frame transparente
    Par RiRix dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 01/03/2013, 12h35
  2. Comment rendre une form transparente à certains endroits ?
    Par ludo5532 dans le forum Composants VCL
    Réponses: 4
    Dernier message: 21/08/2005, 15h28
  3. rendre une image transparente
    Par nabil dans le forum VB 6 et antérieur
    Réponses: 16
    Dernier message: 12/06/2005, 13h53
  4. rendre une image transparente
    Par matt92700 dans le forum AWT/Swing
    Réponses: 6
    Dernier message: 02/06/2005, 08h42
  5. Rendre une frame en 4 fois ???
    Par supergrey dans le forum DirectX
    Réponses: 10
    Dernier message: 12/08/2004, 05h25

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo