OVH Cloud OVH Cloud

onglets avec dates

7 réponses
Avatar
massonlafayette
bonsoir,
j'ai créé 1 classeur de contrôle de caisses avec pour chaque date trois
feuilles: "caisse 02.01.04", "coffre 02.01.04", " journal 02.01.04" ceci pour
chaque jour de la semaine sauf le dimanche . j'ai créé un modèle mais chaque
mois, je suis obligé de renommer les onglets en fonction des dates du mois et
78 onglets, c'est fastidieux!
alors si qqu'un peut m'aider...
merci.

7 réponses

Avatar
Philippe.R
Bonsoir Lionel,
Ayant pris soin de nommer dans le modèle tes onglets : "caisse 02.", "coffre 02.", " journal 02."

Dans le module thisworkbook :

Private Sub Workbook_Open()
Dim cplt As String
cplt = IIf(Len(Month(Date)) = 1, "0" & _
Month(Date), Month(Date)) & "." & Right(Year(Date), 2)
'MsgBox cplt
If ThisWorkbook.Name = "monmodele.1" Then
For Each sht In Sheets
sht.Name = sht.Name & cplt
Next sht
End If
End Sub

--
Amicales Salutations

Retirer A_S_ pour répondre.
XL97 / XL2002

"Lionel Masson" a écrit dans le message de
news:
bonsoir,
j'ai créé 1 classeur de contrôle de caisses avec pour chaque date trois
feuilles: "caisse 02.01.04", "coffre 02.01.04", " journal 02.01.04" ceci pour
chaque jour de la semaine sauf le dimanche . j'ai créé un modèle mais chaque
mois, je suis obligé de renommer les onglets en fonction des dates du mois et
78 onglets, c'est fastidieux!
alors si qqu'un peut m'aider...
merci.


Avatar
Merci beaucoup, Philippe, pour la réponse.
En fait, mes onglets sont du style: " caisse J1", "coffre
J1", "journal J1" etc jusqu'à "journal J27".
je suis navré d'ajouter encore une complication...
merci!
Avatar
Philippe.R
Bonjour,
Je ne comprends pas très bien ce que représentent J1 .... J27 et donc comment constituer une chaîne
comme :
journal 02.01.04 à partir de journal Jxx
--
Amicales Salutations

Retirer A_S_ pour répondre.
XL97 / XL2002
Pour suivre le forum :
news://msnews.microsoft.com/microsoft.public.fr.excel
(Voulez-vous vous abonner ? -> Oui)

a écrit dans le message de
news:051c01c3d4b0$1ee5b8d0$

Merci beaucoup, Philippe, pour la réponse.
En fait, mes onglets sont du style: " caisse J1", "coffre
J1", "journal J1" etc jusqu'à "journal J27".
je suis navré d'ajouter encore une complication...
merci!
Avatar
-----Message d'origine-----
Bonjour,
Je ne comprends pas très bien ce que représentent
J1 .... J27 et donc comment constituer une chaîne

comme :
journal 02.01.04 à partir de journal Jxx
--
Amicales Salutations



Bonjour,
en fait J1 représente le premier jour ouvrable du mois et
ça va jusqu'à J27 en fonction du nb de jours ouvrables,
sachant que seul le dimanche n'est pas 1 jour ouvrable
dans mon cas. J'ai du utiliser J1...J27 dans les onglets
de mon modèle car chaque feuille a des liaisons avec les
précédentes.
j'espère avoir été plus clair?
merci de l'intêret porté à cette question.
bonne journée

Avatar
Philippe.R
Bonsoir Lionel,
C'est nettement plus clair, mais je crains que cela ne devienne un peu trop compliqué pour moi eu égard
au temps que je peux y consacrer.
Je passe la main avec regrets.
--
Amicales Salutations

Retirer A_S_ pour répondre.
XL97 / XL2002
Pour suivre le forum :
news://msnews.microsoft.com/microsoft.public.fr.excel
(Voulez-vous vous abonner ? -> Oui)

a écrit dans le message de
news:078d01c3d4fa$4db3fe20$

-----Message d'origine-----
Bonjour,
Je ne comprends pas très bien ce que représentent
J1 .... J27 et donc comment constituer une chaîne

comme :
journal 02.01.04 à partir de journal Jxx
--
Amicales Salutations



Bonjour,
en fait J1 représente le premier jour ouvrable du mois et
ça va jusqu'à J27 en fonction du nb de jours ouvrables,
sachant que seul le dimanche n'est pas 1 jour ouvrable
dans mon cas. J'ai du utiliser J1...J27 dans les onglets
de mon modèle car chaque feuille a des liaisons avec les
précédentes.
j'espère avoir été plus clair?
merci de l'intêret porté à cette question.
bonne journée

