Gestion d'évènement

C

Crany

Guest
Bonjour,

Ne connaissant pas les macro excel, je me suis documenté sur la question mais il reste cependant encore une chose que je ne parviens pas à trouver:

Comment puis-je faire pour mettre en place une gestion d'évènement sur une cellule en particulier? Si c'est possible, quel est le nom de l'évènement changement de valeur de cellule?

Pour clarifier, je souhaite avoir une colone comprenant des cellules qui reagissent au changement de valeur en exécutant le code d'une fonction de mon choix.

Voila, merci de votre aide et dites moi si je n'ai pas été assez clair :)
 

CBernardT

XLDnaute Barbatruc
Bonjour Crany et Léa


Macro à placer dans le module de la feuille.

Private Sub Worksheet_Change(ByVal Target As Range)
If Not Application.Intersect(Target, Columns('B:B')) Is Nothing Then

'Code d'une fonction de ton choix

End If
End Sub

Dans cet exemple, le code de ton choix sera activé quand la valeur d'une cellule de la colonne B changera de valeur ou sera simplement activée.

Cordialement

CBernardT
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re:Gestion d'évènement (Topo Intersect Méthodes)

Bonjour Léa, Crany, Bernard, le Forum

J'avais fait un long Lien supprimé avec différentes méthodes d'Intersect, mais vu que cette question est récurrente, je pense utile de remettre ces infos/didactitielles ici (in Color !) :

Type d'évènements gérés en 'automatiques'

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


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


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


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


Exemple 9Bis) Variante plus simple 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('A1:IV1, A3:IV3')) Is Nothing Then
MsgBox 'Click on ' & Target.Address
End If
End Sub

On peut encore en trouver d'autres, mais je pense que celles ci sont les plus significatives...

Bon Après Midi
@+Thierry

Message édité par: _Thierry, à: 25/02/2005 14:52
 

Discussions similaires

Statistiques des forums

Discussions
312 104
Messages
2 085 335
Membres
102 865
dernier inscrit
FreyaSalander