Excel : dans une feuille, tester l'appui d'une touche avant d'appuyer sur un bou

kaon Messages postés 1 Date d'inscription samedi 20 décembre 2003 Statut Membre Dernière intervention 20 décembre 2003 - 20 déc. 2003 à 12:20
cs_PROGRAMMIX Messages postés 1133 Date d'inscription mercredi 2 octobre 2002 Statut Membre Dernière intervention 24 juillet 2011 - 21 déc. 2003 à 17:06
Bonjour,

J'ai un bouton (commandbutton) dans une feuille excel avec lequel je souhaite lancer deux procédures differentes écrites en VBA (appelons les "procA" et "procB").

Je souhaite que l'appui sur la touche CTRL + l'appui (avec la souris) sur le bouton lance la procedure "procA" tandis que le seul appui sur le bouton lance la procédure "procB".

Je pensais pourvoir récuperer l'information d'appui sur la touche CTRL avec des évenements du type keypress-keyup-keydown mais l'objet worksheet ne les possède pas (excel2002).

Alors si quelqu'un peut me donner une idée sur le moyen d'arriver à mes fins ce serait vraiment sympa.

David
A voir également:

1 réponse

cs_PROGRAMMIX Messages postés 1133 Date d'inscription mercredi 2 octobre 2002 Statut Membre Dernière intervention 24 juillet 2011 2
21 déc. 2003 à 17:06
Dans une de mes applications, j'avais procédé de la manière suivante :

'CODE PLACE DANS LE MODULE THISWORKBOOK
'==================================
'A l'ouverture du classeur
Private Sub Workbook_Open()
'Appel d'une procédure
Application.OnWindow = "WindowActivate"
End Sub

'A la fermeture du classeur
Private Sub Workbook_BeforeClose(Cancel As Boolean)
Application.OnWindow = ""
Call DésactivationTouches_PgUp_PgDown
End Sub

'CODE PLACE DANS UN MODULE
'=====================
Dim LigneActive As Integer
Dim l As Integer
Dim c As Integer

Sub WindowActivate()
Select Case ActiveWindow.Caption
Case "HorairesEE.xls"
Call ActivationTouches_PgUp_PgDown
Case "HorairesSG.xls"
Call ActivationTouches_PgUp_PgDown
Case ThisWorkbook.Name
Call DésactivationTouches_PgUp_PgDown
Case Else
Call DésactivationTouches_PgUp_PgDown
End Select
End Sub

'ACTIVATION DE TOUCHES AFIN DE PERMETTRE LES DEPLACEMENTS VERS LE HAUT
'ET VERS LE BAS DES GRILLES HORAIRES DE FACON A CE QUE LES GRILLES SE
'PRESENTENT TOUJOURS DE LA MEME MANIERE A L'ECRAN.
'======================================================================
Sub ActivationTouches_PgUp_PgDown()
Application.OnKey "{PGDN}", "DéplacementVersLeBas"
Application.OnKey "{PGUP}", "DéplacementVersLeHaut"
Application.OnKey "^<", "Basculer"
End Sub

'DESACTIVATION DE CES TOUCHES.
'=============================
Sub DésactivationTouches_PgUp_PgDown()
Application.OnKey "{PGDN}"
Application.OnKey "{PGUP}"
Application.OnKey "^<"
End Sub

'PROCEDURE DE DEPLACEMENT DE LA GRILLE VERS LE BAS.
'==================================================
Sub DéplacementVersLeBas()

l = ActiveCell.Row
c = ActiveCell.Column

LigneActive = ActiveWindow.ScrollRow

Ecart = iEcart
If Cells(LigneActive + Ecart, 1).Formula = "" Then
Beep
Else
ActiveWindow.ScrollRow = LigneActive + Ecart
Cells(l + Ecart, c).Select
End If

End Sub

'PROCEDURE DE DEPLACEMENT VERS LE HAUT.
'======================================
Sub DéplacementVersLeHaut()
On Error GoTo Erreur

l = ActiveCell.Row
c = ActiveCell.Column
Ecart = iEcart

LigneActive = ActiveWindow.ScrollRow

If LigneActive = 1 Then
Beep
Else
ActiveWindow.ScrollRow = LigneActive - Ecart
Cells(l - Ecart, c).Select
End If

Exit Sub

Erreur:
Select Case Err
Case 1004
'Cas où la ligne se trouvant en haut de l'écran est
'inférieur ou égal à 42 : l'expression "LigneActive - 42"
'donne alors une valeur égale ou inférieur à 0;
'or la numérotation des lignes commence à 1.
'--------------------------------------------------------
ActiveWindow.ScrollRow = 1
Resume Next
Case Else
MsgBox Err.Number & vbCr & Err.Description
End Select
End Sub

Programmix
0
Rejoignez-nous