Microsoft 365 Création automatique d'onglets nommé avec dates semaine (début et fin)

TAL

XLDnaute Occasionnel
Bonjour,

Tout d'abord, je vous souhaite à tous une excellente année, une bonne santé !!!

J'aurai besoin de vous, en effet, j'ai créé un planning à la semaine, il faut que je crée 54 onglets nommé à la date de la semaine concerné. J'ai une date de début et une date de fin, puis j'ai compilé ces deux dates de façon qu'il n'y ai plus qu'une cellule avec ces deux dates en A2. (formule : =TEXTE($C$1;"jjmmm")&"."&TEXTE($I$1;"jjmmm ")

J'aimerai arriver à créer en une seule fois les 54 onglets nommé avec les dates de la semaine ex : 27.dec.02janv

Ce planning sera archivé, et un autre devra être créer avec l'année suivante.
Afin de ma faciliter la tâche, je fais appel à votre savoir faire.

D'avance merci
 

Pièces jointes

  • Heures Frais_V4 - Essai VBA_exemple.xlsx
    89.9 KB · Affichages: 17

Efgé

XLDnaute Barbatruc
Re
@TAL
Désolé de phagocyter ton sujet, mais j'aimerai comprendre ;)

@patricktoulon
Merci de ces explications.
en fait on recup la semaine 2 de l'année avec 14(on est large ou juste pilpoil)
Mais en 2025 le 14 janvier est semaine 3 🤔
Cordialement

EDIT
C'est même fréquent
1642934538951.png
 
Dernière édition:

patricktoulon

XLDnaute Barbatruc
re
@Efgé effectivement pour 2015 on a un décalage en effet le 01/01/20215 est un jeudi donc la semaine fait parti de l'année
dans ce cas la il faut ajouter une autre condition en formule pas simple
en vba se serait plus simple finalement
je ne veux pas ajouter l'addition logique du transfert de la booleenne de la fonction No.semaine.iso car tout le monde ne l'a pas
par exemple moi je suis sur 2013 je l'ai mais 2007 ne la pas
j'ai bien ma fonction perso("ISOWEEK2007") mais vba pour vba alors autant tout faire en VBA alors
bien vu @Efgé;)
pour le vba
vous avez dans le forum des fonctions personnalisées ma fonction ISOWEEK2007( compatible all version excel)
VB:
'***********************************************
'fonction ISOWEEK pour 2007(compatible avec superieur )
'auteur patricktoulon
'date:05/032016
'
'***********************************************
'LA fonction
Function ISOWEEK2007(dat As Date)
    Dim X&
    X = CLng(dat)
    ISOWEEK2007 = Evaluate("= TRUNC((" & X & "-WEEKDAY(" & X & ",2)+11-DATE(YEAR(" & X & "-WEEKDAY(" & X & " ,2)+4),1,1))/7)")
End Function

'et pour la tester
Sub test()
     MsgBox Format(CDate("01/01/2015"), "ddd dd/mm/yyyy") & "  = semaine " & ISOWEEK2007(CDate("01/01/2015"))
   MsgBox Format(CDate("05/01/2015"), "ddd dd/mm/yyyy") & "  = semaine " & ISOWEEK2007(CDate("05/01/2015"))
 End Sub
 

patricktoulon

XLDnaute Barbatruc
re
tout en vba comme ç a plus de soucis
et le name semaine qui a pour le refertoRC le A2 de chaque feuille sera semaine 1,semaine 2,semaine3 etc.....
il sont supprimés et refait quand on lance le bouton
l'année est toujours en [I2]
All in VBA
;)
 

Pièces jointes

  • Heures Frais_V5 - v° patricktoulon All in Vba.xlsm
    76.8 KB · Affichages: 33

TAL

XLDnaute Occasionnel
Je change le MDP sur la feuille "Trame" puis sur VBA mais quand je lance le bouton, les feuilles ne sont pas protéger, pourtant, il me semble bien changer au bon endroit, en tout cas, j'espère

Y a t'il une autre manip à faire ?


