Private Sub Worksheet_Change

Bonjour,

J'ai deux procédures Private Sub Worksheet_Change

La première:

Private Sub Worksheet_Change(ByVal Target As Range)
 If Not Intersect(Target, Range("E16:E1000")) Is Nothing Then Range(Cells(Target.Row, "F"), Cells(Target.Row + 1, "L")).ClearContents
End Sub

La deuxième:

Private Sub Worksheet_Change(ByVal Target As Range)

  ' Si modification dans la plage M16:M1000
  If Not Intersect(Target, Range("M16:M1000")) Is Nothing Then
  '  Si le choix est oui
    If Target.Value = "Oui" Then
   '   Désactiver les évènements
      Application.EnableEvents = False
      ' On insère une ligne en dessous
      ActiveSheet.Rows(Target.Row + 1).EntireRow.Insert Shift:=xlDown
      ' Réactiver les évènements
      Application.EnableEvents = True
    End If
  End If
End Sub

Les deux fonctionnent très bien quand j'en mets une en commentaire, et l'autre non.

Quand ils sont tous les deux en fonction (sans commentaire), ça ne fonctionne pas.

Comment les faire fonctionner ?

Il faut créer seulement un Private Sub Worksheet_Change mais comment intégrer les deux dans une procédure Worksheet_Change et qu'ils fonctionnent encore ?

Merci !

Merci !

Merci !

Bonjour

Essaie ça :

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("E16:E1000")) Is Nothing Then Range(Cells(Target.Row, "F"), Cells(Target.Row + 1, "L")).ClearContents
        'Si modification dans la plage M16:M1000
    ElseIf Not Intersect(Target, Range("M16:M1000")) Is Nothing Then
        'Si le choix est oui
     If Target.Value = "Oui" Then
        'Désactiver les évènements
        Application.EnableEvents = False
        'On insère une ligne en dessous
        ActiveSheet.Rows(Target.Row + 1).EntireRow.Insert Shift:=xlDown
        'Réactiver les évènements
        Application.EnableEvents = True
     End If
  End If
End Sub

Bye !

Bonjour!

Merci de m'avoir répondu.

J'ai essayé ton code :

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("E16:E1000")) Is Nothing Then Range(Cells(Target.Row, "F"), Cells(Target.Row + 1, "L")).ClearContents
        'Si modification dans la plage M16:M1000
    ElseIf Not Intersect(Target, Range("M16:M1000")) Is Nothing Then
        'Si le choix est oui
     If Target.Value = "Oui" Then
        'Désactiver les évènements
        Application.EnableEvents = False
        'On insère une ligne en dessous
        ActiveSheet.Rows(Target.Row + 1).EntireRow.Insert Shift:=xlDown
        'Réactiver les évènements
        Application.EnableEvents = True
     End If
  End If
End Sub

J'obtiens cet erreur:

erreur

Pourtant, les blocks End If sont tous là il me semble…

Bonjour à tous,

Une petite coquille dans le code gmb ..

Ceci devrait convenir ...

Private Sub Worksheet_Change(ByVal Target As Range)
    If Not Intersect(Target, Range("E16:E1000")) Is Nothing Then
        Range(Cells(Target.Row, "F"), Cells(Target.Row + 1, "L")).ClearContents
        'Si modification dans la plage M16:M1000
    ElseIf Not Intersect(Target, Range("M16:M1000")) Is Nothing Then
        'Si le choix est oui
     If Target.Value = "Oui" Then
        'Désactiver les évènements
        Application.EnableEvents = False
        'On insère une ligne en dessous
        ActiveSheet.Rows(Target.Row + 1).EntireRow.Insert Shift:=xlDown
        'Réactiver les évènements
        Application.EnableEvents = True
     End If
  End If
End Sub

ric

Super ça fonctionne !!!

Merci beaucoup !!!

Rechercher des sujets similaires à "private sub worksheet change"