[VBA] Afficher les noms des boutons de tous les onglets

Le
JièL
Salutatousses

bon, voila encore une question "hé tran jeux" :
Comment faire afficher la courbe d’atterrissage d'un OVNI selon la
température euh non, celle là Jacquouille l'a déjà dévoilée, elle n'a
plus d’intérêt ;-)

La dernière macro de MichD m'inspire une nouvelle question tordues.

Est-il possible (et surtout comment) d'afficher les noms des boutons de
tous les onglets ?

Plus précisément : chaque bouton à une infobulle qui s'affiche lorsqu'on
laisse le pointeur de la souris sur un bouton.
Comment récupérer le texte de cette infobulle, (sans la description si
possible) ?

Si la description est obligatoire, ça c'est pas grave

Merci

--
JièL poseur de question hé tran jeux et venu d'ailleurs ;-)
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichD
Le #26380787
Bonjour,

La procédure affiche le nom de la feuille et l'appellation des "boutons de commande"
qu'ils émanent de la barre d'outils formulaire ou contrôle dans une nouvelle feuille.


'----------------------------------------------------------
Sub test()

Dim Sh As Worksheet, F As Worksheet
Dim X As String, Ctrl As Object

Application.ScreenUpdating = False
On Error Resume Next

Set F = Worksheets.Add

For Each Sh In Worksheets
If Sh.Name <> F.Name Then
For Each Ctrl In Sh.Shapes
X = TypeName(Ctrl.OLEFormat.Object.Object)
If Err = 0 Then
If X = "CommandButton" Then
A = A + 1
F.Range("A" & A) = Sh.Name
F.Range("B" & A) = Ctrl.OLEFormat.Object.Object.Caption
End If
Else
Err.Clear
X = TypeName(Ctrl.OLEFormat.Object)
If X = "Button" Then
A = A + 1
F.Range("A" & A) = Sh.Name
F.Range("B" & A) = Ctrl.OLEFormat.Object.Caption
End If
End If
Next
End If
Next
Application.ScreenUpdating = True
End Sub
'----------------------------------------------------------
JièL
Le #26380804
Merci beaucoup MichD, mais je suis désolé, je me suis mal exprimé.

en fait je parlais des onglets du ruban :-( et j'ai totalement oublié de
le préciser, je te présente mes excuses pour t'avoir fait bosser pour rien.

je précise donc ma question :
Comment afficher les noms des boutons de chaque onglet du ruban ?

Exemple : onglet Accueil, le premier bouton "Coller", son info bulle
complète est
-----------------
Coller (Ctrl+V)
Ajouter du contenu au Presse-papiers de votre document.
-----------------
c'est la première ligne que je voudrais récupérer "Coller (Ctrl+V)",
mais si on doit récupérer la description complète c'est pas un problème.

Encore désolé pour ce manque de précision de ma part.

--
JièL des os lait
MichD
Le #26380815
Le ruban est inaccessible en VBA avec les compliments de Microsoft.
Si tu veux le faire...Ce sera en XML et avec l'aide une adresse que je t'ai déjà donnée,
http://www.rondebruin.nl/win/section2.htm le site est complet, mais en
anglais.

Moi, je ne réponds pas à ce type de question...
JièL
Le #26380897
Le 08/12/2015 11:35, MichD a écrit :
Le ruban est inaccessible en VBA avec les compliments de Microsoft.



OK, ça j'ai compris, mais je ne cherche pas à modifier le ruban, juste à
connaitre les noms des boutons de chaque onglet du ruban

Si tu veux le faire...Ce sera en XML et avec l'aide une adresse que je
t'ai déjà donnée,
http://www.rondebruin.nl/win/section2.htm le site est complet, mais en
anglais.



Vi, merci, mais, encore une fois ce n'est pas une modif que je veux
faire, c'est juste une lecture

Moi, je ne réponds pas à ce type de question...



OK, message reçu.

--
JièL qui pose trop de question hé tran je
Jacquouille
Le #26380899
Tu sais, Jièl, en cette fin d'année, il n'est pas mauvais de mettre les
cerveaux sur "ralenti" .....
-))


Jacques
" Le vin est au repas ce que le parfum est à la femme."
----------------
Moi, je ne réponds pas à ce type de question...



OK, message reçu.

--
JièL qui pose trop de question hé tran je


---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
http://www.avast.com
MichD
Le #26380912
| OK, ça j'ai compris, mais je ne cherche pas à modifier le ruban, juste à
| connaitre les noms des boutons de chaque onglet du ruban

Tu as des yeux, alors, tu peux le faire... au besoin, fais appel à tes lunettes.
Ruban est inaccessible en VBA!
JièL
Le #26380915
Pré scriptum, nb, nota etc... je n'ai nullement l'intention de te
froisser, je respecte trop tes compétences sur Excel (entre autre)