Sub CreateOnglets()
Dim i As Integer
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Sheets("Trame").Unprotect ("....")
For i = 2 To 54
If Feuil2.Cells(i, "G") <> "" Then
Sheets("Trame").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = Sheets("B").Range("I" & i).Value
Range("A2").Value = ActiveSheet.Name
Range("C1").Value = Sheets("B").Range("G" & i).Value
ActiveWorkbook.Names.Add Name:="semaine_" & i - 1, RefersToR1C1:="='" & ActiveSheet.Name & "'!R2C1"
End If
Next
Application.ScreenUpdating = True
Sheets("Trame").Protect ("....")
Feuil2.Activate
End Sub
 

patricktoulon

XLDnaute Barbatruc
re
bonsoir
VB:
Sub CreateOnglets()
Dim i As Integer
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Sheets("Trame").Unprotect ("....")
For i = 2 To 54
If Feuil2.Cells(i, "G") <> "" Then
Sheets("Trame").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = Sheets("B").Range("I" & i).Value
Range("A2").Value = ActiveSheet.Name
Range("C1").Value = Sheets("B").Range("G" & i).Value
ActiveWorkbook.Names.Add Name:="semaine_" & i - 1, RefersToR1C1:="='" & ActiveSheet.Name & "'!R2C1"
activesheet.Protect ("....")'!!!!!!!!!!!'
End If
Next
Application.ScreenUpdating = True
Sheets("Trame").Protect ("....")
Feuil2.Activate
End Sub
 

TAL

XLDnaute Occasionnel
re
bonsoir
VB:
Sub CreateOnglets()
Dim i As Integer
Application.ScreenUpdating = False
Application.DisplayAlerts = False
Sheets("Trame").Unprotect ("....")
For i = 2 To 54
If Feuil2.Cells(i, "G") <> "" Then
Sheets("Trame").Copy After:=Sheets(Sheets.Count)
ActiveSheet.Name = Sheets("B").Range("I" & i).Value
Range("A2").Value = ActiveSheet.Name
Range("C1").Value = Sheets("B").Range("G" & i).Value
ActiveWorkbook.Names.Add Name:="semaine_" & i - 1, RefersToR1C1:="='" & ActiveSheet.Name & "'!R2C1"
activesheet.Protect ("....")'!!!!!!!!!!!'
End If
Next
Application.ScreenUpdating = True
Sheets("Trame").Protect ("....")
Feuil2.Activate
End Sub
😊 Merci beaucoup, je vais de suite essayer

Merci pour votre immense aide !!!!!!
 

TAL

XLDnaute Occasionnel
Bonjour,

Je reviens vers toi afin de voir s'il était possible d'avoir la même formule du post 23 MAIS cette fois, de façon à ce que puisse renouveler chaque semaine moi même sans dupliquer toute l'année en une seule fois. Recopier le dernier onglet créé systématiquement. Ensuite je l'intégrerai dans un ruban personnalisé.

D'avance merci et désolée d'abuser de ton temps.
Bien à toi
 

patricktoulon

XLDnaute Barbatruc
Bonjour
j'ai séparé la création de la liste de la création des onglets
tu a donc maintenant deux boutons et une combobox de 1 a 53 pour choisir quelle semaine créer
le name suit toujours bien entendu

tu crée donc ta liste d'abords avec le bouton "Création de la Liste"

ensuite
soit tu crée tout les onglets avec le bouton "Création Onglets"
soit tu selectionne le numero de semaine dans la combo l'onglet correspondant au numéro de semaine sera créé

A+;)
 

Pièces jointes

  • Heures Frais_V6 - v° patricktoulon All in Vba all or one week with combobox.xlsm
    59.6 KB · Affichages: 6

TAL

XLDnaute Occasionnel
Un grand Merci
Sincèrement, merci d’être présent, d’exister, de votre disponibilité, de votre réactivité.
C’est grand soulagement que vous apportez et une compétences inestimables

MERCI BEAUCOUP
Je vous souhaite une belle journée
 

Discussions similaires

Réponses
15
Affichages
1 K

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 813
dernier inscrit
kaiyi