Erreur de syntaxe ou de compilation

Fermé
martine - Modifié le 27 août 2020 à 14:53
 martine - 28 août 2020 à 19:27
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

Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
28 août 2020 à 07:17
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
Yoyo01000 Messages postés 1639 Date d'inscription samedi 2 février 2019 Statut Membre Dernière intervention 7 mars 2022 165
28 août 2020 à 07:49
Salutations Frenchie ,

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

C'est allégé, en effet :)
0
Yoyo01000 Messages postés 1639 Date d'inscription samedi 2 février 2019 Statut Membre Dernière intervention 7 mars 2022 165
27 août 2020 à 14:53
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
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
Yoyo01000 Messages postés 1639 Date d'inscription samedi 2 février 2019 Statut Membre Dernière intervention 7 mars 2022 165
28 août 2020 à 07:48
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
Merci
0