OVH Cloud OVH Cloud

comment savoir si la touche CTRL est appuyée ? Excel 97

3 réponses
Avatar
chris col
Bonsoir à tous,

Je souhaiterais changer dans une simple feuille, la couleur du texte contenu
dans une cellule
quand je la sélectionne si la touche contrôle est appuyée. (Excel 97)

La fonction KeyDown ne semble pas s'appliquer ailleurs que dans un Contrôle.

Si QQ a un bout de code d'exemple, je le remercie par avance.


C.C.

3 réponses

Avatar
papou
Bonjour
Avec une fonction API peut-être bien que je ne vois pas trop l'utilité :
1 - dans le code de la feuille (à adapter) :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address <> "$A$1" Then Exit Sub
'Si Ctrl est appuyé Getkeystate renvoie une valeur négative
If GetKeyState(VK_CONTROL) < 0 Then
Target.Font.ColorIndex = 3 'rouge
Else: Target.Font.ColorIndex = 0: End If
End Sub

2 - dans un module standard :
Public Const VK_CONTROL = &H11
Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long) As
Integer

Cordialement
Pascal

"chris col" a écrit dans le message de news:
42811138$0$27922$
Bonsoir à tous,

Je souhaiterais changer dans une simple feuille, la couleur du texte
contenu
dans une cellule
quand je la sélectionne si la touche contrôle est appuyée. (Excel 97)

La fonction KeyDown ne semble pas s'appliquer ailleurs que dans un
Contrôle.

Si QQ a un bout de code d'exemple, je le remercie par avance.


C.C.




Avatar
papou
Re
Autre solution inspirée d'un exemple de Ole P. Erlandsen qui permet de
changer la couleur de la cellule si celle-ci est active (donc sans tenir
compte de la touche CTRL) :
1 - Dans un module standard :
Function CellActive(Lig As Boolean) As Long
CellActive = 0
On Error Resume Next
If Lig Then
CellActive = ActiveCell.Row
Else
CellActive = ActiveCell.Column
End If
End Function

2 - Dans le code de la feuille :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Me.Calculate
End Sub

3 - Dans une plage de cellules sur ta feuille :
Format Mise en forme conditionnelle, la formule est :
=ET(LIGNE()Îllactive(VRAI);COLONNE()Îllactive(FAUX))
puis tu détermines la couleur de la police

Cordialement
Pascal

"papou" <cestpasbon@çanonplus44.fr> a écrit dans le message de news:
%23%
Bonjour
Avec une fonction API peut-être bien que je ne vois pas trop l'utilité :
1 - dans le code de la feuille (à adapter) :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Address <> "$A$1" Then Exit Sub
'Si Ctrl est appuyé Getkeystate renvoie une valeur négative
If GetKeyState(VK_CONTROL) < 0 Then
Target.Font.ColorIndex = 3 'rouge
Else: Target.Font.ColorIndex = 0: End If
End Sub

2 - dans un module standard :
Public Const VK_CONTROL = &H11
Public Declare Function GetKeyState Lib "user32" (ByVal nVirtKey As Long)
As Integer

Cordialement
Pascal

"chris col" a écrit dans le message de news:
42811138$0$27922$
Bonsoir à tous,

Je souhaiterais changer dans une simple feuille, la couleur du texte
contenu
dans une cellule
quand je la sélectionne si la touche contrôle est appuyée. (Excel 97)

La fonction KeyDown ne semble pas s'appliquer ailleurs que dans un
Contrôle.

Si QQ a un bout de code d'exemple, je le remercie par avance.


C.C.








Avatar
chris col
Merci Papou,
C'est exactement ce que je cherchais jusque là en vain.

Ce serait plus que parfait s'il était possible d'inhiber, pendant
l'utilisation de cette procedure seulement, la fonction de sélection
multiple.

En tous cas, encore Merci.

C.C.