Fusionner 2 macros worksheet_change

Bonjour,

sur le fichier ci-joint, j'ai 2 macros Worksheet_change que je voudrais fusionner mais je n'y arrive pas. Séparemment elles fonctionnent parfaitement mais pas ensembles.

La 1°, pour colorier des lignes en gris en fonction d'une valeur en R, est :

Dim plg, cel As Range
' sur la colonne R
  Set plg = Intersect(Columns("R"), Cible, UsedRange)
  If Not plg Is Nothing Then Exit Sub
    For Each cel In plg.Cells
' si la cellule a pour valeur 05C ou 05D colorier en gris les cellules de la colonne 1 à la colonne 12
      If cel.Value = "05C" Or cel.Value = "05D" Then cel.Offset(0, -17).Resize(1, 12).Interior.ColorIndex = 15 Else cel.Offset(0, -17).Resize(1, 12).Interior.ColorIndex = xlColorIndexNone
      If cel.Value = "05C" Or cel.Value = "05D" Then cel.Offset(0, -7).ClearContents ' supprime la date de traitement initial
      If cel.Value = "05C" Or cel.Value = "05D" Then cel.Offset(0, -6) = "Ann" 'écrit Ann sur la case de validation
    Next
  End If

La 2°, pour vider la 2° liste déroulante en G1 lorsque je change le choix de la liste déroulante en C1, est :

If Not Intersect(Range("C1:C1"), Target) Is Nothing And Target.Count = 1 Then
    Application.EnableEvents = False
    Target.Offset(0, 1) = Empty
   Application.EnableEvents = True
  End If

Cette 2° macro n'intervient qu'une fois, au début de l'utilisation du fichier. La 1° macro est utilisable plusieurs fois durant l'utilisation du fichier.

Merci par avance pour votre aide

Bonjour

En laissant ce que tu as fais (pas trop gênant de tester les 2 conditions)

Mais surtout tu remplaces le mot Cible par Target

Private Sub Worksheet_Change(ByVal targetAs Range)
Dim plg, cel As Range
' sur la colonne R
  Set plg = Intersect(Columns("R"), target, UsedRange)
  If Not plg Is Nothing Then
    On Error GoTo E
    With Application: .ScreenUpdating = 0: .Calculation = -4135: .EnableEvents = 0: End With
' enlever le mot de passe
    Me.Unprotect Password:="31@Mdp"
    For Each cel In plg.Cells
' si la cellule a pour valeur 05C ou 05D colorier en gris les cellules de la colonne 1 à la colonne 12
      If cel.Value = "05C" Or cel.Value = "05D" Then cel.Offset(0, -17).Resize(1, 12).Interior.ColorIndex = 15 Else cel.Offset(0, -17).Resize(1, 12).Interior.ColorIndex = xlColorIndexNone
      If cel.Value = "05C" Or cel.Value = "05D" Then cel.Offset(0, -7).ClearContents ' supprime la date de traitement initial
      If cel.Value = "05C" Or cel.Value = "05D" Then cel.Offset(0, -6) = "Ann" 'écrit Ann sur la case de validation
    Next
' remettre le mot de passe
E:  Me.Protect Password:="31@Mdp", DrawingObjects:=True, Contents:=True, Scenarios:=True, AllowSorting:=True, AllowInsertingRows:=True, AllowDeletingRows:=True, AllowFiltering:=True
    With Application: .EnableEvents = 1: .Calculation = -4105: .ScreenUpdating = 1: End With
  End If

If Not Intersect(Range("C1:C1"), target) Is Nothing And target.Count = 1 Then
    Application.EnableEvents = False
    target.Offset(0, 1) = Empty
   Application.EnableEvents = True
  End If
End Sub

Merci, je me sens tout con

Rechercher des sujets similaires à "fusionner macros worksheet change"