Modification de code pour remplacement de cellule par plage

Salut a tous

Comment modifier le code pour vider plusieurs cellules de 1 à 26 sur la colonne correspondant a la donnée N3

a la place d’une seule cellule en ligne 2

Dans la plage2 Au lieu de vider 1 cellule dans C2 a L2 je voudrais vider 1 plage de 1 à 26 dans C2 a L2

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

Dim Plage1 As Range, Plage2 As Range, Plage3 As Range, Plage As Range, VCell As Range

If Target.Address = "$N$3" Then
    Application.EnableEvents = False
    Set Plage1 = ActiveSheet.Range("A6:A15")
    Set Plage2 = ActiveSheet.Range("C2:L2")
    Set Plage3 = ActiveSheet.Range("N6:N15")
    Set Plage = Union(Plage1, Plage2, Plage3)
    For Each VCell In Plage
        If VCell = ActiveSheet.Range("N3").Value Then VCell = ""
    Next
    ActiveSheet.Range("N3").Value = ""
End If
Application.EnableEvents = True
End Sub

merci @+

bonjour,

si j'ai bien compris

essaie en remplaçant cette instruction

Set Plage2 = ActiveSheet.Range("C2:L2")

par

Set Plage2 = ActiveSheet.Range("C2:L27")

salut h2so4

non ça ne change rien L26 ou L27 la plage de 1 a 26 garde les données a part sur la ligne 2 comme avant

merci du coup de main

bonjour,

mets-nous ton fichier !

ci-joint fichier

@+

bonjour,

une proposition

Option Explicit

Private Sub Worksheet_Change(ByVal Target As Range)

    Dim Plage1 As Range, Plage2 As Range, Plage3 As Range, Plage As Range, VCell As Range, re As Range

    If Target.Address = "$N$3" Then
        Application.EnableEvents = False
        Set Plage1 = ActiveSheet.Range("A6:A15")
        Set Plage2 = ActiveSheet.Range("C2:L26")
        Set Plage3 = ActiveSheet.Range("N6:N15")
        Set Plage = Union(Plage1, Plage2, Plage3)
        Set re = Plage.Find(Target.Value, lookat:=xlWhole)
        If Not re Is Nothing Then
            Do
                If Not Intersect(re, Plage2) Is Nothing Then
                    re.EntireColumn.ClearContents
                Else
                    re.ClearContents
                End If
                Set re = Plage.FindNext(re)
            Loop Until re Is Nothing
            ActiveSheet.Range("N3").ClearContents
        End If
    End If
    Application.EnableEvents = True
End Sub

au poil h2so4 merci

resolu

Rechercher des sujets similaires à "modification code remplacement plage"