Private Sub Worksheet_Change(ByVal Target As Range) / Avoir 2 cibles ?

Bonsoir,

Ma macro, toute simple, si la valeur change sur la colonne R, la valeur sur la colonne T passe à "100%".

Je souhaite rajouter, si la valeur change sur la colonne S, la valeur sur la colonne U passe à "100%".

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("R14:R200")) Is Nothing Then
Lignmodif = Target.Row
Colmodif = Target.Column
Affmodif = Cells(Lignmodif, 1)
Set celluletrouvee = Sheets("Planning").Range("A1:A400").Find(Affmodif, lookat:=xlWhole)

    If Target.Value = "DIFFUSE" Then
    Sheets("Planning").Range("A" & celluletrouvee.Row & ":W" & celluletrouvee.Row).Interior.ColorIndex = 24
    Range("T" & celluletrouvee.Row).Value = "100%"
    End If

 End If

End Sub
 

Si c'est possible, j'imagine que c'est en au niveau de (ByVal Target As Range) qu'il faut rajouter Target2

Quelle serait la syntaxe ? je suis bloqué .

Merci d'avance.

Harissa23

EDIT : si la valeur change sur la colonne S, la valeur sur la colonne "U" passe à "100%".

Bonsoir,

Il suffit de le déclarer dans la plage

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("R14:S200")) Is Nothing Then
Lignmodif = Target.Row
Colmodif = Target.Column
Affmodif = Cells(Lignmodif, 1)
Set celluletrouvee = Sheets("Planning").Range("A1:A400").Find(Affmodif, lookat:=xlWhole)

    If Target.Value = "DIFFUSE" Then
    Sheets("Planning").Range("A" & celluletrouvee.Row & ":W" & celluletrouvee.Row).Interior.ColorIndex = 24
    Range("T" & celluletrouvee.Row).Value = "100%"
    End If

 End If

End Sub

Bonjour,

Je souhaite rajouter, si la valeur change sur la colonne S, la valeur sur la colonne T passe à "100%".

Remplacer :

If Not Intersect(Target, Range("R14:R200")) Is Nothing Then

par :

If Not Intersect(Target, Union(Range("R14:R200"), Range("S14:S200"))) Is Nothing Then

Bonjour,

Après réflexion !...

A tester.

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim lRow As Long, r As Range
    If Target.Value = "DIFFUSE" Then
        If Not Intersect(Target, Me.Range("R14:R200,S14:S200")) Is Nothing Then
            lRow = Target.Row
            With Worksheets("Planning")
                Set r = .Range("A1:A400").Find(what:=.Cells(lRow, 1).Value, LookIn:=xlValues, lookat:=xlWhole)
                If r Is Nothing Then Exit Sub
                .Range("A" & r.Row & ":W" & r.Row).Interior.ColorIndex = 24
            End With
        End If
        Me.Range("T" & r.Row).Value = "100%"
    End If
End Sub

Désolé Erreur dans mon message

si la valeur change sur la colonne S, la valeur sur la colonne "U" passe à "100%"

Et non T... désolé.

EDIT : Merci avant tout pour vos réponses.

Je pense avoir compris ! Il ne peut n'y avoir qu'une cible...

Je vais passer pas du if ou select case.

Désolé de vous avoir fais perdre du temps, Et merci d'être toujours pret à aider.

Re,

La suite !...

Private Sub Worksheet_SelectionChange(ByVal Target As Range)
Dim lRow As Long, r As Range
    If Target.Value = "DIFFUSE" Then
        If Not Intersect(Target, Me.Range("R14:R200,S14:S200")) Is Nothing Then
            lRow = Target.Row
            With Worksheets("Planning")
                Set r = .Range("A1:A400").Find(what:=.Cells(lRow, 1).Value, LookIn:=xlValues, lookat:=xlWhole)
                If r Is Nothing Then Exit Sub
                .Range("A" & r.Row & ":W" & r.Row).Interior.ColorIndex = 24
            End With
        End If
        Target.Offset(, 2).Value = "100%"
    End If
End Sub

Merci à tous,

J'ai trouvé ma solution !

Private Sub Worksheet_Change(ByVal Target As Range)

If Not Intersect(Target, Range("R14:S200")) Is Nothing Then
Lignmodif = Target.Row
'Colmodif = Target.Column
Affmodif = Cells(Lignmodif, 1)
Set celluletrouvee = Sheets("Planning").Range("A1:A400").Find(Affmodif, lookat:=xlWhole)

With Target
Select Case Target.Column
Case Is = 18
    If Target.Value = "DIFFUSE" Then
    Sheets("Planning").Range("A" & celluletrouvee.Row & ":W" & celluletrouvee.Row).Interior.ColorIndex = 24
    Range("T" & celluletrouvee.Row).Value = "100%"
    End If
Case Is = 19
    If Target.Value = "DIFFUSE" Then
    Sheets("Planning").Range("A" & celluletrouvee.Row & ":W" & celluletrouvee.Row).Interior.ColorIndex = 24
    Range("U" & celluletrouvee.Row).Value = "100%"
    End If
Case Else
End Select
End With

End If
End Sub

J'ai compris ma connerie, qui est dans le titre..., la réponse est non.

Je comprends un peu mieux le genre de cas d'emploi d'un "Select Case".

Cordialement

Harissa23

Rechercher des sujets similaires à "private sub worksheet change byval target range cibles"