XL 2013 Mettre la date comme nom d'onglet

jeanjuju

XLDnaute Nouveau
Bonjour à tous,

Je suis tout nouveau sur le forum et j'espère ne pas vous froisser tellement j'ai à apprendre.
Je demande votre aide pour savoir comment faire, à partir d'une cellule ou se trouve la date, que cette date devienne le nom de l'onglet.
Ensuite sur le mois comment faire pour ne pas avoir à recopier sur 31 feuilles ma petite formule : 'Feuil1'!D3+1 et pour passer du vendredi au lundi : 'Feuil5'!D3+3, afin d'avoir les dates qui se suivent des 5 jours ouvrables lundi au vendredi.

J'ai toutefois glissé un fichier...
Attention je ne maîtrise pas VBa, les macros sont encore très floues pour moi et je reprends un fichier qui sert déjà pour travailler.

D'avance pardon pour la pauvreté de mes arguments et merci de votre aide.
 

Pièces jointes

  • Essais Excel forum.xlsm
    12.2 KB · Affichages: 35

vgendron

XLDnaute Barbatruc
Re : Mettre la date comme nom d'onglet

Hello Jean Ju, et bienvenu

avec ce code dans le thisworkbook
Code:
Private Sub Workbook_SheetActivate(ByVal Sh As Object)
If ActiveSheet.Range("D3") <> "" Then
    ActiveSheet.Name = Application.WorksheetFunction.Substitute(Range("D3"), "/", "-")
End If
End Sub

alt +F11 pour ouvrir l'éditeur VBA
à gauche, tu cliques sur "thisworkbood" et à droite .. tu colles le code

ici. à chaque fois que tu sélectionnes une feuille, le code ira voir dans la cellule D3 s'il y a quelque chose
et renomme la feuille du nom de la date..
attention.. dans le nom d'une feuille. les caractères "/" ne sont pas autorisés.. d'ou la fonction substitute pour les remplacer les "/" par des "-"

l'ennui. c'est que le code est activé à chaque fois que tu sélectionnes une feuille.. meme si tu la sélectionnes 10 fois donc. renommer une feuille du meme nom qu'elle a déjà. pas trop utile

pour la partie
Ensuite sur le mois comment faire pour ne pas avoir à recopier sur 31 feuilles ma petite formule :
me fait dire que c'est pas tout à fait ce que tu souhaites..
ne voudrais tu pas qu'une macro crée automatiquement autant de feuilles qu'il ya de jour par mois?
 

JCGL

XLDnaute Barbatruc
Re : Mettre la date comme nom d'onglet

Bonjour à tous,
Salut mon Hervé,

A associer à un bouton

VB:
Option Explicit


Sub CreerOnglets()
    Dim NumMois As Long, LaDate As Date, lOnglet As Worksheet, NumAn As Long
    'récupérer le numéro du mois dont il faut créer les onglets
    NumMois = Application.InputBox("Numéro du mois (1 - 12) :", , , , , , , 1)
    NumAn = Application.InputBox("Année :", , , , , , , 1)
    If NumMois < 1 Or NumMois > 12 Then Exit Sub
    LaDate = DateSerial(NumAn, NumMois, 1)
    On Error Resume Next
    With ThisWorkbook
        'boucler sur tous les jours du mois
        While Month(LaDate) = NumMois
            'si c'est un jour ouvré
            If Weekday(LaDate, vbMonday) <> 6 And Weekday(LaDate, vbMonday) <> 7 And Not Ferie(LaDate) Then
                'créer l'onglet en dernière position et le renommer
                Set lOnglet = .Sheets.Add(after:=.Sheets(.Sheets.Count))
                lOnglet.Name = Format(LaDate, "ddmmyy")
            End If
            LaDate = LaDate + 1
        Wend
    End With
    On Error GoTo 0
    Feuil1.Activate
End Sub




