Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Touche CTRL + Bouton

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Magic_Doctor

XLDnaute Barbatruc
Bonsoir à tous,

Sur ma feuille, j'ai un bouton (Controle ActiveX).
Quand je clique dessus, je passe de "Vue Normale" à "Plein Écran". Quand je reclique dessus, je passe de "Plein Écran" à "Vue Normale".
Rien de bien compliqué dans tout ça.
Maintenant, je voudrais assigner à ce bouton une fonction, disons, "secrète". Si j'appuie sur la touche "CTRL" et que je clique en même temps sur le bouton, alors il se passe quelque chose.

Comment s'y prendre ?

Merci d'avance pour tout conseil.

Bonne nuit à tous.
 
Re : Touche CTRL + Bouton

Bonjour Magic_Doctor,

Il faut une 2ème touche, par exemple appuyer sur Ctrl+<.

Dans le code de la feuille :

Code:
Private Sub CommandButton1_Click()
'le code
ActiveCell.Activate
Application.OnKey "^<", "Active"
Application.OnTime 1, "Desactive"
End Sub
Dans un module standard :

Code:
Sub Active()
MsgBox "bonjour" 'pour tester
'le code "secret"
End Sub

Sub Desactive()
Application.OnKey "^<", ""
End Sub
A+
 
Dernière édition:
Re : Touche CTRL + Bouton

Re,

La touche de tabulation est plus "neutre", et facile d'accès (utiliser le pouce et l'index).

De plus il est mieux d'éviter que le code "secret" soit exécuté plusieurs fois quand on maintient les touches enfoncées, il faut cliquer de nouveau sur le bouton pour l'exécuter :

Code:
Private Sub CommandButton1_Click()
'le code
ActiveCell.Activate
Application.OnKey "^{TAB}", "Active"
Application.OnTime 1, "Desactive"
End Sub
Code:
Sub Active()
Application.OnKey "^{TAB}" 'évite les répétitions
MsgBox "bonjour" 'pour tester
'le code "secret"
End Sub

Sub Desactive()
Application.OnKey "^{TAB}"
End Sub
Edit : avec cette touche l'argument "" est inutile, sur mon ordi en tout cas.

A+
 
Dernière édition:
Re : Touche CTRL + Bouton

Bonsoir job, le forum,

Pas pu répondre avant, car absent.
En attendant, les idées à ce sujet se sont éclaircies.
J'ai essayé maintes fois tes solutions, mais ça ne marchait pas. J'ai dû me planter quelque part.
Voilà ce que je voudrais :

La feuille est en "Vue normale" --> on ne voit pas le poulpe.
Je passe en mode "Plein écran" --> on ne voit toujours pas le poulpe.
Seulement en mode "Plein écran", quand on réalise une combinaison de touches, le poulpe apparaît.
Quand on revient en "Vue normale" --> le poulpe disparaît.

Utiliser la combinaison "CTRL + Tab" me paraît une bonne idée (c'est en effet plus ergonomique), mais n'y aurait-il pas interférence avec les macros qui gèrent la touche "Tab" pour se dé`lacer verticalement dans les cellules non protégées ?

Bonne soirée à tous.

PS : mot de passe "zaza"
 

Pièces jointes

Re : Touche CTRL + Bouton

Bonjour Magic_Doctor,


C'est sûr qu'utiliser Application.OnKey "^{TAB}" etc pour lancer des macros différentes nécessite des précautions...

Il vaut mieux des touches différentes sauf si l'on a Alzheimer.

A+
 
Re : Touche CTRL + Bouton

Bonsoir Magic_Doctor, job75, le forum,

Puisqu'il n'est pas possible de détecter l'appui d'une touche dans un module de feuille de calcul, je propose d'utiliser le clic droit de la souris sur le bouton pour afficher/masquer "el pulpo".

Voir copie en PJ.

Cordialement.
 

Pièces jointes

Dernière édition:
Re : Touche CTRL + Bouton

Bonjour Magic_Doctor, job75, Papou-net, le forum,

Voici un code qui a l’air de fonctionner pour contrôler si la touche <Ctrl> est pressée :
VB:
Private Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As Long

Public Function CtrlIsPressed() As Boolean
    Select Case GetKeyState(&H11)
        Case 0, 1
            CtrlIsPressed = False
        Case Else
            CtrlIsPressed = True
    End Select
End Function

Il faut mettre ce code dans un module standard et utiliser la function CtrlIsPressed().

A+
 
Re : Touche CTRL + Bouton

Bonsoir Papou-net, job, mromain,

J'ai testé la solution de Papou-net qui marche très bien. Ma foi, faire un clic droit sur le bouton avec la souris, je n'y avais pas pensé. Après tout, pourquoi pas. L'essentiel c'est que ça marche et de pouvoir tromper l'ennemi...

Pas encore essayé la solution de mromain. Demain.

Merci à vous tous.
 
Re : Touche CTRL + Bouton

Bonjour à tous,

Et ceci ?:
Code:
Private Sub CommandButton1_MouseDown(ByVal Button As Integer, ByVal Shift As Integer, ByVal X As Single, ByVal Y As Single)
If Shift = 2 Then
  MsgBox "Ctrl appuyé"
Else
  MsgBox "No control"
End If
End Sub

nota : Maj -> 1, Ctrl -> 2, Alt ->4. On peut cumuler. Par exemple si on veut Maj+Ctrl, remplacer Shift =2 par Shift =3
 

Pièces jointes

Dernière édition:
Re : Touche CTRL + Bouton

Bonjour Magic_Doctor, Papou-net, mromain, mapomme, le forum,

L'API Windows de mromain appliquée à la touche "Ctrl" est la solution la plus simple.

Il suffit ensuite d'écrire dans ChangeEtat :

Code:
f.Shapes("Pulpo").Visible = Not test And CtrlIsPressed
Fichier joint.

Bonne journée.

A+
 

Pièces jointes

Re : Touche CTRL + Bouton

Bonjour mapomme, job, le forum,

job, je viens d'essayer à l'instant, effectivement ça marche très bien et c'est "laconique".
Je n'ai plus que l'embarras du choix.

Merci pour votre aide.
Bonne journée.
 
Re : Touche CTRL + Bouton

Re,

Notez qu'on peut utiliser directement la fonction GetKeyState :

Code:
f.Shapes("Pulpo").Visible = Not test And InStr("01", GetKeyState(17)) = 0
Fonctionne sur toutes versions Windows/Excel.

Quand on appuie sur "Ctrl", sur les anciennes versions, GetKeyState renvoie une valeur < 0.

Sur les versions récentes, GetKeyState renvoie une valeur > 1.

Fichier (6 bis).

A+
 

Pièces jointes

- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
10
Affichages
383
Réponses
1
Affichages
630
Réponses
4
Affichages
680
Réponses
8
Affichages
639
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…