CommandBars ("Row"). Contrôles ("Supprimer"). OnAction Not Working Anymore

Bonjour,

J'ai le code suivant pour personnaliser le menu contextuel dans Excel. Il est stocké dans "ThisWorkbook" . ArchiveRow sub est stocké dans Module1. Tout a bien fonctionné au début, puis il a cessé de fonctionner complètement et donne un time d'exécution

Erreur 5: appel ou argument de procédure non valide.

Une minute, il fonctionne, l'autre ce n'est pas. Toute aide est appréciée.

Private Sub Workbook_Open() Application.CommandBars("Row").Reset Application.CommandBars("Column").Reset Application.CommandBars("Cell").Reset With Application.CommandBars("Row") .Controls("Delete").OnAction = "ArchiveRow" .Controls("Cut").Enabled = False .Controls("Hide").Enabled = False .Controls("Unhide").Enabled = False .Controls("Clear Contents").Enabled = False .Controls("Paste").Enabled = False End With With Application.CommandBars("Cell") .Controls("Delete").Enabled = False .Controls("Cut").Enabled = False End With With Application.CommandBars("Column") .Controls("Delete").Enabled = False .Controls("Cut").Enabled = False End With End Sub 

Le suivant est appelé onaction. Je ne pense pas que le problème existe.

 Public Sub ArchiveRow() Application.EnableEvents = False Selection.Cut Sheets("DeletedList").Rows("3:3").Insert Shift:=xlDown Selection.Delete Application.EnableEvents = True End Sub 

Les commentaires sur tous les codes commençant par .Controls("Delete") fonctionneront. Il semble que toute reference à ce button provoque l'erreur.

Vous pouvez searchr le contrôle de suppression à l'aide de l'ID 293

 Application.CommandBars("Row").FindControl(ID:=293) 

c'est-à-dire replace .Controls("Delete") avec .FindControl(ID:=293) dans votre code.

Voici une list avec les ID de contrôle pour Office 2000 pour reference. L'ID devrait donc être compatible au less avec Office 2000 avec Office 2016.

Bizarrement Le nom du button change par lui-même. De "Supprimer" à "$ Supprimer" à "$ Supprimer …". Je viens d'écrire le code pour détecter le nom du button avant de le referencer.