[VBA] Macro à la saisie d'une touche
Le
HD

Bonjour,
Sur une feuille, Je voudrais qu'à la saisie de la touche "+" une macro
se déclenche.
J'ai donc mis mon code avec Application.OnKey dans
Workbook_SheetActivate.
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Name = "Saisie" Then
Application.OnKey "{+}", "TouchePlus"
Else
Application.OnKey "{+}"
End If
End Sub
Mon souci est que la fonction "TouchePlus" ne se lance pas lorsque l'on
est sur la feuille "Saisie" et que j'appuie sur la touche "+".
L'argument "{+}" correspond il bien à la touche "+" ?
Si oui, pourquoi cela ne fonctionne pas ?
Merci d'avance pour votre aide,
Cordialement,
HD
Sur une feuille, Je voudrais qu'à la saisie de la touche "+" une macro
se déclenche.
J'ai donc mis mon code avec Application.OnKey dans
Workbook_SheetActivate.
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Name = "Saisie" Then
Application.OnKey "{+}", "TouchePlus"
Else
Application.OnKey "{+}"
End If
End Sub
Mon souci est que la fonction "TouchePlus" ne se lance pas lorsque l'on
est sur la feuille "Saisie" et que j'appuie sur la touche "+".
L'argument "{+}" correspond il bien à la touche "+" ?
Si oui, pourquoi cela ne fonctionne pas ?
Merci d'avance pour votre aide,
Cordialement,
HD
Si tu veux que la touche "+" soit détectée sur toutes les feuilles dès l'ouverture du classeur et
pour ce classeur en particulier, utilise le code suivant dans le thisworkook du projetVBA de ton
classeur.
La touche + dans cette situation précise à la valeur 107, c'est ce que tu dois utiliser au lieu de
la touche + dans la commande "Application.OnKey".
Évidemment, tu peux utiliser d'autres événements selon les objectifs que tu poursuis.
'--------------------------------------------------------------------
Private Sub Workbook_Activate()
Application.OnKey "{107}", "Module4.TouchePlus"
End Sub
'--------------------------------------------------------------------
Private Sub Workbook_Deactivate()
Application.OnKey "{107}"
End Sub
'--------------------------------------------------------------------
MichD
Excuse-moi, mais on ne passe dans le sub qu'au moment où le classeur
devient actif.
Il faudrait que l'appui sur la touche soit effectué juste à ce
moment-là.
C'est la même chose d'ailleurs pour Sheet_Activate.
Ce que j'ai compris de la demande initiale c'est que la frappe sur la
touche + doit déclencher une macro uniquement si la frappe a lieu dans
une feuille donnée. Elle doit se faire autant de fois que le + sera
tapé dans cette feuille.
Le code initial ne peut pas marcher, il faut analyser toute la saisie
et ne faire un traitement particulier que si la feuille est active.
Un grand MERCI à toi MichD.
Effectivement cela fonctionne bien mieux avec {107}.
Cordialement,
HD
niveau de la capture de la touche "+" qui n'était pas prise en compte.
Mon script avec la modif :
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If Sh.Name = "Saisie" Then
Application.OnKey "{107}", "TouchePlus"
Else
Application.OnKey "{107}"
End If
End Sub
Fonctionne parfaitement.
"TouchePlus" est une fonction placé dans un module.
Cordialement,
HD
Habituellement un truc ne marche pas sans qu'on comprenne pourquoi.
L'inverse est rare, c'est le cas cette fois.
L'important est que ça fonctionne.
Le 27/05/2016 à 13:59, Geo a écrit :
Je ne comprends pas cette remarque
(mais peut-être était-ce de l'humour)
puisque le code me semble très clair.
HB
---
L'absence de virus dans ce courrier électronique a été vérifiée par le logiciel antivirus Avast.
https://www.avast.com/antivirus
oui
Pas pour moi, mais ce n'est pas important.