Avatar
Frédéric Sigonneau
Bonsoir,

Tu pourrais sans doute utiliser le code ci-dessous, ou l'adapter à ton besoin.
La procédure CreerMonClasseur utilise la fonction TypeJour de Laurent Longre,
légèrement modifiée pour ne retenir comme dates valides dans un mois que les
jours qui ne sont ni des dimanches ni des fériés (français). Par défaut, c'est
le mois de la date courante qui sert de base à la création d'un nouveau
classeur. Après recopie du code dans un module standard (de ton perso.xls par
exemple) tu peux affecter la procédure à un bouton de barre d'outils pour
l'exécuter quand tu en as besoin. (Je n'ai pas traité la question des liaisons
que tu évoques, par manque de précisions sur ce point). Cette approche ne
nécessite pas que la création de nouveaux classeurs soit basée sur un modèle.
Elle peut constituer pour toi un point de départ. Reviens si besoin.

'======================== Sub CreerMonClasseur()
Dim NbFeuilles&, Arr, dt As Date
Dim i As Byte, j As Byte
Dim NbJoursMoisCourant As Byte

NbFeuilles = Application.SheetsInNewWorkbook
Application.SheetsInNewWorkbook = 1
Arr = Array("caisse ", "coffre ", "journal ")
NbJoursMoisCourant = Day(DateSerial(Year(Date), Month(Date) + 1, 0))
Workbooks.Add

For i = 1 To NbJoursMoisCourant
dt = DateSerial(Year(Date), Month(Date), i)
If TYPEJOUR(dt) = 0 Then
For j = 0 To 2
Sheets.Add(after:=Sheets(Sheets.Count)).Name = Arr(j) & Format(dt,
"dd.mm.yy")
Next j
End If
Next i

Application.DisplayAlerts = False
Sheets(1).Delete
Application.DisplayAlerts = True
Application.SheetsInNewWorkbook = NbFeuilles
Sheets(1).Select

End Sub


'Cette fonction renvoie 0 si le jour passé en paramètre est un jour de semaine,
'1 s'il s'agit d'un samedi ou d'un dimanche et 2 s'il s'agit d'un jour férié.
'Valide jusqu'en 2099 et pour les jours fériés français
Function TYPEJOUR(D As Date)
'L. Longre
Dim A As Integer, T As Integer
Dim LP As Date, LD As Long
Dim Toto As Long

A = Year(D)
If A > 2099 Then
TYPEJOUR = CVErr(xlErrValue)
Exit Function
End If
LD = Int(D)
If LD <= 2 Then
If LD = 1 Then TYPEJOUR = 2
Exit Function
End If
T = (((255 - 11 * (A Mod 19)) - 21) Mod 30) + 21
LP = DateSerial(A, 3, 2) + T + (T > 48) _
+ 6 - ((A + A 4 + T + (T > 48) + 1) Mod 7)
Select Case D
' Jours fériés mobiles
Case Is = LP, Is = LP + 38, Is = LP + 49
TYPEJOUR = 2
' Jours fériés fixes
Case Is = DateSerial(A, 1, 1), Is = DateSerial(A, 5, 1), _
Is = DateSerial(A, 5, 8), Is = DateSerial(A, 7, 14), _
Is = DateSerial(A, 8, 15), Is = DateSerial(A, 11, 1), _
Is = DateSerial(A, 11, 11), Is = DateSerial(A, 12, 25)
TYPEJOUR = 2
Case Else
' Dimanche
If Weekday(D, vbMonday) > 6 Then TYPEJOUR = 1
End Select

End Function
'========================
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


-----Message d'origine-----
Bonjour,
Je ne comprends pas très bien ce que représentent
J1 .... J27 et donc comment constituer une chaîne

comme :
journal 02.01.04 à partir de journal Jxx
--
Amicales Salutations



Bonjour,
en fait J1 représente le premier jour ouvrable du mois et
ça va jusqu'à J27 en fonction du nb de jours ouvrables,
sachant que seul le dimanche n'est pas 1 jour ouvrable
dans mon cas. J'ai du utiliser J1...J27 dans les onglets
de mon modèle car chaque feuille a des liaisons avec les
précédentes.
j'espère avoir été plus clair?
merci de l'intêret porté à cette question.
bonne journée



Avatar
Philippe.R
Merci Frédéric d'avoir pris le relais.
--
Amicales Salutations

