Code très simple ne fonctionne pas

Youri

XLDnaute Occasionnel
Bonjour à tous,

Pourquoi le code suivant ne fonctionne pas :
Code:
If Target.Address = "$C$207" And Target.Offset(1, 0).Value <> "" And Target.Offset(1, 0).Value <> 0 Then
    Worksheets("Fiche de renseignements").Range("C208:C231").ClearContents
End If
?
C'est étrange car
Code:
If Target.Address = "$C$207" And Target.Offset(1, 0).Value <> "" And Target.Offset(1, 0).Value <> 0 Then
    Worksheets("Fiche de renseignements").Range("C208").ClearContents
End If
fonctionne.

Voilà je vous remercie à l'avance d'aider un débutant.

Youri
 

Youri

XLDnaute Occasionnel
Re : Code très simple ne fonctionne pas

J'ai trouvé ! :

Code:
Dim CelleffA As Range
Dim PlageeffA As Range
With Worksheets("Fiche de renseignements")
    If Target.Address = "$C$207" Then
    Set PlageeffA = Range("C208:C231")
        For Each CelleffA In PlageeffA
            If CelleffA.Value <> 0 And CelleffA.Value <> "" Then
                CelleffA.ClearContents
            End If
        Next
    End If
End With

Bonne journée,
Youri
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Code très simple ne fonctionne pas

Bonjour YOuri, bonjour le forum,

Je t'avoue ne pas trouver la réponse. J'ai testé et les deux fonctionnent Es-tu bien sûr que dans les deux cas les trois conditions soient bien respectées ? Ne fonctionne pas ça veut dire quoi pour toi ? Message d'erreur ? la macro ne s'exécute pas ?
 

Youri

XLDnaute Occasionnel
Re : Code très simple ne fonctionne pas

Bonjour Robert, bonjour Ninbihan,

Alors c'est en effet très étrange, car dans mon cas le premier me fait une erreur avec incompatibilité de type ??? Je n'ai pas compris d'où ça pouvait venir d'autant que ça marchait chez moi auparavant également ... Ca vient peut être du code de toute la page, le voici ci-dessous :
Code:
Private Sub Worksheet_Change(ByVal Target As Range)
Dim celA As Range
Dim comptA As Byte
Dim celB As Range
Dim comptB As Byte
Dim celC As Range
Dim comptC As Byte
Dim celD As Range
Dim comptD As Byte
Dim celE As Range
Dim comptE As Byte
Dim celF As Range
Dim comptF As Byte
Dim celG As Range
Dim comptG As Byte
Dim celH As Range
Dim comptH As Byte
Dim celI As Range
Dim comptI As Byte
Dim CellConc As Range
Dim Plage As Range
Dim TempConcatenation As String
Dim CellConc2 As Range
Dim Plage2 As Range
Dim TempConcatenation2 As String
Dim CellConc3 As Range
Dim Plage3 As Range
Dim TempConcatenation3 As String
Dim CellConc4 As Range
Dim Plage4 As Range
Dim TempConcatenation4 As String
Dim CellConc5 As Range
Dim Plage5 As Range
Dim TempConcatenation5 As String
Dim CelleffA As Range
Dim PlageeffA As Range
Dim CelleffB As Range
Dim PlageeffB As Range
Dim CelleffC As Range
Dim PlageeffC As Range
Dim CelleffD As Range
Dim PlageeffD As Range
Dim CelleffE As Range
Dim PlageeffE As Range
Dim CelleffF As Range
Dim PlageeffF As Range
Dim CelleffG As Range
Dim PlageeffG As Range
Dim CelleffH As Range
Dim PlageeffH As Range
Dim CelleffI As Range
Dim PlageeffI As Range
Dim CelleffJ As Range
Dim PlageeffJ As Range
With Worksheets("Fiche de renseignements")
    If Target.Address = "$C$207" Then
    Set PlageeffA = Range("C208:C231")
        For Each CelleffA In PlageeffA
            If CelleffA.Value <> 0 And CelleffA.Value <> "" Then
                CelleffA.ClearContents
            End If
        Next
    End If
    If Target.Address = "$F$207" Then
    Set PlageeffB = Range("F208:F231")
        For Each CelleffB In PlageeffB
            If CelleffB.Value <> 0 And CelleffB.Value <> "" Then
                CelleffB.ClearContents
            End If
        Next
    End If
    If Target.Address = "$C$234" Then
    Set PlageeffC = Range("C235:C258")
        For Each CelleffC In PlageeffC
            If CelleffC.Value <> 0 And CelleffC.Value <> "" Then
                CelleffC.ClearContents
            End If
        Next
    End If
    If Target.Address = "$F$234" Then
    Set PlageeffD = Range("F235:F258")
        For Each CelleffD In PlageeffD
            If CelleffD.Value <> 0 And CelleffD.Value <> "" Then
                CelleffD.ClearContents
            End If
        Next
    End If
    If Target.Address = "$C$261" Then
    Set PlageeffE = Range("C262:C285")
        For Each CelleffE In PlageeffE
            If CelleffE.Value <> 0 And CelleffE.Value <> "" Then
                CelleffE.ClearContents
            End If
        Next
    End If
    If Target.Address = "$F$261" Then
    Set PlageeffF = Range("F262:F285")
        For Each CelleffF In PlageeffF
            If CelleffF.Value <> 0 And CelleffF.Value <> "" Then
                CelleffF.ClearContents
            End If
        Next
    End If
    If Target.Address = "$C$288" Then
    Set PlageeffG = Range("C289:C312")
        For Each CelleffG In PlageeffG
            If CelleffG.Value <> 0 And CelleffG.Value <> "" Then
                CelleffG.ClearContents
            End If
        Next
    End If
    If Target.Address = "$F$288" Then
    Set PlageeffH = Range("F289:F312")
        For Each CelleffH In PlageeffH
            If CelleffH.Value <> 0 And CelleffH.Value <> "" Then
                CelleffH.ClearContents
            End If
        Next
    End If
