OVH Cloud OVH Cloud

Belle la BO

6 réponses
Avatar
J
Bonjour à tous
suivant les aimables reommandations de jps, et après avoir fouiné dans les
recoins de mon disque, j'ai une macro qui me crée une BO remplie de boutons
très beaux.
je lui demande de me mettre la BO juste à droite de ma barre de mise en
forme, qui est la 3ème.
Cela se passe plutôt bien, mais ma zolibarre s'installe tout à droite en
draguant la barre de mise en forme vers la droite.
Ce n'est pas gravissime, mais quand même agaçant, d'autant qu'à sa
suppression, la barre de mise en formerest là où elle a été tractée :-<
Comment lui dire de se mettre sur le même niveau que la barre de mise en
forme sans déranger tout???

Voila comment s'achève ma macro:
.Visible = True
.Position = msoBarTop
.RowIndex = Application.CommandBars("Formatting").RowIndex
.Left = Application.CommandBars("Formatting").Width

Question subsidiaire : qulqu'un peut-il me relire le code pôus voir s'il y
aurait des manques ou du superfétatoire (comme on dit au mpfw), vu que j'ai
bricolé (sûrement imprudemment) des codes qui ne sont pas miens (merci à/aux
auteurs)
@+
merci à tous
amicalement
J@@
et voilà le code complet :
'---------------------------------------------------------
Sub CreateBO_JF()
Dim Mabar As CommandBar
Dim Compteur As Integer

Dim Boutons(5) As Variant
Boutons(1) = Btn1
Boutons(2) = Btn2
Boutons(3) = Btn3
Boutons(4) = Btn4
Boutons(5) = Btn5

Dim ID(5) As Variant
ID(1) = 59
ID(2) = 572
ID(3) = 1133
ID(4) = 298
ID(5) = 352

Dim Macros(5) As Variant
Macros(1) = "GetRealLastCell"
Macros(2) = "FeuilsDeprotecToutes"
Macros(3) = "FeuilsProtecToutes"
Macros(4) = "AfficheHoriz"
Macros(5) = "Macro 5"

Dim Legendes(5) As Variant
Legendes(1) = "DerCel"
Legendes(2) = "FeuilsDeprotecToutes"
Legendes(3) = "FeuilsProtecToutes"
Legendes(4) = "Horiz"
Legendes(5) = "Macro 5"

On Error Resume Next
DeleteBO_JF 'en cas de plantage d'excel
On Error GoTo 0
On Error Resume Next
Set Mabar = Application.CommandBars.Add("BarreJF")
With Mabar
For Compteur = 1 To 5
Set Boutons(Compteur) = .Controls.Add(msoControlButton)
With Boutons(Compteur)
.FaceId = ID(Compteur)
.OnAction = Macros(Compteur)
.Caption = Legendes(Compteur)
End With
Next Compteur
.Visible = True
.Position = msoBarTop
.RowIndex = Application.CommandBars("Formatting").RowIndex
.Left = Application.CommandBars("Formatting").Width
End With
End Sub
'---------------------------------------------------------
'---------------------------------------------------------
Sub DeleteBO_JF()
On Error Resume Next
Application.CommandBars("BarreJF").Delete
On Error GoTo 0
End Sub
'---------------------------------------------------------

6 réponses

Avatar
jps
bonjour J@@
et si tu mets ta zolibarre "Barre JF" à gauche de ta Formatting, est-ce que
lorsque tu deletes ta zolibarre, la Formatting revient à gauche?
si je comprends bien, tu as une place folle à droite de ta Formatting ou me
trompe-je?
une solution pourrait être d'ajouter tes 5 zoliboutons à ta barre Formatting
et de les annuler à la fin...
jps

"J@@" a écrit dans le message de
news:
Bonjour à tous
suivant les aimables reommandations de jps, et après avoir fouiné dans les
recoins de mon disque, j'ai une macro qui me crée une BO remplie de
boutons

très beaux.
je lui demande de me mettre la BO juste à droite de ma barre de mise en
forme, qui est la 3ème.
Cela se passe plutôt bien, mais ma zolibarre s'installe tout à droite en
draguant la barre de mise en forme vers la droite.
Ce n'est pas gravissime, mais quand même agaçant, d'autant qu'à sa
suppression, la barre de mise en formerest là où elle a été tractée :-<
Comment lui dire de se mettre sur le même niveau que la barre de mise en
forme sans déranger tout???

Voila comment s'achève ma macro:
.Visible = True
.Position = msoBarTop
.RowIndex = Application.CommandBars("Formatting").RowIndex
.Left = Application.CommandBars("Formatting").Width

Question subsidiaire : qulqu'un peut-il me relire le code pôus voir s'il y
aurait des manques ou du superfétatoire (comme on dit au mpfw), vu que
j'ai

