Action sur click droit de la sourie sur une cellule
Le
Bonjour,
J'aimerais savoir comment faire pour créer en VBA une action sur click droit de la sourie sur une cellule précise d’une feuille Excel.
Avant j'utilisais le code VBA directement dans la feuille du classeur :
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Call CreateVersionListOnBeforeRightClickEvent(Target)
End Sub
Cependant j'aimerais obtenir un code générique et non pas propre à une feuille.
Ce code devra donc être:
Si on es dans le classeur "MonClasseur" dans l'onglet "MonOnglet" et sur telle cellule, et si l'utilisateur fait un click droit, alors exécuter la macro « CreateVersionListOnBeforeRightClickEvent() ».
Pour l'instant j'ai essayé d'utiliser MouseDown sans succès. :
For Each w In Workbooks
If IsTheWorkBook("MonClasseur, w.Name) Then 'dans tel classeur
If ActiveSheetIs("MonOnglet") And MouseDown() Then 'click droit dans l’onglet
Call CreateVersionListOnBeforeRightClickEvent(Target)
End If
End If
Next w
Merci d'avance pour votre aide.
Sincérement
J'aimerais savoir comment faire pour créer en VBA une action sur click droit de la sourie sur une cellule précise d’une feuille Excel.
Avant j'utilisais le code VBA directement dans la feuille du classeur :
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Call CreateVersionListOnBeforeRightClickEvent(Target)
End Sub
Cependant j'aimerais obtenir un code générique et non pas propre à une feuille.
Ce code devra donc être:
Si on es dans le classeur "MonClasseur" dans l'onglet "MonOnglet" et sur telle cellule, et si l'utilisateur fait un click droit, alors exécuter la macro « CreateVersionListOnBeforeRightClickEvent() ».
Pour l'instant j'ai essayé d'utiliser MouseDown sans succès. :
For Each w In Workbooks
If IsTheWorkBook("MonClasseur, w.Name) Then 'dans tel classeur
If ActiveSheetIs("MonOnglet") And MouseDown() Then 'click droit dans l’onglet
Call CreateVersionListOnBeforeRightClickEvent(Target)
End If
End If
Next w
Merci d'avance pour votre aide.
Sincérement
Dans le code du ThisWorkbook du classeur:
Private Sub Workbook_SheetBeforeRightClick(ByVal _
Sh As Object, ByVal Target As Range, Cancel As Boolean)
MsgBox "Sur n'importe quelle feuille, ca marche!"
End Sub
'LSteph
On 2 fév, 10:27, raphael-diaz
Private Sub Workbook_SheetBeforeRightClick(ByVal _
Sh As Object, ByVal Target As Range, Cancel As Boolean)
Dim iSect As Range
'''
If Sh.Name <> "Accueil" Then _
MsgBox "Sur n'importe quelle feuille, sauf Accueil ca marche!"
'''
Set iSect = Intersect(Target, [B2])
If Not iSect Is Nothing Then
MsgBox "Bravo, c'est cette cellule qu'on voulait"
Else
MsgBox "mais ce n'est pas cette cellule"
End If
'''
Cancel = True ' annule l'affichage du menu contextuel
End Sub
'LSteph
On 2 fév, 10:27, raphael-diaz
une piste
à mettre dans ThisWorkbook
Sub Workbook_SheetBeforeRightClick(ByVal Sh As Object, ByVal Target As
Range, Cancel As Boolean)
MsgBox Sh.Name
MsgBox Target.Address
End Sub
Michel
"raphael-diaz"
Merci pour votre aide, c'est tres sympa. Les paramètres de "Worksheet_BeforeRightClick" vont pouvoir m'aider à mieux cerner d'où vient le probleme.
Cependant j'aimerais obtenir un code générique et non pas propre à une feuille. C'est à dire que je ne veux pas placer le code de la macro "Worksheet_BeforeRightClick" dans la feuille où ce situe mon évenement mais dans une autre feuille excel.
J'ai créé un fichier excel que je place dans C:Program FilesMicrosoft OfficeOFFICE11XLSTART et qui fonctionne sur un ensemble de fichiers excel.
Je veux donc créer un code indépendant qui s'applique sur une feuille particuliere mais le code lui meme n'est pas dans la feuille, il est externe(dans une autre feuille). C'est pour ca que j'avais pensé à la macro "MouseDown" que je n'ai pas su bien utiliser..
Le probleme c'est qu'il faut créer une configuration sur évenement "click droit" qui soit définie sur tel cellule de tel fichier et non pas l'inverse.Je ne sais pas si je suis clair...
Si vous avez des interrogations sur ma demande n'hésiter pas, en attendant je vais trifouiller Worksheet_BeforeRightClick pour voir si il y a d'autres alternative avec cette macro...
Je t'ai pourtant indiqué de mettre cela dans le module Thisworkbook et
non dans le module d'une feuille.
Cordialement.
--
LSteph
On 2 fév, 17:57, raphael-diaz
... et c'était pas Worksheet_BeforeRig...
mais
Private Sub Workbook_SheetBeforeRightClick
"raphael-diaz" news:
Re:
Dans le code du ThisWorkbook du classeur:
Private Sub Workbook_SheetBeforeRightClick(ByVal _
Sh As Object, ByVal Target As Range, Cancel As Boolean)
MsgBox "Sur n'importe quelle feuille, ca marche!"
End Sub
'LSteph
Merci mais ce n'est pas le meme fichier Excel en fait.
Il ya deux fichiers Excel :
- Un fichier Excel "test.xls" dans lequel sur une feuille "ZOZO" on a une cellule nommé "ICI"(Range)
- Un fichier Excel "programme.xls" dans lequel il y a un code qui peux etre dans ThisWorkbook par exemple et qui dit que si on click droit sur ici de "test.xls" alors une action en découle.
Je suis obligé pour des raisons spécifique à mon activité de mettre le code dans un fichier Excel séparé de celui dans lequel il doit agir... Je sais c'est un peu se compliquer la vie mais bon...
Sincérement
Tu as essayé d'utiliser un module de classe.
Fichier exemple : http://cjoint.com/?0cdqQJGZqmr
MichD
--------------------------------------------