Symbôle Réduire dans un Userform

thesentry Messages postés 1092 Statut Membre -  
thesentry Messages postés 1092 Statut Membre -
Bonjour,

J'aimerais avoir la possibilité de réduire un userform en cours d'execution et qu'il reste dans la barre de tâches de Windows.

comment faire ?

J'ai trouvé ce code :

Private Declare Function FindWindowA& Lib "User32" (ByVal lpClassName$, ByVal lpWindowName$)
Private Declare Function EnableWindow& Lib "User32" (ByVal hWnd&, ByVal bEnable&)
Private Declare Function GetWindowLongA& Lib "User32" (ByVal hWnd&, ByVal nIndex&)
Private Declare Function SetWindowLongA& Lib "User32" (ByVal hWnd&, ByVal nIndex&, ByVal dwNewLong&)

Private Sub UserForm_Activate()
EnableWindow FindWindowA("XLMAIN", Application.Caption), 1
End Sub

Private Sub UserForm_Initialize()
Dim hWnd As Long
hWnd = FindWindowA(vbNullString, Me.Caption)
SetWindowLongA hWnd, -16, GetWindowLongA(hWnd, -16) Or &H20000
End Sub

Mais ça ne fonctionne pas.

Merci

10 réponses

Résumé de la discussion

Demande technique visant à réduire un UserForm en cours d'exécution tout en le maintenant affiché dans la barre des tâches Windows, via des appels Win32 dans VBA. Plusieurs intervenants proposent des appels FindWindowA, SetWindowLongA et des drapeaux d'exécution pour modifier le style de la fenêtre, mais les résultats restent inconstants selon la configuration Windows XP et l'environnement. Réponses variées, certaines indiquent que le code ramène la fenêtre au bas de l'écran plutôt que dans la barre de tâches, tandis que d'autres suggèrent de fournir un fichier complet pour débogage. En pratique, plusieurs répondants conviennent que ce rétrécissement ne réalise pas l’objectif et proposent plutôt des approches alternatives, ou le partage d’un fichier corrigé pour débogage à distance.

Bobot (l'IA à votre service)
  1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Rassure nous, le fichier que t'a transmis f894009 fonctionne sur ta machine. Si ce n'est pas le cas il y a un autre problème. Tous les fichiers que nous t'avons transmis fonctionnent tel quel sans aucune modification!
    1
    1. thesentry Messages postés 1092 Statut Membre 16
       
      Ah mais tous vos fichiers fonctionnent.

      Dès que je les mets dans mon code à moi, ça ne fait rien.
      0
    2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re bonjour, a vous deux,

      Pouvez vous nous mettre a dispo votre fichier avec seulement le VBA (sans le contenu des feuilles excel)
      0
    3. thesentry Messages postés 1092 Statut Membre 16
       
      Bonjour,

      Si je supprime des choses, l'userform ne s'execute pas. Ce n'est pas un soucis ?
      0
  2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Ce code marche tres bien, mais il a pour but de reduire une UF en bas a gauche de l'ecran, pas de mettre l'UF reduite dans la barre de tache
    0
  3. thesentry Messages postés 1092 Statut Membre 16
     
    Bonjour,

    Merci pour votre réponse. Mais cela ne me dit pas comment je peux parvenir à mes fins.

    De plus, lorsqu'un utilisateur lance Excel, l'userform s'exécute automatiquement. Mais il n'apparaît pas dans la barre des tâches. Comment faire ?

    Merci
    0
  4. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Bonjour,

    Voir exemple ici:

    http://www.cjoint.com/data3/3EvnSvuUsi3.htm
    0
    1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Bonjour,

      Meme chose, Thesentry veut que l'UF soit dans la barre de tache (comme il est possible en VB6,VB.net mais pas en VBA), pas en bas de l'ecran a gauche.
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Ce ne sera pas dans la barre de tâche mais en bas à gauche:

    Mettre dans ThisWorkBook:

    Option Explicit
    Private Sub Workbook_Open()
    UserForm1.Show vbModeless
    Application.Visible = False 'rendre Excel invisible
    End Sub
    


    et dans l'UserForm:

    Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
    Application.Visible = True 'rendre Excel invisible
    End Sub
    0
    1. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
       
      il faut lire:

      Private Sub UserForm_QueryClose(Cancel As Integer, CloseMode As Integer)
      Application.Visible = True 'rendre Excel visible
      End Sub
      0
    2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Re,

      Ce ne sera pas dans la barre de tâche mais en bas à gauche: -----> Oui, mais ce n'est pas cela que Thesentry veut
      0
    3. thesentry Messages postés 1092 Statut Membre 16
       
      Si vous dites que c'est pas possible en VBA, on ne va pas chercher à faire qqch d'impossible.

      Au pire, si la seule solution est en bas à gauche, ben ça sera comme ça.
      0
    4. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Bonjour,

      Disons que jusqu'a maintenant, personne ne l'a fait ou si quelqu'un a reussit, il ne l'a pas fait savoir
      0
    5. thesentry Messages postés 1092 Statut Membre 16
       
      Rebonsoir,

      Ah oui d'accord. Je vois le truc. Il fallait me le dire dès le début.
      Ben un rétrécissement en bas à gauche, ça me va aussi.

      Mais même ça, ça ne fonctionne pas.
      0
  7. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Cela fonctionne chez moi.

    Par contre chez une erreur sur cette ligne à la fermeture:

    SetWindowLong HandleUF, GWL_WNDPROC, BaseUFProc
    0
    1. thesentry Messages postés 1092 Statut Membre 16
       
      Bonsoir,

      Ben m**de ! Je ne comprends pas là...

      Tu as un soucis avec HandleUF non ?
      0
    2. thesentry Messages postés 1092 Statut Membre 16
       
      Bonjour,

      Cela ne change rien...
      0
  8. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    un fichier avec votre code modifie (mise en commentaire de ce qui ne sert a rien): https://www.cjoint.com/?DEConNul5g8
    0
    1. thesentry Messages postés 1092 Statut Membre 16
       
      Bonjour,

      Non ben toujours pas... Il y a quelque chose qui ne doit pas se faire correctement mais je ne peux pas vous transmettre le fichier complet.

      Je ne vois vraiment pas.
      0
  9. cs_Le Pivert Messages postés 8437 Statut Contributeur 730
     
    Bien sur que c'est un souci. Mais sans code comment veux tu que l'on t'aide!!!!!!!!!!!!!
    0
  10. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour a vous deux,

    Thesentry: si votre UF ne se "lance" pas parce que vous avez supprime des donnees, aucune importance, comme l'a ecrit cs_le pivert, il nous faut votre code complet sans donnees
    0
  11. thesentry Messages postés 1092 Statut Membre 16
     
    Bonjour,

    Je ne peux pas vous fournir le code. Laissez tomber donc.

    Merci de votre aide.

    TS
    0