bricolé (sûrement imprudemment) des codes qui ne sont pas miens (merci
à/aux

auteurs)
@+
merci à tous
amicalement
J@@
et voilà le code complet :
'---------------------------------------------------------
Sub CreateBO_JF()
Dim Mabar As CommandBar
Dim Compteur As Integer

Dim Boutons(5) As Variant
Boutons(1) = Btn1
Boutons(2) = Btn2
Boutons(3) = Btn3
Boutons(4) = Btn4
Boutons(5) = Btn5

Dim ID(5) As Variant
ID(1) = 59
ID(2) = 572
ID(3) = 1133
ID(4) = 298
ID(5) = 352

Dim Macros(5) As Variant
Macros(1) = "GetRealLastCell"
Macros(2) = "FeuilsDeprotecToutes"
Macros(3) = "FeuilsProtecToutes"
Macros(4) = "AfficheHoriz"
Macros(5) = "Macro 5"

Dim Legendes(5) As Variant
Legendes(1) = "DerCel"
Legendes(2) = "FeuilsDeprotecToutes"
Legendes(3) = "FeuilsProtecToutes"
Legendes(4) = "Horiz"
Legendes(5) = "Macro 5"

On Error Resume Next
DeleteBO_JF 'en cas de plantage d'excel
On Error GoTo 0
On Error Resume Next
Set Mabar = Application.CommandBars.Add("BarreJF")
With Mabar
For Compteur = 1 To 5
Set Boutons(Compteur) = .Controls.Add(msoControlButton)
With Boutons(Compteur)
.FaceId = ID(Compteur)
.OnAction = Macros(Compteur)
.Caption = Legendes(Compteur)
End With
Next Compteur
.Visible = True
.Position = msoBarTop
.RowIndex = Application.CommandBars("Formatting").RowIndex
.Left = Application.CommandBars("Formatting").Width
End With
End Sub
'---------------------------------------------------------
'---------------------------------------------------------
Sub DeleteBO_JF()
On Error Resume Next
Application.CommandBars("BarreJF").Delete
On Error GoTo 0
End Sub
'---------------------------------------------------------





Avatar
J
Bonjour Jean-Paul
j'ai croisé ton message ce matin, mais j'avais trop de bourre de coco à
pelleter dans la chaudière pour te répondre.
Voilà ce que j'ai bidouillé après le thé :
Application.CommandBars("Formatting").Left = 0
Avec cette ligne, je contrains ma barre de format récalcitrante à retourner
à gauche bien sagement,
Mais alors ma zoliBO se trouve scotchée à droite, au bout de l'écran, qui
est fort grand (en début de journée, ça va, mais en fin de journée, courir
après la barre :-<<)
J'ai donc modifié aussi la ligne qui suit, et alors tout va bien :
.Left = Application.CommandBars("Formatting").Width = 650

Ton (excellente) idée d'ajouter des icônes dans la barre pour la forcer à
rester en vue m'aurait obligée, vue la taille de l'écran, à mettre beaucoup
plus que les 3000 malheureuses icônes suggérées par Erlandsen, et hélas,
l'écran du boulot étant moins grand, ma barre kholossale risquait de
déborder et de coincer certaines touches de mon clavier.

Encore merci à l'effusion de science si stimulante dont tu fais profiter les
BOtiens. :-))
Amitiés
JF

"J@@" <> suivant les aimables reommandations de jps, et après avoir fouiné
dans les
recoins de mon disque, j'ai une macro qui me crée une BO remplie de
boutons très beaux.
je lui demande de me mettre la BO juste à droite de ma barre de mise en
forme, qui est la 3ème.
Cela se passe plutôt bien, mais ma zolibarre s'installe tout à droite en
draguant la barre de mise en forme vers la droite.
Ce n'est pas gravissime, mais quand même agaçant, d'autant qu'à sa
suppression, la barre de mise en formerest là où elle a été tractée :-<
Comment lui dire de se mettre sur le même niveau que la barre de mise en
forme sans déranger tout???

Voila comment s'achève ma macro:
.Visible = True
.Position = msoBarTop
.RowIndex = Application.CommandBars("Formatting").RowIndex
.Left = Application.CommandBars("Formatting").Width

Question subsidiaire : quelqu'un peut-il me relire le code pour voir s'il
y aurait des manques ou du superfétatoire (comme on dit au mpfw), vu que
j'ai bricolé (sûrement imprudemment) des codes qui ne sont pas miens
(merci à/aux auteurs)
@+
merci à tous
amicalement
J@@
et voilà le code complet :
'---------------------------------------------------------
Sub CreateBO_JF()
Dim Mabar As CommandBar
Dim Compteur As Integer

