Erreur Macro ligne çi-dessous

Bonjour le forum et bonnes fêtes de Noël
La ligne ci-dessous coince 
Merci pour vos éventuelles réponses

Cel.Offset(, -2).Resize(, 2).Font.Strikethrough = True

Totalité macro ci-dessous
Private Sub Workbook_SheetBeforeDoubleClick(ByVal Sh As Object, ByVal Target As Range, Cancel As Boolean)
Dim Indice As Integer
Dim Tb, TbCoul, X, TbFont, Label As String, Cel As Range
Dim Ligne As Integer

  If Not Intersect(Target, Range("C4:C" & Range("A" & Rows.Count).End(xlUp).Row + 1)) Is Nothing Then
    Application.ScreenUpdating = False
    Ligne = Range("A" & Rows.Count).End(xlUp).Row
    If (Target.Row = Ligne And Range("A" & Ligne) <> "") Or (Target.Row = Ligne + 1 And Range("A" & Ligne + 1) = "") Then
      Application.EnableEvents = False
      TbFont = Array(5, 1)               'Ces 3 Lignes en commentaire pour ne pas afficher Non
      TbCoul = Array(35, 40)
      Tb = Array("", "Oui")
      Cancel = True

      X = UCase(Trim(Target))
      If UBound(Filter(Tb, X, compare:=vbTextCompare)) >= 0 Then
        Indice = Application.Match(X, Tb, 0) Mod (1 + UBound(Tb))
        Label = Tb(Indice)
        Set Cel = Target

        If Label = "Oui" Then
          If Target.Row = 13 Then                       ' On clicque sur la dernière ligne 12 ou 13
            Range("A3:D12").ClearContents
            Range("C3:C12").Interior.ColorIndex = 35
            Set Cel = Range("C3")
          End If
          Cel.Offset(, -2).Resize(, 2).Font.Strikethrough = True
          Cel.Offset(, 1).Value = Date
          Cel.Offset(, -2) = Application.Proper(Format(Date, "dddd dd mmmm yyyy"))
          Cel.Offset(, -1).Value = Sh.Name
        Else
          Cel.Offset(0, -2).Resize(1, 2).Font.Strikethrough = False
          Cel.Offset(, -2).Resize(, 4).ClearContents
          Cel.Offset(, 1).Interior.ColorIndex = 36
          Cel.Offset(, 2).Interior.ColorIndex = 8
          Cel.Offset(, -2).Interior.ColorIndex = 36
          Cel.Offset(, -1).Interior.ColorIndex = 35
        End If
      End If
      With Cel
        .Value = Label
        .Interior.ColorIndex = TbCoul(Indice)
        .Font.ColorIndex = TbFont(Indice)
      End With

      Application.EnableEvents = True
    End If
  ElseIf Target.Address = "$F$1" Then
    Cancel = True
    UsfChoix.Show 0
  End If
  Range("A1").Select
End Sub

bonjour,

Tu ne peux pas redimensionner une plage à zéro ligne (ni zéro colonne)

Ecrire :

Cel.Offset(, -2).Resize(1, 2).Font.Strikethrough = True

A+

Salut,

les incompréhensions de VBA...

     Application.EnableEvents = False

    Range("A8").Offset(, 2).Select          ' // Ca c'est glop
    Range("A8").Offset(0, 3).Select         ' // Ca c'est glop
    Range("A8").Resize(, 3).Select          ' // Ca c'est glop

    Range("A8").Resize(0, 3).Select         ' //Ca par contre c'est pas glop

    Application.EnableEvents = True

Bonjour galopin01

Ok merci à toi

Bonnes fêtes

Cordialement

Bon sérieusement,

       If Label = "Oui" Then
          If Target.Row = 13 Then                       ' On clicque sur la dernière ligne 12 ou 13
            Range("A3:D12").ClearContents
            Range("C3:C12").Interior.ColorIndex = 35
            Set Cel = Range("C3")
          End If
          Cel.Offset(, -2).Resize(, 2).Font.Strikethrough = True
          Cel.Offset(, 1).Value = Date
          Cel.Offset(, -2) = Application.Proper(Format(Date, "dddd dd mmmm yyyy"))
          Cel.Offset(, -1).Value = Sh.Name
        Else
          Cel.Offset(0, -2).Resize(1, 2).Font.Strikethrough = False
          Cel.Offset(, -2).Resize(, 4).ClearContents
          Cel.Offset(, 1).Interior.ColorIndex = 36
          Cel.Offset(, 2).Interior.ColorIndex = 8
          Cel.Offset(, -2).Interior.ColorIndex = 36
          Cel.Offset(, -1).Interior.ColorIndex = 35
        End If

je vois que tu définit plusieurs fois Cel mets un point d'arrêt sur la ligne et vérifie la variable Cel, tu est peut-être en dehors des limites de ta feuille.

Bonjour JP,

Je me suis bien laissé piéger j'étais resté sur le

Set Cel = Range("C3")

Mais en fait c'est vraisemblablement quand on sort des limites de la feuille que ça plante...

Il reste que cette écriture est piégeuse :

Autant un offset zéro (ou rien) est compréhensible autant un Resize ( ,2) force VBA à une auto conversion. Dans la réalité il considère cette absence d'info comme une absence de modification (et non comme un zéro)

Ainsi il accepte :

Range("A8:A12").Resize(, 3).Select 'on ne resize que les colonnes...

Dans la pratique je considère ce type de prog comme de la "programmation floue" : On ne sait jamais de quoi on parle.

Dans la mesure du possible je m'efforce de ne jamais employer Resize et Offset.

A+

Bonjour le forum

C'était tout simplement que le fichier était protégé.

Quel C$N!!!

Merci à vous

Bon dimanche

Rechercher des sujets similaires à "erreur macro ligne dessous"