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

[VBA] Ajout d'un menu contextuel tout simple et plantage...

3 réponses
Avatar
HD
Bonjour,

J'ai réalisé une macro qui ajoute un menu contextuel lorsque l'on fait un
clic-droit sur une cellule... mon problème est que lorsque la macro d'ajout
du menu contextuel est lancé l'on a le sablier qui apparaît et le classeur
Excel plante... Et je ne vois pas où est l'erreur ?

Sub ActiveMenuCellules()
On Error Resume Next
With Application.CommandBars("Cell").Controls.Add
.Caption = "Calculer le classeur (F9)"
.OnAction = CalcF9
End With

With Application.CommandBars("Cell").Controls.Add
.Caption = "Calculer la feuille"
.OnAction = CalcFeuille
End With

With Application.CommandBars("Cell").Controls.Add
.Caption = "Calculer les cellules sélectionnées"
.OnAction = CalcACell
End With

With Application.CommandBars("Cell").Controls.Add
If Application.Calculation = xlManual Then
.Caption = "Activer le calcul automatique"
Else
.Caption = "Activer le calcul manuel"
End If
.OnAction = ModeCalcul
End With
End Sub

Function CalcF9()
Application.Calculate
End Function

Function CalcFeuille()
ActiveSheet.Calculate
End Function

Function CalcACell()
Selection.Calculate
End Function

Function ModeCalcul()
If Application.Calculation = xlManual Then
Application.Calculation = xlAutomatic
Else
Application.Calculation = xlManual
End If
DoEvents
ResetMenuCellules
DoEvents
ActiveMenuCellules
End Function

Sub ResetMenuCellules()
Application.CommandBars("Cell").Reset
End Sub

Merci d'avance pour votre aide
--
@+
HD

3 réponses

Avatar
Daniel.C
Bonjour.
Pas trop expert, mais "onaction" attend une variable de type chaîne.
Cordialement.
Daniel
"HD" a écrit dans le message de news:
g4ks42$1170$
Bonjour,

J'ai réalisé une macro qui ajoute un menu contextuel lorsque l'on fait un
clic-droit sur une cellule... mon problème est que lorsque la macro
d'ajout du menu contextuel est lancé l'on a le sablier qui apparaît et le
classeur Excel plante... Et je ne vois pas où est l'erreur ?

Sub ActiveMenuCellules()
On Error Resume Next
With Application.CommandBars("Cell").Controls.Add
.Caption = "Calculer le classeur (F9)"
.OnAction = CalcF9
End With

With Application.CommandBars("Cell").Controls.Add
.Caption = "Calculer la feuille"
.OnAction = CalcFeuille
End With

With Application.CommandBars("Cell").Controls.Add
.Caption = "Calculer les cellules sélectionnées"
.OnAction = CalcACell
End With

With Application.CommandBars("Cell").Controls.Add
If Application.Calculation = xlManual Then
.Caption = "Activer le calcul automatique"
Else
.Caption = "Activer le calcul manuel"
End If
.OnAction = ModeCalcul
End With
End Sub

Function CalcF9()
Application.Calculate
End Function

Function CalcFeuille()
ActiveSheet.Calculate
End Function

Function CalcACell()
Selection.Calculate
End Function

Function ModeCalcul()
If Application.Calculation = xlManual Then
Application.Calculation = xlAutomatic
Else
Application.Calculation = xlManual
End If
DoEvents
ResetMenuCellules
DoEvents
ActiveMenuCellules
End Function

Sub ResetMenuCellules()
Application.CommandBars("Cell").Reset
End Sub

Merci d'avance pour votre aide
--
@+
HD



Avatar
michdenis
En plus des guillemets pour les chaînes de "onaction",

Si tes procédures appelées sont situées dans un module
feuille, tu dois aussi ajouter la référence à cette feuille
dans la chaîne de OnAction
Exemple : .OnAction = "Feuil1.Action1"





"HD" a écrit dans le message de news:
g4ks42$1170$
Bonjour,

J'ai réalisé une macro qui ajoute un menu contextuel lorsque l'on fait un
clic-droit sur une cellule... mon problème est que lorsque la macro
d'ajout du menu contextuel est lancé l'on a le sablier qui apparaît et le
classeur Excel plante... Et je ne vois pas où est l'erreur ?

Sub ActiveMenuCellules()
On Error Resume Next
With Application.CommandBars("Cell").Controls.Add
.Caption = "Calculer le classeur (F9)"
.OnAction = CalcF9
End With

With Application.CommandBars("Cell").Controls.Add
.Caption = "Calculer la feuille"
.OnAction = CalcFeuille
End With

With Application.CommandBars("Cell").Controls.Add
.Caption = "Calculer les cellules sélectionnées"
.OnAction = CalcACell
End With

With Application.CommandBars("Cell").Controls.Add
If Application.Calculation = xlManual Then
.Caption = "Activer le calcul automatique"
Else
.Caption = "Activer le calcul manuel"
End If
.OnAction = ModeCalcul
End With
End Sub

Function CalcF9()
Application.Calculate
End Function

Function CalcFeuille()
ActiveSheet.Calculate
End Function

Function CalcACell()
Selection.Calculate
End Function

Function ModeCalcul()
If Application.Calculation = xlManual Then
Application.Calculation = xlAutomatic
Else
Application.Calculation = xlManual
End If
DoEvents
ResetMenuCellules
DoEvents
ActiveMenuCellules
End Function

Sub ResetMenuCellules()
Application.CommandBars("Cell").Reset
End Sub

Merci d'avance pour votre aide
--
@+
HD



Avatar
HD
Ouille... effectivement... il me fallait mettre le nom des macros entre
guillemets...

Merci à vous deux

@+
HD