Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

sami1814

XLDnaute Nouveau
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

  • Planning.xlsm
    20.2 KB · Affichages: 28
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

ChTi160

XLDnaute Barbatruc
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:

sami1814

XLDnaute Nouveau
Rebonjour à tous !

Efgé, merci pour la correction simple ! Cela marche bien mieux maintenant, il y a plus l'erreur de jour x)
 

patricktoulon

XLDnaute Barbatruc
@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
 

Bernard_XLD

XLDnaute Barbatruc
Membre du Staff
Bonsoir le fil, le forum

J'ai ajouté les jours fériés auto en fonction personnalisée, sur la base du fichier de Sylvanu avec la correction de Efgé pour la formule..

Bien cordialement, @+
 

Pièces jointes

  • Planning - Copie.xlsm
    28 KB · Affichages: 5

Discussions similaires

Réponses
12
Affichages
252
Réponses
2
Affichages
154
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…