Macro évenementielle sur clic cellule ?

  • Initiateur de la discussion pmfontaine
  • Date de début
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
 
A

Arnaud

Guest
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
 
@

@+Thierry

Guest
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:D10, 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
 
@

@+Thierry

Guest
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
 
E

Eric C

Guest
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
 
E

Eric C

Guest
Re le Forum
Bonsoir pmfontaine, Arnaud, Thierry & Pat 5

Excusez le "re" de you (Clavier mal entretenu ...Il faut bien un responsable ... lol)

Donc Pat5 merci de la correction.

@ ++ Eric C
 

Discussions similaires

Statistiques des forums

Discussions
312 352
Messages
2 087 539
Membres
103 583
dernier inscrit
CYP_CHZ