[VBA] Afficher les noms des boutons de tous les onglets
9 réponses
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 ;-)
Cette action est irreversible, confirmez la suppression du commentaire ?
Signaler le commentaire
Veuillez sélectionner un problème
Nudité
Violence
Harcèlement
Fraude
Vente illégale
Discours haineux
Terrorisme
Autre
MichD
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 '----------------------------------------------------------
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
'----------------------------------------------------------
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
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
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.
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 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...
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.
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 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
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
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
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
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
| 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
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
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
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
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
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
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
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.
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.
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
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!
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!