Dim Boutons(5) As Variant
Boutons(1) = Btn1
Boutons(2) = Btn2
Boutons(3) = Btn3
Boutons(4) = Btn4
Boutons(5) = Btn5

Dim ID(5) As Variant
ID(1) = 59
ID(2) = 572
ID(3) = 1133
ID(4) = 298
ID(5) = 352

Dim Macros(5) As Variant
Macros(1) = "GetRealLastCell"
Macros(2) = "FeuilsDeprotecToutes"
Macros(3) = "FeuilsProtecToutes"
Macros(4) = "AfficheHoriz"
Macros(5) = "Macro 5"

Dim Legendes(5) As Variant
Legendes(1) = "DerCel"
Legendes(2) = "FeuilsDeprotecToutes"
Legendes(3) = "FeuilsProtecToutes"
Legendes(4) = "Horiz"
Legendes(5) = "Macro 5"

On Error Resume Next
DeleteBO_JF 'en cas de plantage d'excel
On Error GoTo 0
On Error Resume Next
Set Mabar = Application.CommandBars.Add("BarreJF")
With Mabar
For Compteur = 1 To 5
Set Boutons(Compteur) = .Controls.Add(msoControlButton)
With Boutons(Compteur)
.FaceId = ID(Compteur)
.OnAction = Macros(Compteur)
.Caption = Legendes(Compteur)
End With
Next Compteur
.Visible = True
.Position = msoBarTop
.RowIndex = Application.CommandBars("Formatting").RowIndex
.Left = Application.CommandBars("Formatting").Width
End With
End Sub
'---------------------------------------------------------
'---------------------------------------------------------
Sub DeleteBO_JF()
On Error Resume Next
Application.CommandBars("BarreJF").Delete
On Error GoTo 0
End Sub
'---------------------------------------------------------


Avatar
jps
mais voyons....
jps

"J@@" a écrit dans le message de
news:%23yae$
.

Encore merci à l'effusion de science si stimulante dont tu fais profiter
les

BOtiens. :-))
Amitiés
JF



Avatar
J
Si après cela Bilou ne t'invite pas en Californie, c'est à désespérer ;-)))
J@@
"jps" a
mais voyons....
jps

"J@@" <> .

Encore merci à l'effusion de science si stimulante dont tu fais profiter
les

BOtiens. :-))
Amitiés
JF






Avatar
Gaenonius
Tu peux raccourcir ton code en renseignant tes tableaux "en bloc" (et non
élément par élément) et en laissant la seule procédure DeleteBO_JF gérer une
éventuelle erreur lors d'une tentative de suppression d'une barre d'outils qui
n'existerait pas. Tu peux aussi te passer du tableau des boutons, et même d'une
variable pour créer ta série de boutons. Au final, ça pourrait donner ce genre
de code :

'---------------------------------------------------------
Sub CreateBO_JF()
Dim Mabar As CommandBar
Dim Compteur As Integer

Dim IconeID, Macros, Legendes

IconeID = Array(59, 572, 1133, 298, 352)
Macros = Array("GetRealLastCell", "FeuilsDeprotecToutes", _
"FeuilsProtecToutes", "AfficheHoriz", "Macro 5")
Legendes = Array("DerCel", "FeuilsDeprotecToutes", _
"FeuilsProtecToutes", "Horiz", "Macro 5")

DeleteBO_JF 'en cas de plantage d'excel

On Error Resume Next
Set Mabar = Application.CommandBars.Add("BarreJF")
With Mabar
For Compteur = 0 To 4
With .Controls.Add(msoControlButton)
.FaceId = IconeID(Compteur)
.OnAction = Macros(Compteur)
.Caption = Legendes(Compteur)
End With
Next Compteur
.Visible = True
.Position = msoBarTop
.RowIndex = Application.CommandBars("Formatting").RowIndex
.Left = Application.CommandBars("Formatting").Width
End With
End Sub
'---------------------------------------------------------
'---------------------------------------------------------
Sub DeleteBO_JF()
On Error Resume Next
Application.CommandBars("BarreJF").Delete
On Error GoTo 0
End Sub
'---------------------------------------------------------

--
Gaenonius

Bonjour à tous
suivant les aimables reommandations de jps, et après avoir fouiné dans les
recoins de mon disque, j'ai une macro qui me crée une BO remplie de boutons
très beaux.
je lui demande de me mettre la BO juste à droite de ma barre de mise en
forme, qui est la 3ème.
Cela se passe plutôt bien, mais ma zolibarre s'installe tout à droite en
draguant la barre de mise en forme vers la droite.
Ce n'est pas gravissime, mais quand même agaçant, d'autant qu'à sa
suppression, la barre de mise en formerest là où elle a été tractée :-<
Comment lui dire de se mettre sur le même niveau que la barre de mise en
forme sans déranger tout???

