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

Pb de contrôle de barre de commande en vba

3 réponses
Avatar
cmoi
Bonjour,

J'ai le code suivant:

Dans un module:

Public Const btntxt0$ = "Worksheet Menu Bar"
Public Const btntxt1$ = "&mon-texte"
Public cbar1 As CommandBar, cbtn1 As CommandBarPopup

Dans ThisWorkbook:

Private Sub Workbook_Deactivate()
Set cbar1 = CommandBars(btntxt0)
cbar1.Controls(btntxt1).Enabled = False
End Sub

La ligne Set cbar1 = CommandBars(btntxt0) provoque une erreur 91 "variable
objet non définie". Pourquoi ????? !!!!

Merci pour le temps et la peine.

cmoi

3 réponses

Avatar
MichDenis
' Ta variable cbar1 représente la barre des menus d'excel
Set cbar1 = CommandBars(btntxt0)

'Cette ligne dit que tu as un CONTROLE de la barre des menus Excel
'qui s'appelle btntxt1 -> "Worksheet Menu Bar" qui est sans doute
'pas vrai ... btntxt1 étant le nom de la barre d'outils.

cbar1.Controls(btntxt1).Enabled = False

Si tu remplaces "btntxt1" par le "vrai" nom d'un contrôle
existant de la barre des menus d'excel, cela va fonctionner.
Exemple :
cbar1.Controls("Edition").enabled = False






"cmoi" a écrit dans le message de news: 47e54ee3$0$876$
Bonjour,

J'ai le code suivant:

Dans un module:

Public Const btntxt0$ = "Worksheet Menu Bar"
Public Const btntxt1$ = "&mon-texte"
Public cbar1 As CommandBar, cbtn1 As CommandBarPopup

Dans ThisWorkbook:

Private Sub Workbook_Deactivate()
Set cbar1 = CommandBars(btntxt0)
cbar1.Controls(btntxt1).Enabled = False
End Sub

La ligne Set cbar1 = CommandBars(btntxt0) provoque une erreur 91 "variable
objet non définie". Pourquoi ????? !!!!

Merci pour le temps et la peine.

cmoi
Avatar
cmoi
Merci MichDenis,

Il y avait effectivement une erreur de code à la deuxième ligne que j'ai
corrigée comme ceci, mais c'est la première qui provoque l'erreur:
Private Sub Workbook_Deactivate()
Set cbar1 = CommandBars(btntxt0) '--- Erreur 91 ici ---
Set cbtn1 = cbar1.Controls(btntxt1)
cbar1.Controls(cbtn1).Enabled = False
End Sub

Mais la première ligne: Set cbar1 = CommandBars(btntxt0) provoque toujours
la même erreur. Il s'agit bien de la barre de menus Excel dans laquelle j'ai
ajouté un contrôle CommandBarPopup défini par la constante btntxt1

"MichDenis" a écrit dans le message de news:

' Ta variable cbar1 représente la barre des menus d'excel
Set cbar1 = CommandBars(btntxt0)

'Cette ligne dit que tu as un CONTROLE de la barre des menus Excel
'qui s'appelle btntxt1 -> "Worksheet Menu Bar" qui est sans doute
'pas vrai ... btntxt1 étant le nom de la barre d'outils.

cbar1.Controls(btntxt1).Enabled = False

Si tu remplaces "btntxt1" par le "vrai" nom d'un contrôle
existant de la barre des menus d'excel, cela va fonctionner.
Exemple :
cbar1.Controls("Edition").enabled = False






"cmoi" a écrit dans le message de news:
47e54ee3$0$876$
Bonjour,

J'ai le code suivant:

Dans un module:

Public Const btntxt0$ = "Worksheet Menu Bar"
Public Const btntxt1$ = "&mon-texte"
Public cbar1 As CommandBar, cbtn1 As CommandBarPopup

Dans ThisWorkbook:

Private Sub Workbook_Deactivate()
Set cbar1 = CommandBars(btntxt0)
cbar1.Controls(btntxt1).Enabled = False
End Sub

La ligne Set cbar1 = CommandBars(btntxt0) provoque une erreur 91 "variable
objet non définie". Pourquoi ????? !!!!

Merci pour le temps et la peine.

cmoi





Avatar
MichDenis
Et oui en lisant rapidement, j'ai passé par dessus un détail important ...

Tu inscris ton code dans le ThisWorkbook de ton classeur.... et à cet
endroit tu dois obligatoirement faire référence à l'objet application
dans l'hiérarchisation de la ligne de commande comme ceci :

Set cbar1 = Application.CommandBars(btntxt0)
Si tu préfères, tu peux aussi utiliser cette syntaxe :
Set c = ThisWorkbook.Application.CommandBars(1)

Dans tous les autres modules (les modules "feuille", les modules "Standard" et
les modules "de classe") sauf celui du ThisWorkbook.
la syntaxe de la commande suivante est acceptable

Set cbar1 = CommandBars(btntxt0)

Je te suggère de relancer un autre fil avec la question suivante :
Pourquoi une telle chinoiserie ?

Peut être quelques illuminés en ce dimanche de Pâques pourrait te donner
la réponse .... moi, je vais me coucher ;-))


"cmoi" a écrit dans le message de news: 47e5b1b1$0$898$
Merci MichDenis,

Il y avait effectivement une erreur de code à la deuxième ligne que j'ai
corrigée comme ceci, mais c'est la première qui provoque l'erreur:
Private Sub Workbook_Deactivate()
Set cbar1 = CommandBars(btntxt0) '--- Erreur 91 ici ---
Set cbtn1 = cbar1.Controls(btntxt1)
cbar1.Controls(cbtn1).Enabled = False
End Sub

Mais la première ligne: Set cbar1 = CommandBars(btntxt0) provoque toujours
la même erreur. Il s'agit bien de la barre de menus Excel dans laquelle j'ai
ajouté un contrôle CommandBarPopup défini par la constante btntxt1

"MichDenis" a écrit dans le message de news:

' Ta variable cbar1 représente la barre des menus d'excel
Set cbar1 = CommandBars(btntxt0)

'Cette ligne dit que tu as un CONTROLE de la barre des menus Excel
'qui s'appelle btntxt1 -> "Worksheet Menu Bar" qui est sans doute
'pas vrai ... btntxt1 étant le nom de la barre d'outils.

cbar1.Controls(btntxt1).Enabled = False

Si tu remplaces "btntxt1" par le "vrai" nom d'un contrôle
existant de la barre des menus d'excel, cela va fonctionner.
Exemple :
cbar1.Controls("Edition").enabled = False






"cmoi" a écrit dans le message de news:
47e54ee3$0$876$
Bonjour,

J'ai le code suivant:

Dans un module:

Public Const btntxt0$ = "Worksheet Menu Bar"
Public Const btntxt1$ = "&mon-texte"
Public cbar1 As CommandBar, cbtn1 As CommandBarPopup

Dans ThisWorkbook:

Private Sub Workbook_Deactivate()
Set cbar1 = CommandBars(btntxt0)
cbar1.Controls(btntxt1).Enabled = False
End Sub

La ligne Set cbar1 = CommandBars(btntxt0) provoque une erreur 91 "variable
objet non définie". Pourquoi ????? !!!!

Merci pour le temps et la peine.

cmoi