XL 2019 Plusieurs conditions avec Sub Worksheet_Change (ByVal Target As Range)

  • Initiateur de la discussion Initiateur de la discussion pat66
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

pat66

XLDnaute Impliqué
Bonjour le forum,

Je reviens vers vous et sollicite votre expertise car j'ai du mal à combiner ces 2 macros, à savoir :

Si Worksheets("Feuil1").Range("F30") = "A" ou si Worksheets("Feuil1").Range ("F30") = "B" ou Worksheets("Feuil1").Range("F30") = "C" then
exit sub
else
Call reinitioption
end if
end sub

Si Worksheets("Feuil1").Range("G195") <> 0 Or Worksheets("Feuil2").Range("AM106") = 2 Or Worksheets("Feuil2").Range("Y151") = "Non" Then
Exit Sub
else
Call reinitioption
end if
end sub



PS : dans les 2 cas il suffit qu'une des 3 valeurs soit différente pour activer Call reinitioption

Un grand merci pour votre aide

Pat66
 
Dernière édition:
Solution
Avec trois feuilles, c'est peut être plus simple de passer par des "Set", ce qui évite plusieurs "With" :
VB:
Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fin: If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [F30]) Is Nothing Then
        Set F2 = Sheets("Feuil2")
        Set F3 = Sheets("Feuil3")
        If (Target = "A" Or Target = "B" Or Target = "C") Or _
            F2.[M6] = 1 Or F2.[K17] = "Oui" Or F3.[G5] = 0 Then
                Call Reinitioption
        End If
    End If
Fin:
End Sub
Sub Reinitioption() ' Pour test
    MsgBox "Exécution de Reinitioption."
End Sub
re,

puisque vous avez trouvé la solution à mon problème, auriez vous la gentillesse de m'aider à ajouter une condition supplémentaire car je viens de m'apercevoir que je dois aussi tester G5 de la feuil3 dans les mêmes conditions, à savoir qu'un changement de F30 sur la feuil1 teste G5 de la feuil3

Si G5 de la feuil3 = 5 then
Call Reinitioption
sinon rien

merci d'avance



VB:
Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fin: If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [F30]) Is Nothing Then
        With Sheets("Feuil2")
            If (Target <> "A" Or Target <> "B" Or Target <> "C") Or _
                .[G195] <> 0 Or .[AM106] = 2 Or .[Y151] = "Non" Then
                Call Reinitioption
            End If
        End With
    End If
Fin:
End Sub
Sub Reinitioption() ' Pour test
    MsgBox "Exécution de Reinitioption."
End Sub
 
Dernière édition:
re,

je me suis inspiré de votre solution et je crois avoir trouvé comment ajouter cette condition
Après quelques tests ça à l'air de fonctionner ?, qu'en pensez vous ?

VB:
Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fin: If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [F30]) Is Nothing Then
        With Sheets("Feuil2")
            If (Target <> "A" And Target <> "B" And Target <> "C") Or _
                .[M6] = 1 Or .[K17] = "Oui" Then
                Call Reinitioption
                         End If
        With Sheets("Feuil3")
             If .[G5] = 0 Then
                Call Reinitioption
End If
  End With
   End With
    End If
Fin:
End Sub
Sub Reinitioption() ' Pour test
    MsgBox "Exécution de Reinitioption."
End Sub
 
Avec trois feuilles, c'est peut être plus simple de passer par des "Set", ce qui évite plusieurs "With" :
VB:
Sub Worksheet_Change(ByVal Target As Range)
On Error GoTo Fin: If Target.Count > 1 Then Exit Sub
    If Not Intersect(Target, [F30]) Is Nothing Then
        Set F2 = Sheets("Feuil2")
        Set F3 = Sheets("Feuil3")
        If (Target = "A" Or Target = "B" Or Target = "C") Or _
            F2.[M6] = 1 Or F2.[K17] = "Oui" Or F3.[G5] = 0 Then
                Call Reinitioption
        End If
    End If
Fin:
End Sub
Sub Reinitioption() ' Pour test
    MsgBox "Exécution de Reinitioption."
End Sub
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
250
Réponses
4
Affichages
148
Réponses
3
Affichages
599
Réponses
2
Affichages
407
Retour