Macro évenementielle sur clic cellule ?

  • Initiateur de la discussion Initiateur de la discussion pmfontaine
  • Date de début Date de début

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 !

P

pmfontaine

Guest
Bonjour a tous,
J’ai beau chercher dans le Forum et dans l’aide VBA je ne trouve pas la réponse a mon problème d’aujourd’hui qui est d’exécuter une macro à partir d’un simple clic dans une cellule quelconque d’une colonne.
Style macro événementielle (l’évènement étant un clic dans une cellule quelconque)
Version Excel utilisé = 97
Merci
pmfontaine
 
salut,
je ne peux pas te dire si cela fonctionne sur excel97 vu que je ne l'ai pas.
mais bon il existe cette évenement :

Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)

End Sub
 
Re: Macro évenementielle sur clic cellule ? => Exemples d'Intersect Method

Bonsoir Arnaud, PmFontaine, le Forum

Je pense que les macros évènementielles de Feuilles :

=> Worksheet_SelectionChange
=> Worksheet_BeforeDoubleClick
=> Worksheet_BeforeRightClick (etc..etc)

Fonctionnaient déjà sous Excel 97...

Ensuite, pour attribuer une action précise en fonction d'une cellule ou d'une plage de cellules (et non toute la feuille) il faut utiliser la Méthode Intersect comme ceci :


Exemple 1) on veut une action quand on Click sur la Cellule "A1" uniquement :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("A1")) Is Nothing Then
MsgBox "Click on " & Target.Address
End If
End Sub


Exemple 2) on veut une action quand on Click n'importe où dans la colonne "A" uniquement :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("A:A")) Is Nothing Then
MsgBox "Click on " & Target.Address
End If
End Sub


Exemple 3) on veut une action quand on Click n'importe où dans les colonne "A" à "E" uniquement :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("A:E")) Is Nothing Then
MsgBox "Click on " & Target.Address
End If
End Sub


Exemple 4) on veut une action quand on Click n'importe où dans la Plage de "A1 à A10" uniquement :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("A1:A10")) Is Nothing Then
MsgBox "Click on " & Target.Address
End If
End Sub


Exemple 5) on veut une action quand on Click n'importe où dans plusieurs plages non-adjacentes :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("A1:A12, D4😀10, D20, D22, D55, E1:E12")) Is Nothing Then
MsgBox "Click on " & Target.Address
End If
End Sub


Exemple 6) on veut une action quand on Click n'importe où dans plusieurs colonnes non-contigues :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("A:A, C:C, E:E")) Is Nothing Then
MsgBox "Click on " & Target.Address
End If
End Sub


Voilà comme çà la méthode Intersect est documentée !

Bonne Soirée
@+Thierry
 
Re: Macro évenementielle sur clic cellule ? => Exemples d'Intersect Method

Ah oui les Rows...

Exemple 7) on veut une action quand on Click n'importe où dans la ligne 1:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Rows(1)) Is Nothing Then
MsgBox "Click on " & Target.Address
End If
End Sub


Exemple 8) on veut une action quand on Click n'importe où dans entre les lignes 1 et 3:
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range(Rows(1), Rows(3))) Is Nothing Then
MsgBox "Click on " & Target.Address
End If
End Sub


Par contre là où çà se corse c'est pour le faire en lignes non contigues...

Exemple 9) on veut une action quand on Click n'importe où dans dans les lignes 1 ou 3 uniquement (pas la 2) :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range(Rows(1), Rows(3))) Is Nothing Then
If Application.Intersect(Target, Rows(2)) Is Nothing Then
MsgBox "Click on " & Target.Address
End If
End If
End Sub

Ouf !! lol

Mais bon on peut faire la même chose aussi comme çà :
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Not Application.Intersect(Target, Range("A1:IV1, A3:IV3")) Is Nothing Then
MsgBox "Click on " & Target.Address
End If
End Sub

Enfin un Fil bien cousu !! lol
Bonne Soirée
@+Thierry
 
Bonjour le Forum
Re Thierry

Super Génial, encore une fois je l'ai rêvé, Thierry nous l'a dévoilé. Cela faisait longtemps que j'attendais cette petite merveille. Je me contentais de placer une valeur à chaque fois.

Je place le tout à l'abri tout de suite.

Youre are the Greatest Mister Thierry. J'en profite également pour te dire que c'est Impec pour ta version II. Encore merci pour tout ce que tu nous apporte.

@ ++ Eric C
 
- 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
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

Retour