Voila comment s'achève ma macro:
.Visible = True
.Position = msoBarTop
.RowIndex = Application.CommandBars("Formatting").RowIndex
.Left = Application.CommandBars("Formatting").Width

Question subsidiaire : qulqu'un peut-il me relire le code pôus voir s'il y
aurait des manques ou du superfétatoire (comme on dit au mpfw), vu que j'ai
bricolé (sûrement imprudemment) des codes qui ne sont pas miens (merci à/aux
auteurs)
@+
merci à tous
amicalement
J@@
et voilà le code complet :
'---------------------------------------------------------
Sub CreateBO_JF()
Dim Mabar As CommandBar
Dim Compteur As Integer

Dim Boutons(5) As Variant
Boutons(1) = Btn1
Boutons(2) = Btn2
Boutons(3) = Btn3
Boutons(4) = Btn4
Boutons(5) = Btn5

Dim ID(5) As Variant
ID(1) = 59
ID(2) = 572
ID(3) = 1133
ID(4) = 298
ID(5) = 352

Dim Macros(5) As Variant
Macros(1) = "GetRealLastCell"
Macros(2) = "FeuilsDeprotecToutes"
Macros(3) = "FeuilsProtecToutes"
Macros(4) = "AfficheHoriz"
Macros(5) = "Macro 5"

Dim Legendes(5) As Variant
Legendes(1) = "DerCel"
Legendes(2) = "FeuilsDeprotecToutes"
Legendes(3) = "FeuilsProtecToutes"
Legendes(4) = "Horiz"
Legendes(5) = "Macro 5"

On Error Resume Next
DeleteBO_JF 'en cas de plantage d'excel
On Error GoTo 0
On Error Resume Next
Set Mabar = Application.CommandBars.Add("BarreJF")
With Mabar
For Compteur = 1 To 5
Set Boutons(Compteur) = .Controls.Add(msoControlButton)
With Boutons(Compteur)
.FaceId = ID(Compteur)
.OnAction = Macros(Compteur)
.Caption = Legendes(Compteur)
End With
Next Compteur
.Visible = True
.Position = msoBarTop
.RowIndex = Application.CommandBars("Formatting").RowIndex
.Left = Application.CommandBars("Formatting").Width
End With
End Sub
'---------------------------------------------------------
'---------------------------------------------------------
Sub DeleteBO_JF()
On Error Resume Next
Application.CommandBars("BarreJF").Delete
On Error GoTo 0
End Sub
'---------------------------------------------------------





Avatar
J
Bonjour Gaenonius et merci
ton code marche au poil et est moins "pas à pas"
j'ai juste retouché la fin pour forcer la barre de format à rester à gauche.
je suis arrivé à ce code en tatonnant
@+
J@@ (qui regarde le coucher de soleil du coin de l'oeil)

.Left = Application.CommandBars("Formatting").Width = 650
End With
Application.CommandBars("Formatting").Left = 0


"Gaenonius" <..
Tu peux raccourcir ton code en renseignant tes tableaux "en bloc" (et non
élément par élément) et en laissant la seule procédure DeleteBO_JF gérer
une éventuelle erreur lors d'une tentative de suppression d'une barre
d'outils qui n'existerait pas. Tu peux aussi te passer du tableau des
boutons, et même d'une variable pour créer ta série de boutons. Au final,
ça pourrait donner ce genre de code :

'---------------------------------------------------------
Sub CreateBO_JF()
Dim Mabar As CommandBar
Dim Compteur As Integer

Dim IconeID, Macros, Legendes

IconeID = Array(59, 572, 1133, 298, 352)
Macros = Array("GetRealLastCell", "FeuilsDeprotecToutes", _
"FeuilsProtecToutes", "AfficheHoriz", "Macro 5")
Legendes = Array("DerCel", "FeuilsDeprotecToutes", _
"FeuilsProtecToutes", "Horiz", "Macro 5")

DeleteBO_JF 'en cas de plantage d'excel

On Error Resume Next
Set Mabar = Application.CommandBars.Add("BarreJF")
With Mabar
For Compteur = 0 To 4
With .Controls.Add(msoControlButton)
.FaceId = IconeID(Compteur)
.OnAction = Macros(Compteur)
.Caption = Legendes(Compteur)
End With
Next Compteur
.Visible = True
.Position = msoBarTop
.RowIndex = Application.CommandBars("Formatting").RowIndex
.Left = Application.CommandBars("Formatting").Width
End With
End Sub
'---------------------------------------------------------
'---------------------------------------------------------
Sub DeleteBO_JF()
On Error Resume Next
Application.CommandBars("BarreJF").Delete
On Error GoTo 0
End Sub
'---------------------------------------------------------

--
Gaenonius