Macro évenementielle

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 !

krystof_ii

XLDnaute Occasionnel
Bonjour,

Je souhaiterais savoir s'il est possible de lancer :
- une macro si clic dans une colonne précise + appui touche CTRL
- une autre si clic dans la meme colonne + appui touche CTRL + MAJ

En fichier joint un exemple pour ce pb
 

Pièces jointes

Re : Macro évenementielle

Bonjour.
À ma connaissance ce n'est pas possible. Solutions de remplacement:
1 - Le faire à l'aide du double clic et du clic droit respectivement
2 - Lors de la sélection de la cellule, Rendre visibles et positionnés à sa droite deux boutons qui le feront
3 - Le faire uniquement à l'aide de sélections consécutives de la cellule source puis cible.
4 - Un double clic sur une cellule de la colonne A ou B y copie la date en D
À +
 
Dernière édition:
Re : Macro évenementielle

Bonjour,

Si ça peut t'aider, voici un fichier qui répond à tes attentes (MAIS A UN DETAIL PRES).

Il fonctionne avec un click droit, et non avec le gauche.

Regarde la pièce jointe Classeur1.xls

Comme le dit Dranreb, je ne pense que ça soit possible avec le click gauche.

Cordialement.
 

Pièces jointes

Re : Macro évenementielle

Merci à vous 2.

La solution de Dra72 me conviendrait.

Toutefois :
- il faudrait que je désactive, le temps de la macro, le menu contextuel.Est-ce possible ?
- est-il possible de l'associer au double-clic gauche ?
- pourriez-vous m'éclairer sur le code :
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)

Dim Colonne As Integer
Dim Retour As Long
Retour1 = GetAsyncKeyState(16)
retour2 = GetAsyncKeyState(17)

Colonne = Target.Column

If Colonne = 4 Then
If (Retour1 And retour2 And 32768) <> 0 Then
'Code à exécuter si Ctrl + Maj
Range("B1") = ActiveCell
Exit Sub
End If

If (retour2 And 32768) <> 0 Then
'Code à exécuter si Ctrl
Range("B3") = ActiveCell
Exit Sub
End If
End If
End Sub

Pourquoi tester "Retour & 32768" : a quoi correspond 32768 ?
Au trouver les differentes valeurs de GetAsyncKeyState ?

Par avance, merci
 
Dernière édition:
Re : Macro évenementielle

Nouvelle procédure pour supprimer le menu contextuel si colonne=4

Code:
Private Sub Worksheet_BeforeRightClick(ByVal Target As Range, Cancel As Boolean)
Dim Colonne As Integer
Dim Retour As Long

Cancel = False
Retour1 = GetAsyncKeyState(16)
Retour2 = GetAsyncKeyState(17)

Colonne = Target.Column

If Colonne = 4 Then
  
If (Retour1 And 32768) <> 0 And (Retour2 And 32768) <> 0 Then
Cancel = True
'Code à exécuter si Ctrl + Maj
Range("B3") = ActiveCell
Exit Sub
End If

If (Retour2 And 32768) <> 0 Then
Cancel = True
'Code à exécuter si Ctrl
Range("B3") = ActiveCell
Exit Sub
End If

End If

End Sub
 
Re : Macro évenementielle

Oui bonne question.

En fait c'est un code que j'ai récupéré sur le net et je dois dire que je ne me suis pas posé la question.
En y regardant de plus près, je vois que retour1 prend la valeur -32768 si Maj est appuyé (idem pour retour2 avec Ctrl). 0 dans le cas inverse.

Je pense donc que l'on peut remplacer ces lignes par
If Retour1 = -32768 And Retour2 = -32768 Then

Et je viens de m'apercevoir que je n'avais pas modifié mon code en totalité mais peut être avais tu rectifié.
il faut remplacer Dim Retour par Dim Retour1
et ajouter une ligne pour Retour2.

Si ça t'intéresse, je te joins la liste des valeurs à envoyer à la fonction GetAsyncKeyState en fonction de la touche testée.

a ou A | 65 |
b ou B | 66 |
c ou C | 67 |
d ou D | 68 |
e ou E | 69 |
f ou F | 70 |
g ou G | 71 |
h ou H | 72 |
i ou I | 73 |
j ou J | 74 |
k ou K | 75 |
l ou L | 76 |
m ou M | 77 |
n ou N | 78 |
o ou O | 79 |
p ou P | 80 |
q ou Q | 81 |
r ou R | 82 |
s ou S | 83 |
t ou T | 84 |
u ou U | 85 |
v ou V | 86 |
w ou W | 87 |
x ou X | 88 |
y ou Y | 89 |
z ou Z | 90 |
espace | 32 |
souris | Bouton droit 1 |
souris | Bouton gauche 2 |
BackSpace| 8 |
Tab | 9 |
Suppr | 12 |
Entree | 13 |
MAJUSCULE| 16 |
Controle | 17 |
Alt | 18 |
Pause | 19 |
Caps Lock| 20 |

Bonne soirée.
 
Re : Macro évenementielle

En effet, sur le fichier exemple cela fonctionne parfaitement.

C'est lorsque je l'ai intégré dans mon fichier de planif, la macro événementielle "dbleclic droite" était 'ralenti' par la macro événementielle 'changement de sélection' (qui génére des calculs).
En désactivant cette seconde macro, j'ai retrouvé la réactivité attendue.

Merci bcp
 
- 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
18
Affichages
730
  • Question Question
Microsoft 365 Filtre Dynamique
Réponses
5
Affichages
253
Retour