[VBA] Ajout d'un menu contextuel tout simple et plantage...
3 réponses
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
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
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
Bonjour.
Pas trop expert, mais "onaction" attend une variable de type chaîne.
Cordialement.
Daniel
"HD" <hd@anti.spam.fr> a écrit dans le message de news:
g4ks42$1170$1@biggoron.nerim.net...
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
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
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
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" <hd@anti.spam.fr> a écrit dans le message de news:
g4ks42$1170$1@biggoron.nerim.net...
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
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
HD
Ouille... effectivement... il me fallait mettre le nom des macros entre guillemets...
Merci à vous deux
@+ HD
Ouille... effectivement... il me fallait mettre le nom des macros entre
guillemets...