Erreur de syntaxe ou de compilation

Bonjour, Ci dessous la macro que j'ai voulu reproduire . Mais cela me met "erreur de syntaxe" ou de "compilation". Est ce que quelqu'un pourrait ou se trouve l'erreur. Merci

Sub Masquer_Jour()
Dim Num_col As Long
For Num_col = 30 To 32
If Month(Cells(6, Num_Col))>=cells(1,1) then Columns(Num_col).Hidden = true
Columx(Num_col).Hidden = True
Else
Columns(Num_col).Hidden = False
End If
Next
Range("D6:AH18").ClearContents
End Sub

4 réponses

  1. Bonjour,

    à tester :

    Sub Masquer_Jour()
    Dim Num_col As Long
    For Num_col = 30 To 32
    If Month(Cells(6, Num_Col))>=cells(1,1) then Columns(Num_col).Hidden = true
    Columns(Num_col).Hidden = True
    Else
    Columns(Num_col).Hidden = False
    End If
    Next
    Range("D6:AH18").ClearContents
    End Sub
    0
    1. Merci pour la formule mais il reste encore un problème. Un message "elfe sans if" apparait et je n'arrive pas à trouver l'erreur. Merci pour votre aide
      0
      1. ah ah, je n'avais pas remarqué le code après Then !

        Sub Masquer_Jour()
        Dim Num_col As Long
        For Num_col = 30 To 32
        If Month(Cells(6, Num_col)) >= Cells(1, 1) Then
        Columns(Num_col).Hidden = True
        Else
        Columns(Num_col).Hidden = False
        End If
        Next
        Range("D6:AH18").ClearContents
        End Sub    
        0
    2. Bonjour,

      "Un message "elfe sans if" apparait et je n'arrive pas à trouver l'erreur"
      c'est normal, dans la ligne suivante:
      If Month(Cells(6, Num_Col))>=cells(1,1) then Columns(Num_col).Hidden = true , si après "Then" vous appliquez la condition au lieu de l'écrire sur la ligne suivante, dans ce cas il n'y a pas besoin de "End if".
      De plus, pourquoi répéter "Columns(Num_col).Hidden = True "

      Voici en plus court:
      Sub Masquer_Jour()
          Dim Num_col As Long
          For Num_col = 30 To 32
              If Month(Cells(6, Num_col)) >= Cells(1, 1) Then Columns(Num_col).Hidden = True Else: Columns(Num_col).Hidden = False
          Next
          Range("D6:AH18").ClearContents
      End Sub


      Cdlt
      1
      1. Salutations Frenchie ,

        je n'avais pas remarqué ta réponse avant de venir de lui répondre !

        C'est allégé, en effet :)
        0