Private Function Ferie(Jour As Date) As Boolean
'   FERIE : Détermine si un jour est férié ou non
'
'   Ce programme ne traite que des dates fériées ayant cours en FRANCE.
'   On y trouve les fêtes légales françaises et les fêtes catholiques
'
'   Extrait de Science et vie MICRO N°189 de Janvier 2001
'   Algorithme fourni par Xavier MILAN
'
'   Cet algorithme a été validé sur quelques dates calculées par une autre
'   algorithme codé sous Excel dans le passé
    Dim JJ As Long, MM As Long, AA As Long
    Dim NbOr As Long, Epacte As Long
    Dim Plune As Date, Paques As Date, Ascension As Date, Pentecote As Date


    JJ = DatePart("d", Jour)
    MM = DatePart("m", Jour)
    AA = DatePart("yyyy", Jour)


    If JJ = 1 And MM = 1 Then Ferie = True: Exit Function       ' 1 Janvier
    If JJ = 1 And MM = 5 Then Ferie = True: Exit Function       ' 1 Mai
    If JJ = 8 And MM = 5 Then Ferie = True: Exit Function       ' 8 Mai
    If JJ = 14 And MM = 7 Then Ferie = True: Exit Function      ' 14 Juillet
    If JJ = 15 And MM = 8 Then Ferie = True: Exit Function      ' 15 Aout
    If JJ = 1 And MM = 11 Then Ferie = True: Exit Function      ' 1 Novembre
    If JJ = 11 And MM = 11 Then Ferie = True: Exit Function     ' 11 Novembre
    If JJ = 25 And MM = 12 Then Ferie = True: Exit Function     ' Noel


    NbOr = (AA Mod 19) + 1
    Epacte = (11 * NbOr - (3 + Int((2 + Int(AA / 100)) * 3 / 7))) Mod 30
    Plune = DateSerial(AA, 4, 19)
    Plune = DateAdd("y", -((Epacte + 6) Mod 30), Plune)


    If Epacte = 24 Then Plune = DateAdd("y", -1, Plune)
    If Epacte = 25 And (AA >= 1900 And AA < 2200) Then Plune = DateAdd("y", -1, Plune)


    Paques = Plune - Weekday(Plune) + vbMonday + 7              ' Paques
    If (JJ = DatePart("d", Paques) And MM = DatePart("m", Paques)) Then
        Ferie = True: Exit Function
    End If


    Ascension = DateAdd("y", 38, Paques)                        ' Ascension
    If (JJ = DatePart("d", Ascension) And MM = DatePart("m", Ascension)) Then
        Ferie = True: Exit Function
    End If


    Pentecote = DateAdd("y", 11, Ascension)                     ' Pentecote
    If (JJ = DatePart("d", Pentecote) And MM = DatePart("m", Pentecote)) Then
        Ferie = True: Exit Function
    End If


End Function

A+ à tous
 

Pièces jointes

  • Creation Onglet Jours Ouvres.xls
    109.5 KB · Affichages: 32

JCGL

XLDnaute Barbatruc
Re : Mettre la date comme nom d'onglet

Bonjour à tous,

Pour XL > 2007

Un essai avec des formules en colonnes masquées et un petit bout de code.

Avantage : une feuille modèle masquée qui permet de crééer la "maquettes des feuilles construites.
Prend un compte les jours ouvrés (sans les samedis et et les dimanches ni les jours fériés)

A+ à tous
 

Pièces jointes

  • JC Création Feuilles Mois.xlsm
    66 KB · Affichages: 44

jeanjuju

XLDnaute Nouveau
Re : Mettre la date comme nom d'onglet

Bonjour à vous tous qui me donnez des solutions qui pour moi sont proches de la magie....
Mais comme je le disais sur mon premier post, je ne peux pas abandonner le fichier que j'ai repris et qui comporte déjà tout un tas de feuilles et d'informations avec des mises en forme, des cellules fusionnées et j'en passe.

De plus je ne sais pas comment adapter vos solutions avec mon niveau débutant...
Je pensais qu'un formule simple dans l'onglet (clic droit visualiser le code suffirait...) pour que la date figurant en D3 deviennent aussi le nom de l'onglet...
Voilà. Si vous pouvez faire simple, encore une fois sans froisser personne. Merci à vous tous qui avait déjà contribuer à résoudre ma demande...
 

Discussions similaires

Statistiques des forums

Discussions
312 771
Messages
2 091 954
Membres
105 126
dernier inscrit
ait zerraf