End With
    For Each celA In Range("F47:F59")
        If celA <> "" And celA <> 0 Then
           comptA = comptA + 1
        End If
    Next
    If comptA > 0 Then
        If Range("F60:F74").EntireRow.Hidden = True Then
            Range("F60:F74").EntireRow.Hidden = False
        End If
        Else
        If Range("F60:F74").EntireRow.Hidden = False Then
            Range("F60:F74").EntireRow.Hidden = True
        End If
    End If
    For Each celB In Range("F62:F74")
        If celB <> "" And celB <> 0 Then
           comptB = comptB + 1
        End If
    Next
    If comptB > 0 Then
        If Range("F75:F89").EntireRow.Hidden = True Then
            Range("F75:F89").EntireRow.Hidden = False
        End If
        Else
        If Range("F75:F89").EntireRow.Hidden = False Then
            Range("F75:F89").EntireRow.Hidden = True
        End If
    End If
    For Each celC In Range("F77:F89")
        If celC <> "" And celC <> 0 Then
           comptC = comptC + 1
        End If
    Next
    If comptC > 0 Then
        If Range("F90:F104").EntireRow.Hidden = True Then
            Range("F90:F104").EntireRow.Hidden = False
        End If
        Else
        If Range("F90:F104").EntireRow.Hidden = False Then
            Range("F90:F104").EntireRow.Hidden = True
        End If
    End If
    For Each celD In Range("F130:F137")
        If celD <> "" And celD <> 0 Then
           comptD = comptD + 1
        End If
    Next
    If comptD > 0 Then
        If Range("F138:F147").EntireRow.Hidden = True Then
            Range("F138:F147").EntireRow.Hidden = False
        End If
        Else
        If Range("F138:F147").EntireRow.Hidden = False Then
            Range("F138:F147").EntireRow.Hidden = True
        End If
    End If
    For Each celE In Range("F120:F127")
        If celE <> "" And celE <> 0 Then
           comptE = comptE + 1
        End If
    Next
    If comptE > 0 Then
        If Range("F128:F137").EntireRow.Hidden = True Then
            Range("F128:F137").EntireRow.Hidden = False
        End If
        Else
        If Range("F128:F137").EntireRow.Hidden = False Then
            Range("F128:F137").EntireRow.Hidden = True
        End If
    End If
    For Each celF In Range("F110:F117")
        If celF <> "" And celF <> 0 Then
           comptF = comptF + 1
        End If
    Next
    If comptF > 0 Then
        If Range("F118:F127").EntireRow.Hidden = True Then
            Range("F118:F127").EntireRow.Hidden = False
        End If
        Else
        If Range("F118:F127").EntireRow.Hidden = False Then
            Range("F118:F127").EntireRow.Hidden = True
        End If
    End If
    For Each celG In Range("F177:F186")
        If celG <> "" And celG <> 0 Then
           comptG = comptG + 1
        End If
    Next
    If comptG > 0 Then
        If Range("F187:F198").EntireRow.Hidden = True Then
            Range("F187:F198").EntireRow.Hidden = False
        End If
        Else
        If Range("F187:F198").EntireRow.Hidden = False Then
            Range("F187:F198").EntireRow.Hidden = True
        End If
    End If
    For Each celH In Range("F165:F174")
        If celH <> "" And celH <> 0 Then
           comptH = comptH + 1
        End If
    Next
    If comptH > 0 Then
        If Range("F175:F186").EntireRow.Hidden = True Then
            Range("F175:F186").EntireRow.Hidden = False
        End If
        Else
        If Range("F175:F186").EntireRow.Hidden = False Then
            Range("F175:F186").EntireRow.Hidden = True
        End If
    End If
    For Each celI In Range("F153:F162")
        If celI <> "" And celI <> 0 Then
           comptI = comptI + 1
        End If
    Next
    If comptI > 0 Then
        If Range("F163:F174").EntireRow.Hidden = True Then
            Range("F163:F174").EntireRow.Hidden = False
        End If
        Else
        If Range("F163:F174").EntireRow.Hidden = False Then
            Range("F163:F174").EntireRow.Hidden = True
        End If
    End If
