Méthode Intersect

Bonjour,

Je commence à utilisier VBA avec Excel en apprenant sur le tas. Jusque la ca marche pas mal grace aux forums mais ca y est je suis bloqué.

Je souhaite utiliser la méthode intersect pour déclencher une macro lors du changement de valeur d´une cellule par l´opérateur. Jusque la ca marche avec les infos que j´ai pu trouver sur le forum.

Par contre je souhaite - dans la même feuille Excel - démarrer une autre macro en cas de changement de valeur d´une autre cellule.

Bref, utiliser la méthode intersect deux fois dans une même feuille Excel.

Voila à quoi resemble le code :

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
    If Intersect(Target, Range("$I$13")) Is Nothing Then Exit Sub
    call graph

End Sub

Private Sub Worksheet_Change(ByVal Target As Range)
 If Target.Cells.Count > 1 Then Exit Sub
  If Intersect(Target, Range("$I$16,$I$18")) Is Nothing Then Exit Sub
  Call haupt

End Sub

Lorsque la macro est lancée Excel n´arrive pas à compiler. Il apparait une erreur précisant qu´il y a un conflit car le nom de sub Worksheet_change est utilisé à plusieurs reprises. J´ai essayé de changer le nom de la macro pour "Worksheet_Change1" et "Worksheet_change2" afin de les distinguer l´une de l´autre. Mais dans ce cas il ne se passe plus rien.

Merci d´avance pour votre aide!

nnaoy

Bonjour nnaoy,

Normal qu'Excel n'accepte pas. En réalité, c'est comme si tu lui donne deux ordres différent à réaliser pour un même événement (Worksheet_Change étant un événement, non une simple macro).

Comme tu peux le voir, la méthode du Intersect utilise la fonction If ... Then ... End If. En ajoutant un Not devant les Intersect cela permet de dire qu'en cas de modification de la dite cellule on réalise la macro. Il suffit donc d'ajouter un ElseIf au milieu avec la deuxième possibilité du Intersect, comme ceci :

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("$I$13")) Is Nothing Then
    call graph
    ElseIf Not Intersect(Target, Range("$I$16,$I$18")) Is Nothing Then
    Call haupt
    End If  
End Sub

A tester.

Bonjour,

Simplement :

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
    If Not Intersect(Target, Range("$I$13")) Is Nothing Then Call graph
    If Not Intersect(Target, Range("$I$16,$I$18")) Is Nothing Then Call haupt
End Sub

Bonsoir,

Essaie ainsi :

Private Sub Worksheet_Change(ByVal Target As Range)
    If Target.Cells.Count > 1 Then Exit Sub
    Select Case Target.Address
        Case "$I$13": Call graph
        Case "$I$16", "$I$18": Call haupt
    End Select
End Sub

Merci à tous pour les réponses rapides et précises.

J´ai essayé les différentes méthodes et elles marchent.

Bon week end

Yoann

Rechercher des sujets similaires à "methode intersect"