XL 2019 Calendrier automatique

Bokilo54

XLDnaute Nouveau
Hello à tous

J'ai créé un calendrier automatique et comme tous les mois n'ont pas le même jour, il faut une macro qui masque les colonnes pour les jours au-delà du mois sélectionné.
J'ai essayé une macro qui m'a foutu presque toute ma feuille en l'air et je me demandais s'il n'existe pas une formule magique qui pourrait remplacer cette macro.
Merci d'avance
Luc ....
 

Pièces jointes

  • Essais dates.1.xlsm
    20.9 KB · Affichages: 18

TooFatBoy

XLDnaute Barbatruc
Bonjour,

Peut-être comme ceci :
VB:
    For Num_Col = 30 To 32 ' Boucle sur les cellules des jours 29, 30 et 31
        If Month(Cells(6, Num_Col)) = Month(Cells(6, 29)) Then
            Columns(Num_Col).Hidden = False
        Else
            Columns(Num_Col).Hidden = True
        End If
    Next Num_Col
 

Bokilo54

XLDnaute Nouveau
Merci pour la suggestion, mais j'ai de nouveau eu un bug
Ca fonctionne maintenant de cette manière
Un grand merci encore
Luc
Sub Masquer_Jour()
Dim Num_Col As Long
Range("B7:AF13").ClearContents
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
End Sub
 

Staple1600

XLDnaute Barbatruc
Bonsoir le fil

Un petit calendrier tout simple
(ça peut toujours servir)
VB:
Public pg As Range
Sub Calendrier_C()
Dim x&, i&
ANNEE = InputBox("Choisir l'année du calendrier?", "Calendrier", Year(Date))
Application.ScreenUpdating = 0
Set pg = [A11:L41]: [A10].Font.Bold = -1: [A10].NumberFormat = "mmmm"
[A10:A11] = CDate("1/1/" & ANNEE): [A10:L11].DataSeries 1, 3, 3, 1
For i = 1 To 12
x = Day(DateSerial(Year(Cells(11, i)), Month(Cells(11, i)) + 1, 0))
Cells(11, i).Resize(x).DataSeries 2, 3, 1, 1: Cells(11, i).Resize(x).Borders.Weight = 2
Next
pg.FormatConditions.Add 2, Formula1:="=JOURSEM(A11;2)>5": pg.FormatConditions(1).Font.Color = vbRed
End Sub
(issu d'une réponse que j'ai postée dans un fil de décembre 2019)
 

jmfmarques

XLDnaute Accro
Bonjour Bokilo54

Je n'ai pas ouvert ton classeur (je ne le fais jamais)
Mais à lire les bouts de code montrés, j'en déduis que tu veux cacher les colonnes dont le n° est < 34 et > 2 (ta colonne B) + nombre de jours du mois.
Or, tu peux facilement le déterminer, ce nombre. En tenant compte de tout, y compris des années bissextiles.
Regarde ceci, qui devrait déclencher un déclic :
VB:
ANNEE = 2019
MOIS = 2
nbjoursDUMOIS = Day(DateSerial(ANNEE, MOIS + 1, 0))
MsgBox " il nous faut alors masquer les colonnes " & 2 + nbjoursDUMOIS & " à " & 2 + 31
C'est ma manière d'aider
 
Dernière édition:

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
311 725
Messages
2 081 941
Membres
101 846
dernier inscrit
Silhabib