With Sheets("Fiche de renseignements")
    Set Plage = .Range("B209:B" & .Range("B231").Row)
        For Each CellConc In Plage
        TempConcatenation = CellConc & CellConc.Offset(0, 3)
        If TempConcatenation = "" Then
            If .Rows(CellConc.Row).Hidden = False Then
                .Rows(CellConc.Row).Hidden = True
            End If
            ElseIf .Rows(CellConc.Row).Hidden = True Then
                .Rows(CellConc.Row).Hidden = False
        End If
        Next
End With
With Sheets("Fiche de renseignements")
    Set Plage2 = .Range("B236:B" & .Range("B258").Row)
        For Each CellConc2 In Plage2
        TempConcatenation2 = CellConc2 & CellConc2.Offset(0, 3)
        If TempConcatenation2 = "" Then
            If .Rows(CellConc2.Row).Hidden = False Then
                .Rows(CellConc2.Row).Hidden = True
            End If
            ElseIf .Rows(CellConc2.Row).Hidden = True Then
                .Rows(CellConc2.Row).Hidden = False
        End If
        Next
End With

En l'attente de vos commentaires,
Youri
 

Youri

XLDnaute Occasionnel
Re : Code très simple ne fonctionne pas

Deuxième partie du code :
Code:
With Sheets("Fiche de renseignements")
    Set Plage3 = .Range("B263:B" & .Range("B285").Row)
        For Each CellConc3 In Plage3
        TempConcatenation3 = CellConc3 & CellConc3.Offset(0, 3)
        If TempConcatenation3 = "" Then
            If .Rows(CellConc3.Row).Hidden = False Then
                .Rows(CellConc3.Row).Hidden = True
            End If
            ElseIf .Rows(CellConc3.Row).Hidden = True Then
                .Rows(CellConc3.Row).Hidden = False
        End If
        Next
End With
If Worksheets("Fiche de renseignements").Range("F207") <> 0 And Worksheets("Fiche de renseignements").Range("F207") <> "" Then
       If Range("F233:F259").EntireRow.Hidden = True Then
            Range("F233:F259").EntireRow.Hidden = False
        End If
        ElseIf Range("F233:F259").EntireRow.Hidden = False Then
            Range("F233:F259").EntireRow.Hidden = True
        End If
If Worksheets("Fiche de renseignements").Range("F234") <> 0 And Worksheets("Fiche de renseignements").Range("F234") <> "" Then
       If Range("F260:F286").EntireRow.Hidden = True Then
            Range("F260:F286").EntireRow.Hidden = False
        End If
        ElseIf Range("F260:F286").EntireRow.Hidden = False Then
            Range("F260:F286").EntireRow.Hidden = True
        End If
If Worksheets("Fiche de renseignements").Range("F261") <> 0 And Worksheets("Fiche de renseignements").Range("F234") <> "" Then
       If Range("F287:F313").EntireRow.Hidden = True Then
            Range("F287:F313").EntireRow.Hidden = False
        End If
        ElseIf Range("F287:F313").EntireRow.Hidden = False Then
            Range("F287:F313").EntireRow.Hidden = True
        End If
If Worksheets("Fiche de renseignements").Range("F288") <> 0 And Worksheets("Fiche de renseignements").Range("F234") <> "" Then
       If Range("F314:F340").EntireRow.Hidden = True Then
            Range("F314:F340").EntireRow.Hidden = False
        End If
        ElseIf Range("F314:F340").EntireRow.Hidden = False Then
            Range("F314:F340").EntireRow.Hidden = True
        End If
End Sub
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Code très simple ne fonctionne pas

Bonjour le forum,

J'ai un peu la flemme de regarder tout ton code mais je vois que tu as déclaré pas mal de variables Byte. Cela limite de 0 à 255. Si dans ton code tu veux lui attribuer une valeur supérieure ça bugue... C'est peut être ça la clé de ton problème...