Suite repetitive de semaine en fonction de l'année

Bonjour à tous,

Je vous joint un fichier dans lequel je souhaiterais remplir un tableau avec des numéros de semaine en fonction de l'année saisi dans une autre cellule.

Je m'explique j'ai un tableau (trame) en J3:O13 dans lequel on retrouve pour l'année 2017, les 6 colonnes de cycle avec pour chaque cellules les numéros de semaine de 2017. Les semaines se suivent sur un roulement de 6 semaines. Mon cycle de départ correspond à la semaine 21 (en jaune) qui correspond au cycle 3. ainsi, les semaines 27,33,39,45,51 sont également en cycle3.

Je souhaiterais que mes cellules A5:F13 se remplissent automatiquement en fonction de l'année rentrée en B1 et ce en respectant les années bissextiles et surtout les années à 53 semaines.

En J17:O28 se trouve l'exemple de ce que l'on devrait obtenir pour 2018

Si quelqu'un à une idée ?

Merci d'avance

Cordialement

10essai.xlsx (10.35 Ko)

Bonjour

Un essai à tester. Te convient-il ?

Bye !

17essai-v1.xlsm (22.50 Ko)

Trop cool Gmb , ça fonctionne nickel !!!

Tu es trop fort

Ce qui serait bien maintenant pour un novice en VBA comme moi, c'est une petite explication du code utilisé avec les traductions des lignes.

encore merci

Le même avec macro commentée.

Bye !

10essai-v1-b.xlsm (23.62 Ko)

Merci beaucoup pour les commentaires et les explications

J'avoue ne pas tout comprendre mais cela pourras surement être utile à beaucoup d'entre nous.

Par contre un petit beug survient (pas méchant car l'année 2017 est bientôt finie) lorsque je choisi une année tout fonctionne bien mais lorsque je reviens à 2017, rien ne s'affiche.

J'ai modifié la ligne :

If Range("B1") < 2018 Then GoTo fin

par

If Range("B1") < 2017 Then GoTo fin

Le soucis est que la cellule A5 prend la valeur 52 et non pas le 1 ce qui engendre un décalage d'une semaine.

Sans doute parce que le 01/01/2017 est un dimanche et donc faisant partie de la S52 de 2016, mais Je ne vois pas comment résoudre ce problème.

Cela risque t'il d'arriver pour d'autre année ?

Encore merci

Cordialement

J'ai voulu également le placer le tableau dans un autre fichier mais où les numéros de ligne et de colonne ne correspondaient pas.

J'ai donc modifié les lignes du code pour faire corresponde les cellules du nouveau tableau, mais ça ne fonctionne pas correctement.

Pourrais-tu me dire ce que j'ai oublié de modifier ?

Option Explicit

Dim nbrSem&, col&, preSem&, derSem&, nSem&, i&, j&

Private Sub Worksheet_Change(ByVal Target As Range)

If Target.Address <> "$B$1" Then Exit Sub 'La macro ne s'exécutera que si on a validé la cellule B1

Application.EnableEvents = False 'On désactive le déclenchement automatique des macros événementielles

Range("A5:F14").ClearContents 'On efface la zone qui va recevoir le résultat

If Range("B1") < 2017 Then GoTo fin 'Si on a en B1 une année inférieure à 2017 on arrête la macro

nbrSem = DateDiff("w", "1/1/2017", DateSerial(Range("B1"), 1, 1)) 'on calcule le nbre de semaine entre le 1/1/2017 et le 1/1 de l'année écrite en B1

col = (nbrSem Mod 6) + 1 'On calcule le n° de la colonne de départ

preSem = DatePart("ww", DateSerial(Range("B1"), 1, 1), 2, 2) 'On calcule le n° de la première semaine de l'année B1

derSem = DatePart("ww", DateSerial(Range("B1"), 12, 31), 2, 2) 'On calcule le n° de la dernière semaine de l'année B1

Cells(5, col) = preSem 'On écrit le n° de la première semaine de B1

If preSem = 52 Or preSem = 53 Then 'Cas où la 1° semaine est la semaine 52 ou 53 de l'année précédente

nSem = 1 'la variable nSemprend la valeur 1

Else 'sinon

nSem = 2 'la variable nSem prend la valeur 2

End If

For j = col + 1 To 6 'On va remplir la ligne 5 du tableau résultat

Cells(5, j).Value = nSem 'On l'écrit

nSem = nSem + 1 'on incrémente la variable nSem

Next j 'on recommence jusqu'à la colonne 6

For i = 6 To 14 'On va remplir les lignes 6 à 14 du tableau résultat

For j = 1 To 6

Cells(i, j).Value = nSem

nSem = nSem + 1

If nSem > Application.Max(52, derSem) Then GoTo fin 'on arrête si la valeur de nSem devient supérieur à 52 et à la dernière semaine de B1

Next j 'on passe à la cellule suivante du tableau

Next i

fin:

Application.EnableEvents = True 'On réactive le déclenchement des macros événementielles

End Sub

Sub Evenement()

Application.EnableEvents = True

End Sub

en rouge les elements modifiés

Merci d'avance

Bonjour

Nouvelle version qui tient compte de 2017.

yolojo a écrit :

J'ai voulu également le placer le tableau dans un autre fichier mais où les numéros de ligne et de colonne ne correspondaient pas.

Joins moi ce fichier où on voit où se trouve ton nouveau tableau.

8essai-v2.xlsm (23.50 Ko)

Ok comme demandé je vous joint mon fichier définitif.

C'est une gestion de planning qui est un peu lourd, si vous avez des idées pour le simplifier je suis preneur

Cordialement

15exemple.xlsm (128.64 Ko)

tout ce silence me fait peur !!!

ça doit être compliqué ?

En tout cas pour moi ça l'ai

Bonjour

Il n'y a pas de quoi avoir peur mais, comme tu l'as écrit :

...planning qui est un peu lourd

Ce planning est bien trop lourd pour mes fragiles épaules .

Désolé !

Bye !

Ok gmb, je comprends.

Par contre pourrais-tu m'aiguiller sur la version V3 de ton fichier dans lequel je recherche par ligne la valeur la plus à gauche du tableau en fonction d'un numéro de semaine demandée.

j'ai utilisé la fonction rechercheV qui fonctionne bien pour toutes les ligne du tableau sauf la première car suivant les années, les première cellule sont vides et donc il me renvoi une valeur vide.

J'aimerais qu'il me renvoie en fait, la valeur existante la plus à gauche de la ligne, ainsi si les trois premières cellules de la ligne sont vides, il me donne la valeur de la quatrième cellule.

Je te joint la fichier V3 pour mieux comprendre

Merci d'avance, cela pourra m'aider pour mon fichier final.

Cordialement

10essai-v3.xlsm (20.54 Ko)

Bonjour

Nouvelle version.

Bye !

10essai-v4.xlsm (26.22 Ko)

alors là, scotché

encore merci et surtout bravo pour ton talent

Chapeau Mr gmb

Rechercher des sujets similaires à "suite repetitive semaine fonction annee"