Suite à tout ce que j'ai pu lire, je me suis appuyé d'une part sur les défintions du larrousse et d'autre part sur les formule établies d'Exel. Années bisextiles les 4 ans dont le
millésime est divisible par 4, divible par 100 si elle sont divisble par 400 2000, 1700,1800,1900 sont bisextiles. =SI(DROITE(TEXTE(janv!$D$11;"aaaa");2)="00";SI(DROITE(TEXTE(janv!$D$11;"aaaa")/100/400;2)="05";29;28);SI(DROITE(TEXTE(janv!$D$11;"aaaa")/4*100;2)="00";29;28)). Vous entrez la date du 1er Janvier dans une cellule choisie ex: 1/01/2010, le résultat de la formule vous donnera 28 ou 29 jrs pour le mois de février. Pour le nombre de semaine SI(DROITE(TEXTE(janv!$D$11;"aaaa")/6*100;2)="00";53;52) le résultat de la formule vous donnera 52 ou 53. Ces valeurs sont stokées dans des cellules situées dans une feuille que j'appelle paramètre et qui me servent pour les calculs du calendrier.
Pour connaître les jours de la semaine 52 ou 53 ou 1 je me suis fait les formules suivantes en ulisant la formule Exel JOURSEM(janv!D11;2). Nota D11 est la date du 1er Janvier 1/01/10
Private Sub Worksheet_Change(ByVal Target As Range)
If (Target.Address = "$D$11") Then
Worksheets(3).Unprotect "TSA3X8"
If Sheets(1).Range("A14").Value = 1 Then
Sheets(3).Range("F14").Value = Sheets(3).Range("D11").Value
Sheets(3).Range("H14").Value = Sheets(3).Range("D11").Value + 1
Sheets(3).Range("J14").Value = Sheets(3).Range("D11").Value + 2
Sheets(3).Range("L14").Value = Sheets(3).Range("D11").Value + 3
Sheets(3).Range("N14").Value = Sheets(3).Range("D11").Value + 4
Sheets(3).Range("P14").Value = Sheets(3).Range("D11").Value + 5
Sheets(3).Range("R14").Value = Sheets(3).Range("D11").Value + 6
Sheets(3).Range("F12").Value = Sheets(3).Range("D11").Value - Sheets(3).Range("F14").Value
ElseIf Sheets(1).Range("A14").Value = 2 Then
Sheets(3).Range("F14").Value = Sheets(3).Range("D11").Value - 1
Sheets(3).Range("H14").Value = Sheets(3).Range("D11").Value
Sheets(3).Range("J14").Value = Sheets(3).Range("D11").Value + 1
Sheets(3).Range("L14").Value = Sheets(3).Range("D11").Value + 2
Sheets(3).Range("N14").Value = Sheets(3).Range("D11").Value + 3
Sheets(3).Range("P14").Value = Sheets(3).Range("D11").Value + 4
Sheets(3).Range("R14").Value = Sheets(3).Range("D11").Value + 5
Sheets(3).Range("F12").Value = Sheets(3).Range("D11").Value - Sheets(3).Range("F14").Value
ElseIf Sheets(1).Range("A14").Value = 3 Then
Sheets(3).Range("F14").Value = Sheets(3).Range("D11").Value - 2
Sheets(3).Range("H14").Value = Sheets(3).Range("D11").Value - 1
Sheets(3).Range("J14").Value = Sheets(3).Range("D11").Value
Sheets(3).Range("L14").Value = Sheets(3).Range("D11").Value + 1
Sheets(3).Range("N14").Value = Sheets(3).Range("D11").Value + 2
Sheets(3).Range("P14").Value = Sheets(3).Range("D11").Value + 3
Sheets(3).Range("R14").Value = Sheets(3).Range("D11").Value + 4
Sheets(3).Range("F12").Value = Sheets(3).Range("D11").Value - Sheets(3).Range("F14").Value
ElseIf Sheets(1).Range("A14").Value = 4 Then
Sheets(3).Range("F14").Value = Sheets(3).Range("D11").Value - 3
Sheets(3).Range("H14").Value = Sheets(3).Range("D11").Value - 2
Sheets(3).Range("J14").Value = Sheets(3).Range("D11").Value - 1
Sheets(3).Range("L14").Value = Sheets(3).Range("D11").Value
Sheets(3).Range("N14").Value = Sheets(3).Range("D11").Value + 1
Sheets(3).Range("P14").Value = Sheets(3).Range("D11").Value + 2
Sheets(3).Range("R14").Value = Sheets(3).Range("D11").Value + 3
Sheets(3).Range("F12").Value = Sheets(3).Range("D11").Value - Sheets(3).Range("F14").Value
ElseIf Sheets(1).Range("A14").Value = 5 Then
Sheets(3).Range("F14").Value = Sheets(3).Range("D11").Value - 4
Sheets(3).Range("H14").Value = Sheets(3).Range("D11").Value - 3
Sheets(3).Range("J14").Value = Sheets(3).Range("D11").Value - 2
Sheets(3).Range("L14").Value = Sheets(3).Range("D11").Value - 1
Sheets(3).Range("N14").Value = Sheets(3).Range("D11").Value
Sheets(3).Range("P14").Value = Sheets(3).Range("D11").Value + 1
Sheets(3).Range("R14").Value = Sheets(3).Range("D11").Value + 2
Sheets(3).Range("F12").Value = Sheets(3).Range("D11").Value - Sheets(3).Range("F14").Value
ElseIf Sheets(1).Range("A14").Value = 6 Then
Sheets(3).Range("F14").Value = Sheets(3).Range("D11").Value - 5
Sheets(3).Range("H14").Value = Sheets(3).Range("D11").Value - 4
Sheets(3).Range("J14").Value = Sheets(3).Range("D11").Value - 3
Sheets(3).Range("L14").Value = Sheets(3).Range("D11").Value - 2
Sheets(3).Range("N14").Value = Sheets(3).Range("D11").Value - 1
Sheets(3).Range("P14").Value = Sheets(3).Range("D11").Value
Sheets(3).Range("R14").Value = Sheets(3).Range("D11").Value + 1
Sheets(3).Range("F12").Value = Sheets(3).Range("D11").Value - Sheets(3).Range("F14").Value
ElseIf Sheets(1).Range("A14").Value = 7 Then
Sheets(3).Range("F14").Value = Sheets(3).Range("D11").Value - 6
Sheets(3).Range("H14").Value = Sheets(3).Range("D11").Value - 5
Sheets(3).Range("J14").Value = Sheets(3).Range("D11").Value - 4
Sheets(3).Range("L14").Value = Sheets(3).Range("D11").Value - 3
Sheets(3).Range("N14").Value = Sheets(3).Range("D11").Value - 2
Sheets(3).Range("P14").Value = Sheets(3).Range("D11").Value - 1
Sheets(3).Range("R14").Value = Sheets(3).Range("D11").Value
Sheets(3).Range("F12").Value = Sheets(3).Range("D11").Value - Sheets(3).Range("F14").Value
End If
If Sheets(1).Range("A14").Value = 7 Then 'Di
Sheets(3).Range("N12").Value = Sheets(1).Range("I8").Value
ElseIf Sheets(1).Range("A14").Value = 6 And Sheets(1).Range("I8").Value = 52 Then 'Sa
Sheets(3).Range("N12").Value = 1
ElseIf Sheets(1).Range("A14").Value = 6 And Sheets(1).Range("I8").Value = 53 Then
Sheets(3).Range("N12").Value = Sheets(1).Range("I8").Value
ElseIf Sheets(1).Range("A14").Value <> 6 Or Sheets(1).Range("A14").Value <> 7 Then
Sheets(3).Range("N12").Value = 1
End If
Worksheets(3).Protect "TSA3X8"
End If
End Sub
Cette ensemble peut paraître un peu lourd pour certains, mais il est rapide et il fonctionne à merveille il me permet de faire des tours de service 3x8 sur un nombre d'agent important et sur l'année, et je précise que je ne suis pas un pro du VBA.
Cordialement
Cordialement
52 en 2001
52 en 2002
52 en 2003
52 en 2004
52 en 2005
52 en 2006
52 en 2007
52 en 2008
52 en 2009
52 en 2010
52 en 2011
52 en 2012
52 en 2013
...
Te voila rassurée ?
Sauf peut-être Xavstarblues : http://www.commentcamarche.net/...