Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Connaître le control actif dans une commandbar

3 réponses
Avatar
gerryl
Bonjour,

Je cherche une solution à mon problème :

Dans une feuille Excel, je crée un menu personnalisé dans lequel se trouvent différents boutons, certains fixes et d'autres qui dépendent du classeur sélectionné. Par exemple je crée autant de lignes qu'il ya d'affichages personnalisés dans le classeur. Ces lignes prennent le nom de chaque affichage personnalisé (exemple vue1, vue2, ..., vuex). Elles doivent toutes déclencher la même action (affichage d'une vue personnalisée)

Le problème est de récupérer le nom de la commande sur laquelle l'utilisateur a cliqué pour pouvoir afficher la vue correspondante.

Merci.

3 réponses

Avatar
LSteph
Bonjour,
Crée une liste des vues (manuel ou VBA) ou des noms Insertion définir
un nom
avec des liens htxt
suffit de faire Ctrl+k Plage dans le document
On met le nom qu'on veut

--
lSteph


On 24 déc, 07:11, gerryl wrote:
Bonjour,

Je cherche une solution à mon problème :

Dans une feuille Excel, je crée un menu personnalisé dans lequel se t rouvent
différents boutons, certains fixes et d'autres qui dépendent du class eur
sélectionné. Par exemple je crée autant de lignes qu'il ya d'affich ages
personnalisés dans le classeur. Ces lignes prennent le nom de chaque af fichage
personnalisé (exemple vue1, vue2, ..., vuex). Elles doivent toutes dé clencher la
même action (affichage d'une vue personnalisée)

Le problème est de récupérer le nom de la commande sur laquelle l'u tilisateur a
cliqué pour pouvoir afficher la vue correspondante.

Merci.


Avatar
gerryl
LSteph a écrit le 24/12/2009 à 16h28 :
Bonjour,
Crée une liste des vues (manuel ou VBA) ou des noms Insertion
définir
un nom
avec des liens htxt
suffit de faire Ctrl+k Plage dans le document
On met le nom qu'on veut

--
lSteph


On 24 déc, 07:11, gerryl wrote:
Bonjour,

Je cherche une solution à mon problème :

Dans une feuille Excel, je crée un menu personnalisé dans lequel
se t rouvent
différents boutons, certains fixes et d'autres qui dépendent du
class eur
sélectionné. Par exemple je crée autant de lignes qu'il
ya d'affich ages
personnalisés dans le classeur. Ces lignes prennent le nom de chaque af
fichage
personnalisé (exemple vue1, vue2, ..., vuex). Elles doivent toutes
dé clencher la
même action (affichage d'une vue personnalisée)

Le problème est de récupérer le nom de la commande sur
laquelle l'u tilisateur a
cliqué pour pouvoir afficher la vue correspondante.

Merci.





Merci LSteph,
Mais cela ne répond pas à ma question d’une manière générale.
Comment trouver le bouton qui a été sélectionné. Prenons un autre exemple :
Je construis par macro un menu avec plusieurs boutons qui se créent en fonctions de différents paramètres soit Liste1, Liste2, Liste3. Ces boutons pointent tous vers la même macro avec l’appel suivant :
Set cmd1 = CommandBars(1).Controls("Exemple").Controls.Add(msoControlPopup)
Set myRange = Worksheets("Feuil1").Range("W1:W10")
With cmd1
.Caption = "&Listes"
For i = 1 To Application.WorksheetFunction.CountA(myRange)
.Controls.Add (msoControlButton)
With .Controls(i)
.Caption = Worksheets("Résultats").Range("W1").Offset(rowoffset:=i - 1, columnoffset:=0)
.OnAction = "Listes"
End With
Next i
End With
Ce programme récupère les valeurs situées dans une feuille Excel entre W1 et W10. Il créée un menu pour chacune des valeurs trouvées. Tous ces menus déclenchent la macro Listes.
La question est de savoir quel élément de la liste a provoqué l’accès à cette macro Listes ?
Avatar
LSteph
Bonjour,
Je comprends.
Pour une CommandBar je ne l'ai pas encore envisagé, pour une feuille
ou un userform il faut introduire un module de classe, qui va
permettre de gèrer les evennements de toute une collection et lui
assignr une même tâche sur l'évent click par exmple,
lors de l'ajout du (cbb) commandbarbouton dans ta (cmb)mmandbar, cela
suppose que tu boucle sur ces controls
en mettant au passage cbb.caption="vue" & i
Ensuite chaque bouton activant la vue correspondant à son caption.

Extrait d'un exemple avec des boutons dans une feuille si cela peut
t'inspirer pour faire le même genre de chose avec une commandbar

'module de classe nommé ClassBouton
Option Explicit

Public WithEvents myButs As CommandButton


Private Sub myButs_Click()
Feuil1.Activate 'uniquement pour 97

Call Remplit(myButs.Caption, myButs.BackColor)

End Sub

'Module ThisWorkbook

Private Sub Workbook_Open()
Call InitCButtons
End Sub


'ModuleStandard
Dim CButtons() As ClassBouton

Sub InitCButtons()
Dim myB As OLEObject, CmdB As MSForms.CommandButton
Dim I As Integer
For Each myB In Feuil1.OLEObjects
If TypeOf myB.Object Is CommandButton Then
I = I + 1
ReDim Preserve CButtons(1 To I)
Set CButtons(I) = New ClassBouton
Set CButtons(I).myButs = myB.Object
End If
Next myB
End Sub

'lSteph

On 25 déc, 08:02, gerryl wrote:
LSteph a écrit le 24/12/2009 à 16h28 :



> Bonjour,
> Crée une liste des vues (manuel ou VBA) ou des noms Insertion
> définir
> un nom
> avec des liens htxt
> suffit de faire Ctrl+k  Plage dans le document
> On met le nom  qu'on veut

> --
> lSteph

> On 24 déc, 07:11, gerryl  wrote:
>> Bonjour,

>> Je cherche une solution à mon problème :

>> Dans une feuille Excel, je crée un menu personnalisé dans lequel
>> se t rouvent
>> différents boutons, certains fixes et d'autres qui dépendent du
>> class eur
>> sélectionné. Par exemple je crée autant de lignes qu'il
>> ya d'affich ages
>> personnalisés dans le classeur. Ces lignes prennent le nom de chaque af
>> fichage
>> personnalisé (exemple vue1, vue2, ..., vuex). Elles doivent toutes
>> dé clencher la
>> même action (affichage d'une vue personnalisée)

>> Le problème est de récupérer le nom de la commande sur
>> laquelle l'u tilisateur a
>> cliqué pour pouvoir afficher la vue correspondante.

>> Merci.

Merci LSteph,
Mais cela ne répond pas à ma question d’une manière générale.
Comment trouver le bouton qui a été sélectionné. Prenons un autre exemple :
Je construis par macro un menu avec plusieurs  boutons qui se créent en
fonctions de différents paramètres soit Liste1, Liste2, Liste3. Ces b outons
pointent tous vers la même macro avec l’appel suivant  :
    Set cmd1 =
CommandBars(1).Controls("Exemple").Controls.Add(msoControlPopup)
    Set myRange = Worksheets("Feuil1").Range("W1:W10")
    With cmd1
        .Caption = "&Listes"
        For i = 1 To Application.WorksheetFunction.CountA(myRan ge)
            .Controls.Add (msoControlButton)
            With .Controls(i)
                .Caption =
Worksheets("Résultats").Range("W1").Offset(rowoffset:=i - 1, columnof fset:=0)
                .OnAction = "Listes"
            End With
        Next i
    End With
Ce programme récupère les valeurs situées dans une feuille Excel en tre W1 et
W10. Il créée un menu pour chacune des valeurs trouvées. Tous ces m enus
déclenchent la macro Listes.
La question est de savoir quel élément de la liste a provoqué l’a ccès à cette
macro Listes ?- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -