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