[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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
MichD
Le #26399745
Bonjour,

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
MichD
Le #26399749
Je précise, la valeur 107 est pour la touche + du pavé numérique du clavier.
Geo
Le #26399753
Bonjour

Excuse-moi, mais on ne passe dans le sub qu'au moment où le classeur
devient actif.

'--------------------------------------------------------------------
Private Sub Workbook_Activate()
Application.OnKey "{107}", "Module4.TouchePlus"
End Sub



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.
HD
Le #26399752
Je précise, la valeur 107 est pour la touche + du pavé numérique du
clavier.


Un grand MERCI à toi MichD.

Effectivement cela fonctionne bien mieux avec {107}.

Cordialement,

HD
HD
Le #26399751
Merci Geo. L'aide de MichD m'a bien aidée car mon souci était plus au
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
Geo
Le #26399750
Bonjour

Fonctionne parfaitement.



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.
HB
Le #26399797
Bonsoir,

Le 27/05/2016 à 13:59, Geo a écrit :
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.



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
Geo
Le #26399802
Bonjour

(mais peut-être était-ce de l'humour)



oui

puisque le code me semble très clair.



Pas pour moi, mais ce n'est pas important.
Publicité
Poster une réponse
Anonyme