Retirer A_S_ pour répondre.

"Frédéric Sigonneau" a écrit dans le message de
news:
Bonsoir,

Tu pourrais sans doute utiliser le code ci-dessous, ou l'adapter à ton besoin.
La procédure CreerMonClasseur utilise la fonction TypeJour de Laurent Longre,
légèrement modifiée pour ne retenir comme dates valides dans un mois que les
jours qui ne sont ni des dimanches ni des fériés (français). Par défaut, c'est
le mois de la date courante qui sert de base à la création d'un nouveau
classeur. Après recopie du code dans un module standard (de ton perso.xls par
exemple) tu peux affecter la procédure à un bouton de barre d'outils pour
l'exécuter quand tu en as besoin. (Je n'ai pas traité la question des liaisons
que tu évoques, par manque de précisions sur ce point). Cette approche ne
nécessite pas que la création de nouveaux classeurs soit basée sur un modèle.
Elle peut constituer pour toi un point de départ. Reviens si besoin.

'======================== > Sub CreerMonClasseur()
Dim NbFeuilles&, Arr, dt As Date
Dim i As Byte, j As Byte
Dim NbJoursMoisCourant As Byte

NbFeuilles = Application.SheetsInNewWorkbook
Application.SheetsInNewWorkbook = 1
Arr = Array("caisse ", "coffre ", "journal ")
NbJoursMoisCourant = Day(DateSerial(Year(Date), Month(Date) + 1, 0))
Workbooks.Add

For i = 1 To NbJoursMoisCourant
dt = DateSerial(Year(Date), Month(Date), i)
If TYPEJOUR(dt) = 0 Then
For j = 0 To 2
Sheets.Add(after:=Sheets(Sheets.Count)).Name = Arr(j) & Format(dt,
"dd.mm.yy")
Next j
End If
Next i

Application.DisplayAlerts = False
Sheets(1).Delete
Application.DisplayAlerts = True
Application.SheetsInNewWorkbook = NbFeuilles
Sheets(1).Select

End Sub


'Cette fonction renvoie 0 si le jour passé en paramètre est un jour de semaine,
'1 s'il s'agit d'un samedi ou d'un dimanche et 2 s'il s'agit d'un jour férié.
'Valide jusqu'en 2099 et pour les jours fériés français
Function TYPEJOUR(D As Date)
'L. Longre
Dim A As Integer, T As Integer
Dim LP As Date, LD As Long
Dim Toto As Long

A = Year(D)
If A > 2099 Then
TYPEJOUR = CVErr(xlErrValue)
Exit Function
End If
LD = Int(D)
If LD <= 2 Then
If LD = 1 Then TYPEJOUR = 2
Exit Function
End If
T = (((255 - 11 * (A Mod 19)) - 21) Mod 30) + 21
LP = DateSerial(A, 3, 2) + T + (T > 48) _
+ 6 - ((A + A 4 + T + (T > 48) + 1) Mod 7)
Select Case D
' Jours fériés mobiles
Case Is = LP, Is = LP + 38, Is = LP + 49
TYPEJOUR = 2
' Jours fériés fixes
Case Is = DateSerial(A, 1, 1), Is = DateSerial(A, 5, 1), _
Is = DateSerial(A, 5, 8), Is = DateSerial(A, 7, 14), _
Is = DateSerial(A, 8, 15), Is = DateSerial(A, 11, 1), _
Is = DateSerial(A, 11, 11), Is = DateSerial(A, 12, 25)
TYPEJOUR = 2
Case Else
' Dimanche
If Weekday(D, vbMonday) > 6 Then TYPEJOUR = 1
End Select

End Function
'======================== >
FS
--
Frédéric Sigonneau [MVP Excel - né un sans-culottide]
Gestions de temps, VBA pour Excel :
http://perso.wanadoo.fr/frederic.sigonneau
Si votre question sur Excel est urgente, évitez ma bal !


-----Message d'origine-----
Bonjour,
Je ne comprends pas très bien ce que représentent
J1 .... J27 et donc comment constituer une chaîne

comme :
journal 02.01.04 à partir de journal Jxx
--
Amicales Salutations



Bonjour,
en fait J1 représente le premier jour ouvrable du mois et
ça va jusqu'à J27 en fonction du nb de jours ouvrables,
sachant que seul le dimanche n'est pas 1 jour ouvrable
dans mon cas. J'ai du utiliser J1...J27 dans les onglets
de mon modèle car chaque feuille a des liaisons avec les
précédentes.
j'espère avoir été plus clair?
merci de l'intêret porté à cette question.
bonne journée