Définir la date du lundi en fonction du numéro de semaine

Bonjour à tous

Encore besoin de votre savoir.

Dans le fichier joint en cliquant sur le bouton de la feuille INTERFACE je créé 2 feuilles en copies à partir de 2 modèles nommés PAIRE et IMPAIRE.

Pendant la copie les feuilles sont renommées Ex : Semaine 14, Semaine 15. Le numéro correspond au numéro de semaine à venir.

Le numéro de semaine à venir est aussi inscrit sur chaque feuille en D1.

Jusque-là tout fonctionne.

Maintenant je souhaiterais quand D3 sur chaque feuilles copiées on affiche par déduction du numéro de semaine en D1 la date du lundi.

J’ai bien trouvé des infos sur le net, mais je n’y suis pas arrivé, ce qui explique la raison de mon poste.

Merci pour vos réponses et bon dimanche.

605lundi.xlsm (23.84 Ko)

Bonjour,

J'ai détaillé le calcul et appliqué pour 2016 car il y a un soucis pour cette année là : le 1er janv tombe semaine 53 !

Bon lundi

edit : fichier attaché corrigé ci-dessus ... autant pour moi !

Bonjour à tous

Une autre formule à tester :

=DATE(E4;1;1)-JOURSEM(DATE(E4;1;1)-1)+1+7*(E5-1)

Bye !

Bonjour Steelson

Merci pour ta réponse.

Ta proposition fonctionne très bien.

Pour le coté pratique dans l'utilisation du fichier d'origine, car le fichier joint au sujet est un exemple serait-il possible de le faire en VBA ?

A te lire, encore merci.

N'oublie pas de mettre l'année en B1 sur chaque feuille, et bien sûr la semaine en D1

edit : ma formule contient une erreur ... je reviens après un intermède !


gmb a écrit :

Bonjour à tous

Une autre formule à tester :

=DATE(E4;1;1)-JOURSEM(DATE(E4;1;1)-1)+1+7*(E5-1)

Bye !

tiens, je suis surpris par ta formule ... comment tiens-tu compte des années où le 1er de l'an est semaine 53 ?

je corrige :

=(D1-1)*7+SI(JOURSEM(DATE(B1;1;1);2)>4;7;0)+DATE(B1;1;1)-JOURSEM(DATE(B1;1;1);2)+1

en VBA :

Sub lundi()

Sheets("PAIRE").Select
Range("D3").Select
ActiveCell.FormulaR1C1 = _
        "=(R[-2]C-1)*7+IF(WEEKDAY(DATE(R[-2]C[-2],1,1),2)>4,7,0)+DATE(R[-2]C[-2],1,1)-WEEKDAY(DATE(R[-2]C[-2],1,1),2)+1"

End Sub
275lundi.xlsm (17.79 Ko)

Pour une plus grande intégration à ton projet, essaye ceci :

Sub CopySheetRename()
    Dim Nsem As Integer, Recup As String
    Dim IndexFeuil As Integer
    IndexFeuil = Sheets("INTERFACE").Index

'paire
    Nsem = Sheets("INTERFACE").Range("E5")
    Sheets("PAIRE").Copy Before:=Sheets("INTERFACE")
    Range("D1") = Nsem
    ActiveSheet.Name = "Semaine " & Nsem
    lundi "PAIRE"

'on incrémente le numéro de semaine de 1
    Sheets("INTERFACE").Range("E5") = Nsem + 1

'impaire
    Nsem = Sheets("INTERFACE").Range("E5")
    Sheets("IMPAIRE").Copy Before:=Sheets("INTERFACE")
    Range("D1") = Nsem
    ActiveSheet.Name = "Semaine " & Nsem
    lundi "IMPAIRE"

'on incrémente le numéro de semaine de 1
    Sheets("INTERFACE").Range("E5") = Nsem + 1

End Sub
Sub lundi(feuille As String)

Sheets(feuille).Select
Range("D3").Select
ActiveCell.FormulaR1C1 = _
        "=(R[-2]C-1)*7+IF(WEEKDAY(DATE(R[-2]C[-2],1,1),2)>4,7,0)+DATE(R[-2]C[-2],1,1)-WEEKDAY(DATE(R[-2]C[-2],1,1),2)+1"

End Sub

Je préfère personnellement laisser la formule en place dans la cellule plutôt que de calculer le jour en VBA.

@Steelson : merci pour la correction et Bravo !

Steelson un grand merci pour avoir pris le temps de répondre et d'avoir développé le sujet jusqu'au bout.

Comme d'habitude ce forum assure, FÉLICITATION.

Merci, cela fait plaisir aussi d'avoir des retours, et des "élèves" intelligents qui nous font aussi progresser ... la preuve, j'ai dû m'y prendre à 2 fois !

Rechercher des sujets similaires à "definir date lundi fonction numero semaine"