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