J'espère que tu ne prend pas mes remarques au sérieux et que tu vois
bien les "souriettes" même si il manque le ton.

Le 09/12/2015 17:04, MichD a écrit :
| OK, ça j'ai compris, mais je ne cherche pas à modifier le ruban, juste à
| connaitre les noms des boutons de chaque onglet du ruban

Tu as des yeux, alors, tu peux le faire... au besoin, fais appel à tes
lunettes.



Attend, je compte... 1, 2, 3... le compte est bon, j'ai effectivement 2
yeux et une paire de lunette sur le nez et d'autres dans le tiroir,
mais... aucune ne me permet d'afficher les noms des boutons des
onglets... aurais-tu des lunettes spéciales ? ;-)))))))

Ruban est inaccessible en VBA!



Au risque de te décevoir, j'ai un début de commencement de code qui me
donne certaines informations, mais je reconnais que ça n'est pas
exactement ce que j'attend et que je ne sais pas comment trier ces
infos, mais, si je lis bien, c'est bien les noms de toutes les commandes
Excel, resterait à les remettre dans l'ordre des onglets car là c'est
juste l'ordre des ID

Option Explicit
Dim oOutXL As Excel.Application
Dim I As Long
Dim iRowCount As Long
Dim oItm As Object ' so it'll handle varying item types
Dim oSheet As Excel.Worksheet

Sub GetExcelCommandBarIDs()
Application.ScreenUpdating = False
If MsgBox("This will clear the current worksheet, OK to continue?",
vbOKCancel) = 1 Then

Cells.Select
Selection.ClearContents

iRowCount = 0
Set oSheet = ActiveSheet
Set oOutXL = New Excel.Application

GetInspectorIDs oOutXL, ""

Selection.AutoFilter
Cells.Select
Cells.EntireColumn.AutoFit
Range("A1").Select

MsgBox "The spreadsheet is complete."

End If

End Sub


Sub GetInspectorIDs(oItm, sType As String)
Dim oCBs As Office.CommandBars
Dim oCtl As Office.CommandBarControl
Application.ScreenUpdating = False
Set oCBs = oItm.Application.CommandBars
iRowCount = 2
For I = 1 To 35000
Set oCtl = oCBs.FindControl(, I)

If Not (oCtl Is Nothing) Then
iRowCount = iRowCount + 1
oSheet.Cells(iRowCount, 1) = "CommandBArs"
oSheet.Cells(iRowCount, 2) = sType
oSheet.Cells(iRowCount, 3) = oCtl.Parent.Name
oSheet.Cells(iRowCount, 4) = oCtl.Caption
oSheet.Cells(iRowCount, 5) = CStr(I)
End If
Next
End Sub
MichD
Le #26380960
Si tu fais référence à la barre de menu d'Excel 2003 et des versions antérieures,
mais si tu parles du ruban de 2007 à 2016, je maintiens ma position.

Attention, il est possible d'afficher l'ancienne barre des menus dans la nouvelle
version d'Excel. La barre s'affichera dans le menu "Complément" du ruban

Exemple de code


'-----------------------------------------------
Sub Recréer_Ancien_Menu()
Dim MichD As CommandBar

On Error Resume Next
'Supprime la barre "MichD" si elle existe
Application.CommandBars("MichD").Delete

'Créer une barre de menu personnalisée
Set MichD = Application.CommandBars.Add("MichD", , True)

'copie les menus dans la nouvelle barre des menus
With CommandBars("Built-in Menus")
.Controls("&Fichier").Copy MichD
.Controls("&Edition").Copy MichD
.Controls("&Affichage").Copy MichD
.Controls("&Insertion").Copy MichD
.Controls("F&ormat").Copy MichD
.Controls("&Outils").Copy MichD
.Controls("&Données").Copy MichD
.Controls("&Fenêtre").Copy MichD
.Controls("&?").Copy MichD
End With
'Rendre visible la nouvelle barre des menus
'Elle sera disponible sous l'onglet "Complément" de
'la barre des menus dans les versions Excel 2007 et 2010
Application.CommandBars("MichD").Visible = True
End Sub
'-----------------------------------------------

Bon bidule "Set oCBs = oItm.Application.CommandBars" extrait l'information de l'ancienne barre
d'outils et cela n'a rien à voir avec le ruban.
MichD
Le #26380959
D'ailleurs, même en XML, je ne vois pas très bien comment tu arriveras à faire ce que tu
désires!

N'oublie pas, si tu trouves, je suppose qu'il y a beaucoup de personnes intéressées à ta découverte
ici!
Publicité
Poster une réponse
Anonyme