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 :

Réduire Userform au double clic dans un Listbox [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    841
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 841
    Par défaut Réduire Userform au double clic dans un Listbox
    Bonjour,

    Pour réduire un Userform auquel j'ai ajouté 'Réduire/Agrandir' en cliquant sur le symbole moins pour réduire, aucun soucis.

    Par contre je m'adresse à vous pour demander s'il est possible de réduire cet Userform au double clic sur un élément de la Listbox.

    Dans le formulaire affiché La Listbox contient la liste des fichiers Excel et Word d'un répertoire, lorsque je double clic sur un fichier Word l'application s'ouvre et affiche celui-ci en premier plan, à sa fermeture, le formulaire Excel est toujours présent.

    Si je double clic sur un fichier Excel l'application étant ouverte celui-ci s'ouvre, mais derrière l'Userform, c'est pour cette raison que je souhaiterai réduire l'Userform
    et après la fermeture du fichier Excel cliquer sur le symbole agrandir de l'Userform réduit ou l'agrandir automatiquement.

    Un petit coup de pouce ou une piste svp.

    Merci d'avance.

  2. #2
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    bonjour
    Pour réduire un Userform auquel j'ai ajouté 'Réduire/Agrandir' en cliquant sur le symbole moins pour réduire, aucun soucis.
    tu a ajouter cette fonction comment (quelle methode) api (les boutons dans la caption)ou code vba sur des boutons dans le userform par exemple
    au pire suis-je bete, pourquoi ne te sert tu pas de la fonction hide de l'userform, on le vois plus mais il reste chargé
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    841
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 841
    Par défaut
    Bonjour,

    Voici le code de l'Userform pour ajouter 'Réduire/Agrandir'.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Private sheet As Worksheet
    Private Declare Function GetWindowLongA Lib "user32" (ByVal hWnd1 As Long, ByVal nIndex As Long) As Long
    Private Declare Function SetWindowLongA Lib "user32" (ByVal hWnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Private Declare Function FindWindowA Lib "user32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    Option Compare Text
     
    Private Sub UserForm_Activate()
        Dim hWnd1 As Long
        hWnd1 = FindWindowA(vbNullString, Me.Caption)
        SetWindowLongA hWnd1, -16, GetWindowLongA(hWnd1, -16) Or &H20000
    End Sub

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    alors en premier lieu si tu veux continuer avec les api on en enleve une on en ajoute ne autre et je simplfie ton code
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Private sheet As Worksheet
    Private Declare Function SetWindowLongA Lib "user32" (ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long) As Long
    Private Declare Function FindWindowA Lib "user32" (ByVal lpClassName As String, ByVal lpWindowName As String) As Long
    'afficher le userform 1 mode fenetre ,2 mode reduit , 3 plein ecran
    Private Declare Function showw Lib "user32" Alias "ShowWindow" (ByVal hwnd As Long, ByVal nCmdShow As Long) As Long
    Option Compare Text
    '
    Private Sub UserForm_Activate()
        SetWindowLongA FindWindowA(vbNullString, Me.Caption), -16, &H94CB0080
    End Sub
    ensuite on ajoute l'evenement double click de la listbox dans le quel on appellera la sub reduction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
        reduction
    End Sub
    ensuite la sub reduction

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Sub reduction()
        showw FindWindowA(vbNullString, Me.Caption), 2
    End Sub
    deja tu a ce que tu demande

    maintenant pourquoi j'ai mis la reduction dans une sub public dans le userform
    et bien tout simplement pour pouvoir l'appeler a partir de sheet_deactivate par exemple dans le thisworkbook tu peux meme preciser le sheets concerné
    par exemple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_SheetDeactivate(ByVal Sh As Object)
    if sh.name="toto" then UserForm1.reduction
    End Sub
    et je fait exactement la meme chose pour un réaffichage piloté
    donc dans le userform
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Public Sub affichage()
        showw FindWindowA(vbNullString, Me.Caption), 4
    End Sub
    dans le thisworkbook par exemple

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Private Sub Workbook_SheetActivate(ByVal Sh As Object)
    If Sh.Index = 1 Then UserForm1.affichage
    End Sub
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    841
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 841
    Par défaut
    Bonsoir patricktoulon

    Impeccable ça fonctionne nickel chrome sauf un petit soucis le classeur ne s'affiche pas pleine page.

  6. #6
    Membre éclairé
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    841
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2007
    Messages : 841
    Par défaut
    Bonjour,

    Voilà le code pour ouvrir l'application et le fichier:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Private Sub ListBox1_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
        reduction
        nom = Me.ListBox1.List(ListBox1.ListIndex)
        link = TextBox1 & "\" & nom
        On Error GoTo NoCanDo
        ActiveWorkbook.FollowHyperlink Address:=link, NewWindow:=True
        Exit Sub
    NoCanDo:
        MsgBox "Cannot open " & link
    Le classeur ne s'ouvre pas en pleine page, ça n'a pas beaucoup d'importance, mais ce serait plus sympa que le code permette de le faire.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2013] Double-clic dans une listbox pour c/c de la ligne surlignée
    Par KeteMeteK dans le forum Excel
    Réponses: 2
    Dernier message: 19/10/2017, 15h14
  2. [XL-2007] Double clic dans listbox --> ouverture hypertexte lié
    Par Aurélien13140 dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 29/05/2017, 14h23
  3. Double-clic dans un vecteur
    Par pado_83 dans le forum AWT/Swing
    Réponses: 2
    Dernier message: 02/09/2006, 23h01
  4. Evènements Clic et Double Clic dans un contrôle
    Par jeportal dans le forum Access
    Réponses: 16
    Dernier message: 10/01/2006, 11h37
  5. Ouvrir un fichier sur un double-clic dans une TListBox
    Par SegmentationFault dans le forum Composants VCL
    Réponses: 4
    Dernier message: 09/08/2004, 17h22

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