Mémoriser les barres d'outils ouvertes

GeoTrouvePas

XLDnaute Impliqué
Bonjour tout le monde,

Je finalise enfin le développement de l'application pour laquelle je vous bassine depuis plusieurs semaines et j'aurai besoin d'un énième mais dernier petit coup de main de votre part. Attention ! Prêt ! Feu ! Partez ! ^^

Voilà mon soucis. Mon application s'utilise uniquement à partir de Userform. A aucun moment, l'utilisateur n'a à intervenir directement sur le classeur. Pour soigner la présentation, mon appli s'ouvre donc en plein écran sur une feuille de couleur de couleur unie après avoir masqué les barres d'outils grâce à cette procédure :

Code:
Sub MasquerBarres()

Dim Barre As CommandBar

For Each Barre In CommandBars
    
    i = 1
    
[COLOR="red"]    If Barre.Name = "Worksheet Menu Bar" Then
        Barre.Enabled = False[/COLOR]    Else
        If Barre.Visible = True Then
            Sheets("Feuil1").Cells(i, 1) = Barre.Name
            i = i + 1
            Barre.Visible = False
        End If
    End If

Next

End Sub

(J'ai placé la partie en rouge car apparement vba n'apprécie que la propriété Enable pour cette barre d'outil)

Tout ceci fonctionne pas trop mal mais je ne sais pas comment faire la macro inverse qui se déclenchera à la sortie de l'application.

Quelqu'un aurait une idée ?

Merci d'avance à tous et bonne fin de journée !
 

Habitude

XLDnaute Accro
Re : Mémoriser les barres d'outils ouvertes

Met un bouton sur une feuille vide et copie ce code
Donne lui "Masquer barre" comme caption

Code:
Dim v() As String
Dim Barre As CommandBar

Private Sub CommandButton1_Click()
If CommandButton1.Caption = "Masquer barre" Then
    MasquerBarre
Else
    AfficherBarre
End If

End Sub

Function MasquerBarre()
ReDim v(0)
For Each Barre In CommandBars
    
    If Barre.visible Then
       v(UBound(v)) = Barre.Name
       ReDim Preserve v(UBound(v) + 1)
       Barre.Enabled = False
    End If
Next
CommandButton1.Caption = "Afficher Barre"
End Function


Function AfficherBarre()
For i = 0 To UBound(v) - 1
    Application.CommandBars(v(i)).Enabled = True
Next i

CommandButton1.Caption = "Masquer barre"
End Function

Je te conseil tout de même d'utiliser
Application.DisplayFullScreen= true
 
Dernière édition:

GeoTrouvePas

XLDnaute Impliqué
Re : Mémoriser les barres d'outils ouvertes

Tu devrais trouver, si ... si... je t'assure, la réponse dans un de ces fils

Mais euh :eek: ! J'avais déjà bien cherché mais plutôt avec "mémoriser" barres d'outils. Ce qui n'est finalement pas très pertinent. Ou alors on doit pas avoir le même Google, je vois que ça :p:p:p. Je n'ai toutefois pas trouver ce cas similaire avec enregistrement "en dur" des barres affichées lors du démarrage.

petite remarque au passage, pas sûr que ton "else" soit bien positionné dans ton instruction "if"...

Effectivement il n'a rien à faire là mais c'est juste un petit problème de copier / coller. Merci pour la remarque s'pice de chipoteur ! :p

Code:
Function AfficherBarre()
[COLOR="Red"]For i = 0 To UBound(v) - 1[/COLOR]
    Application.CommandBars(v(i)).Enabled = True
Next i

CommandButton1.Caption = "Masquer barre"
End Function

Merci mais AfficherBarre ne fonctionne pas. Il bloque sur la ligne en rouge en disant que l'indice n'appartient pas à la sélection. Heureusement qu'il me reste mon ancienne macro pour tout réafficher.

Je te conseil tout de même d'utiliser
Application.DisplayFullScreen= true

Je l'utilise déjà mais je tiens à masquer ces #@!^%& de barres. :D

En fait tout ce qu'il me manque pour arriver à mon but c'est une ligne de commande de ce genre là :

Code:
CommandBars(NomdemaVariable).Visible = True

Bien évidement ça ne marche pas.

Edit n°1 : Ah ben si ça marche :mad:. Suffisait de rajouter le .value à "CommandBars(Sheets("Feuil1").Cells(i, 1).Value).Enabled = True"

Alors pour ceux que ça pourrait intéresser, la macro pour réafficher les macro est :

Code:
Sub AfficherBarres()

i = 1

While Sheets("Feuil1").Cells(i, 1) <> ""
    CommandBars(Sheets("Feuil1").Cells(i, 1).Value).Enabled = True
    i = i + 1
Wend


End Sub

Bonne journée à tous et merci à vous trois !

Edit n°2 : Finalement je me suis rendu compte que je me cassais la tête pour rien. Suffit de faire Enabled = False sur toutes les barres à l'ouverture et les remettre à True à la sortie pour que toutes les barres qui étaient affichées (et que celles - ci) réapparaissent. Alors pour ceux que ça peut intéresser :
Code:
Sub MasquerBarres()

Dim Barre As CommandBar
For Each Barre In CommandBars
    Barre.Enabled = False
Next

End Sub

Sub AfficherBarres()

For Each Barre In CommandBars
    Barre.Enabled = True
Next

End Sub
 
Dernière édition:

Discussions similaires

D
Réponses
7
Affichages
1 K
L

Statistiques des forums

Discussions
312 185
Messages
2 086 020
Membres
103 097
dernier inscrit
Benduch