XL 2019 VBA - Afficher/Masquer des jours de la semaine

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

S

sami1814

Guest
Bonjour à toutes et tous,

Je suis ultra novice en VBA et j'ai besoin d'aide.

Je suis en train de créer un planning des jours et des semaines en fonction du 1er jour d'un mois (en A1).

Maintenant, ce que je veux faire c'est Afficher ou Masquer une colonne en fonction des valeurs de D4:AH4 ("" ou 1)

Dans la cellule D4, j'ai créé cette formule pour y afficher "" ou 1 :
=SI(OU(D3="Samedi";D3="Dimanche");"";1)

Le code ci-dessous fonctionne uniquement si les cellules D4:AH4 contiennent des valeurs 1 ou rien (pas ""). Etant donné que la formule renvoie "", le code bug vu que "" <> rien.

VB:
Sub Afficher()

Dim cel As Range
For Each cel In Range("D4:AH4").SpecialCells(xlCellTypeBlanks)
cel.EntireColumn.Hidden = False
Next

End Sub

Sub Masquer()

Dim cel As Range
For Each cel In Range("D4:AH4").SpecialCells(xlCellTypeBlanks)
cel.EntireColumn.Hidden = True
Next

End Sub

Auriez-vous une solution pour remplacer .SpecialCells(xlCellTypeBlanks) par un autre paramètre ?

Merci d'avance 😁
 

Pièces jointes

Solution
Bonjour Sami,
Une possibilité :
VB:
Sub Afficher()
Dim cel As Range
    For Each cel In Range("D4:AH4")
        If cel <> 1 Then cel.EntireColumn.Hidden = False
    Next
End Sub
Sub Masquer()
    Dim cel As Range
    For Each cel In Range("D4:AH4")
        If cel <> 1 Then cel.EntireColumn.Hidden = True
    Next
End Sub
Une autre en supprimant la ligne 4 inutile :
Code:
Sub Afficher2()
    Application.ScreenUpdating = False
    Range("D:AH").EntireColumn.Hidden = False
End Sub
Sub Masquer2()
    Application.ScreenUpdating = False
    Dim cel As Range
    For Each cel In Range("D3:AH3")
        If cel = "Samedi" Or cel = "Dimanche" Then cel.EntireColumn.Hidden = True
    Next
End Sub
Re
Non effectivement y'avait un problème de cellule !
j'ai testé dans un fichier Vierge
en B1 j'ai mis 01/01/2021
la formule aurait du être
VB:
=NOMPROPRE(SI($B$1="";"";TEXTE(JOURSEM(B1;1);"jjjj")))
au lieu de
VB:
=NOMPROPRE(SI($B$1="";"";TEXTE(JOURSEM(D6;1);"jjjj")))
est la cellule D6 était vide donc mauvais retour (date du jour je pense) !
désolé Lol
j'ai bien une version française Lol
Bonne fin de journée
jean marie
 
Dernière édition:
Bonjour à tous



La formule n'est pas bonne. Il faut utiliser :
=NOMPROPRE(SI($B$1="";"";TEXTE(D6;"jjjj")))

Si tu utilises en $D$3 =TEXTE(JOUR(D6);"jjjj") tu demande à avoir le format texte de la date 1 puis de la date 2.
Tes jours ne changeant jamais (toujours 1 puis 2 etc.) ton texte ne changera jamais. Il faut utiliser la date entière.

Cordialement
Rebonjour à tous !

Efgé, merci pour la correction simple ! Cela marche bien mieux maintenant, il y a plus l'erreur de jour x)
 
@Efgé texte(cellule;"jjjj") fonctionne aussi
maintenant faut voir si ca suit le mode et langage dans le quel office et W sont installé
tandis que joursem c'est toi qui le paramètre avec le 2d argument 😉
en tout cas vous serez tous d'accords avec moi qu'avant de faire des hidden sur des colonnes il fallait mettre ce tableau en ordre 😉
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
2
Affichages
311
Réponses
3
Affichages
465
  • Question Question
Microsoft 365 Probléme VBA
Réponses
8
Affichages
385
Retour