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.
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
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
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
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
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
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
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
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
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