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 :

API pour statusBar


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Points : 658
    Points
    658
    Billets dans le blog
    17
    Par défaut API pour statusBar
    Bonjour,


    Je suis à la recherche d'une API pour selectionner les raccourcis du StatusBar par VBA . Je voudrais les enlever et les remettre à la fin de ma macro .
    Comme on ne peux pas selectionner ces items par VBA, si quelqu'un aurait une api pour le faire .

    Merci
    Allez le RC LEns

  2. #2
    Membre extrêmement actif
    Homme Profil pro
    aucune
    Inscrit en
    Avril 2016
    Messages
    7 563
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 82
    Localisation : France, Pyrénées Atlantiques (Aquitaine)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Avril 2016
    Messages : 7 563
    Points : 12 422
    Points
    12 422
    Par défaut
    Bonjour
    Je ne suis pas certain de comprendre ce que tu veux dire par :
    selectionner les raccourcis du StatusBar par VBA . Je voudrais les enlever et les remettre à la fin de ma macro
    La barre de statut est une propriété de l'objet Application (Application.StatusBar). Cette propriété retourne ou définit le texte qui y est affiché.
    Application.DisplayStatusBar = False permet de cacher cette barre de statut. (True l'affiche)
    J'ignore ce que sont "les items d'une statusbar" .
    Explique clairement ce que tu veux faire.
    Je n'accepte pas de demande d' "amitié" individuelle. Tout développeur est pour moi un ami.
    Je n'ouvre AUCUN classeur tiers (avec ou sans macro ******). Ne m'en proposez donc pas .

    ****** : Non, non ... un classeur .xlsx ne "peut" par exemple et entre autres pas contenir un activex (de surcroît invisible) , "bien sûr" ...

    Il est illusoire de penser que l'on saurait exprimer valablement et précisément en un langage (rigide) de développement ce que l'on peine à exprimer dans le langage naturel, bien plus souple.

  3. #3
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Points : 658
    Points
    658
    Billets dans le blog
    17
    Par défaut
    Bonjour,

    J'ai plus ou moins réglé le probleme , mais concernant ma demande :

    Je parle de la status bar de Excel ou on a les racoursis et information ( scroll bar avec le zoom, moyenne, max min...) . On fait clic droit et on peut choisir ce que l'on veut afficher . Par contre par VBA on ne peux pas le customiser c'est a dire enlever ou ajouter des racourcis. Il est donc necessaire de le faire par API. Comme je debute en API, je ne suis pas capable de l'écrire et je me demandais si certains sauraient le faire.


    Merci d'avance
    Allez le RC LEns

  4. #4
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Bonjour,

    Et pour tes nouvelles questions tu penses faire le même suivi qu'ici http://www.developpez.net/forums/d15...a/#post8723404 ?
    eric

  5. #5
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Points : 658
    Points
    658
    Billets dans le blog
    17
    Par défaut
    Bonjour,


    Oui c'est le même problème, en effet comme j'ai l'ecran qui est instable je ferme l'application comme ca on ne voit pas que ca saute ...
    C'est un enchainement de galères.
    Merci pour le fichier je regarderais lundi si ca marche mais ma méthode est stable donc je vais voir si je veux retoucher ou pas (enfin les calculs sont tjs justes c'est le principal).
    Allez le RC LEns

  6. #6
    Membre expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 267
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 267
    Points : 3 663
    Points
    3 663
    Par défaut
    Ah. C'était pour le plaisir de m'occuper que tu as redemandé un autre fichier exemple alors... Ok

  7. #7
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Points : 658
    Points
    658
    Billets dans le blog
    17
    Par défaut
    Non du tout mais je n'ai pas le fichier de travail chez moi le week end.

    Je souhaiterais modifier une API

    Pour modifier la taille de l'application à la partie de la statusbar ou il y'a les indications du processus qui s'affiche.
    En fait quand je lance la macro , je voudrais tout reduire et l'afficher en haut de l'ecran (seule la partie de gauche de la status bar).
    L'API fonctionne pour reduire la partie du titre mais maintenant je voudrais reduire la taille .

    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
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
    77
    78
    79
    80
    Option Explicit
     
    '### Apis ###
    Declare Function SetWindowLong& Lib "user32" Alias "SetWindowLongA" ( _
      ByVal hwnd As Long, ByVal nIndex As Long, ByVal dwNewLong As Long)
     
    Private Declare Function GetWindowLong& Lib "user32" Alias "GetWindowLongA" ( _
      ByVal hwnd As Long, ByVal nIndex As Long)
     
    Declare Function SetWindowPos& Lib "user32" ( _
      ByVal hwnd As Long, ByVal hWndInsertAfter As Long, ByVal X As Long, _
      ByVal Y As Long, ByVal cx As Long, ByVal cy As Long, ByVal wFlags As Long)
     
    Declare Function GetWindowRect& Lib "user32" (ByVal hwnd As Long, lpRect As structRECT)
     
    '### Constantes ###
    '--- GetWindowLong ---
    Const GWL_STYLE = (-16)
    Const WS_CAPTION = &HC00000
    Const WS_MAXIMIZEBOX = &H10000
    Const WS_MINIMIZEBOX = &H20000
    Const WS_SYSMENU = &H80000
    '--- SetWindowPos ---
    Const SWP_FRAMECHANGED = &H20
    Const SWP_DRAWFRAME = SWP_FRAMECHANGED
    Const SWP_HIDEWINDOW = &H80
    Const SWP_NOACTIVATE = &H10
    Const SWP_NOCOPYBITS = &H100
    Const SWP_NOMOVE = &H2
    Const SWP_NOOWNERZORDER = &H200
    Const SWP_NOREDRAW = &H8
    Const SWP_NOREPOSITION = SWP_NOOWNERZORDER
    Const SWP_NOSIZE = &H1
    Const SWP_NOZORDER = &H4
    Const SWP_SHOWWINDOW = &H40
    '--- GetWindowRect ---
    Private Type structRECT
      Left As Long
      Top As Long
      Right As Long
      Bottom As Long
    End Type
     
    Sub DemasqueTitreAppli()
    Call SwitchMasque(True)
    End Sub
     
    Sub MasqueTitreAppli()
    Call SwitchMasque(False)
    End Sub
     
    Sub SwitchMasque(bool As Boolean)
    Dim style&
    Dim RECT As structRECT
    Dim hwnd&
    hwnd& = Application.hwnd
    GetWindowRect hwnd&, RECT
    '---
    style& = GetWindowLong(hwnd&, GWL_STYLE)
    If Not bool Then
      style& = style& And Not WS_SYSMENU
      style& = style& And Not WS_MAXIMIZEBOX
      style& = style& And Not WS_MINIMIZEBOX
      style& = style& And Not WS_CAPTION
    Else
      style& = style& Or WS_SYSMENU
      style& = style& Or WS_MAXIMIZEBOX
      style& = style& Or WS_MINIMIZEBOX
      style& = style& Or WS_CAPTION
    End If
    SetWindowLong hwnd&, GWL_STYLE, style&
    '---
    With RECT
      SetWindowPos hwnd&, 0, .Left + 200, .Top, .Right - .Left, .Bottom - .Top - 25, _
          SWP_NOREPOSITION Or SWP_NOZORDER Or SWP_FRAMECHANGED
     
     
     
    End With
    End Sub
    avec une modification telle que :

    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
    19
        'Affichage écran
    Sub Optimization(ByVal Mode As Boolean)
            Static MyWidth As Double: Static MyHeight As Double
     
        If Mode Then
            MyWidth = Application.Width
            MyHeight = Application.Height
            Call API_Screen.MasqueTitreAppli
            Application.WindowState = xlNormal
            Application.Width = 150
            Application.Height = 25.5
        Else
            Call API_Screen.DemasqueTitreAppli
            Application.WindowState = xlNormal
            Application.Width = MyWidth
            Application.Height = MyHeight
            Application.WindowState = xlMaximized
        End If
    End Sub
    Mais ca marche pas bien, il semble qu'il faille que je fasse la modification de la taille directement dans l'API.

    Pouvez-vous m'aider?
    Allez le RC LEns

  8. #8
    Membre émérite Avatar de antonysansh
    Homme Profil pro
    Chargé d'études RH
    Inscrit en
    Mai 2014
    Messages
    1 115
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 32
    Localisation : France, Nord (Nord Pas de Calais)

    Informations professionnelles :
    Activité : Chargé d'études RH
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2014
    Messages : 1 115
    Points : 2 439
    Points
    2 439
    Par défaut
    Bonjour le forum,

    Ce n'est pas un truc comme ça que tu cherches ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub Afficher_Masquer_Barre_Etat()
        Dim cmdB As CommandBar
            Set cmdB = Application.CommandBars("Status Bar")
            cmdB.Visible = Not cmdB.Visible
    fin:
        Set cmdB = Nothing
    End Sub
    Antony

    Mieux vaut ne rien dire et passer pour un con que de l'ouvrir et ne laisser aucun doute à ce sujet.
    Gustave Parking


    Si le post vous est utile un petit fait toujours plaisir et pensez à passer en

    Et surtout -> Balise CODE

  9. #9
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Points : 658
    Points
    658
    Billets dans le blog
    17
    Par défaut
    Bonjour,

    non non lol, je veux pouvoir voir la statusbar, mais seulement la partie de gauche de la statusbar , un petit rectangle. Car je met à jours des indications sur l'avancé du process. Je ne souhaite pas la cacher entièrement . Si on réduit la taille comme j'ai fait avec la suppression de la barre du haut, et que je reduit la taille comme j'ai fait c'est moche . Mon code fonctionne mais il faut pouvoir modifier la taille dans l'api et pas une partie dans l'api et une autre en vba .

    Merci quand même
    Allez le RC LEns

  10. #10
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Tant et aussi longtemps que tu restes sur un Excel à 32 bits, et cela, tu es le seul à le savoir, tu peux utiliser(Ou du moins essayer d'utiliser) le contrôle StatusBar de VB6. (Microsoft StatusBar Control)

    P.S. Si tu ne l'as pas sur ta machine, tu devrais le retrouver par là.

    P.P.S J'espère que Microsoft l'a débarré. Déjà il était inutilisable en VBA si VB6 n'était pas installé sur la machine.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  11. #11
    Membre éclairé
    Avatar de tamtam64
    Homme Profil pro
    stagiaire developpement vba
    Inscrit en
    Mai 2012
    Messages
    456
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Hauts de Seine (Île de France)

    Informations professionnelles :
    Activité : stagiaire developpement vba
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2012
    Messages : 456
    Points : 658
    Points
    658
    Billets dans le blog
    17
    Par défaut
    Bonjour,

    Merci pour le lien , je vais essayer de l'utiliser, comme tu dis c'est pas gagné lol
    Allez le RC LEns

Discussions similaires

  1. Réponses: 8
    Dernier message: 05/10/2004, 00h02
  2. Réponses: 36
    Dernier message: 13/05/2004, 18h22
  3. API pour changer le proxy du navigateur
    Par SteelBox dans le forum Windows
    Réponses: 2
    Dernier message: 16/02/2004, 23h15
  4. JEG : jAPI : Une API pour C++Builder
    Par JEG dans le forum C++Builder
    Réponses: 4
    Dernier message: 15/11/2003, 13h50
  5. [VB6] Api pour supprimer dans un fichier INI
    Par Argonz dans le forum VB 6 et antérieur
    Réponses: 7
    Dernier message: 20/02/2003, 08h16

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