Sub ImportWeek(NumSemaine As Integer)
Dim TabNom() As Variant
Dim TabDay() As Variant
Dim TabWeek() As Variant
Set WsS = Worksheets("Seizure week")
With WsS
FinNom = .Range("A7").End(xlDown).Row
TabNom = .Range("B7:B" & FinNom).Value
'on commence par effacer Morning et Afternoon
.Range("K7").Offset(1, 0).Resize(UBound(TabNom) - 1, 71).ClearContents
.Range("K7").Offset(UBound(TabNom) + 2).Resize(UBound(TabNom) - 1, 71).ClearContents
'on set TabDay (permet de garder les lignes d'entete SUN, MON....
TabDay = .Range("K7").Resize(UBound(TabNom) * 2 + 1, 61).Value
'.Range("B7").Resize(UBound(TabNom) * 2 + 1, 72).Select 'pour voir ce qui vient d'etre mis dans le tableau
NumLigne = NumSemaine + 3 'ligne de destination dans les feuilles "NomX"
End With
'on Remplit le tableau à partir des feuilles
For i = LBound(TabNom, 1) + 1 To UBound(TabNom, 1)
If FeuilleExiste(CStr(TabNom(i, 1))) Then
With Sheets(TabNom(i, 1))
For j = LBound(TabDay, 2) + 1 To UBound(TabDay, 2)
TabDay(i, j) = .Cells(NumLigne, j + 2) 'première ligne dans morning
TabDay(i + 1, j) = .Cells(NumLigne, j + 73) 'seconde ligne dans morning
TabDay(i + UBound(TabNom, 1) + 1, j) = .Cells(NumLigne, j + 144) 'première ligne dans afternoon
TabDay(i + 1 + UBound(TabNom, 1) + 1, j) = .Cells(NumLigne, j + 215) 'seconde ligne dans afternoon
Next j
End With
End If
Next i
'on colle le résultat dans la feuille
With WsS
.Range("K7").Resize(UBound(TabDay, 1), UBound(TabDay, 2)) = TabDay
End With
End Sub
Sub RecordSeizureWeek(NumSemaine As Integer)
Dim TabNom() As Variant
Dim TabDay() As Variant
Set WsS = Worksheets("Seizure week")
With WsS 'dans la feuille "Seizure week"
FinNom = .Range("A7").End(xlDown).Row 'dernière ligne du nom (en partant de B7 vers le bas (jusqu'à la première ligne vide -en fin de morning)
TabNom = .Range("B7:B" & FinNom).Value 'on met la liste des noms dans un tablo VBA
'on met tout le tableau (Morning + Afternoon) dans un tablo VBA
TabDay = .Range("J7").Resize(UBound(TabNom) * 2 + 1, 61).Value
'.Range("B7").Resize(UBound(TabNom) * 2 + 1, 72).Select 'pour voir ce qui vient d'etre mis dans le tableau
NumLigne = NumSemaine + 3 'correspondance avec les feuilles Noms...
'on efface Morning et Afternoon
.Range("K8").Resize(UBound(TabNom) - 1, 71).ClearContents
.Range("K7").Offset(UBound(TabNom) + 2).Resize(UBound(TabNom) - 1, 71).ClearContents
End With
'on recopie le tableau dans les feuilles
For i = LBound(TabNom, 1) + 1 To UBound(TabNom, 1)
If FeuilleExiste(CStr(TabNom(i, 1))) Then
With Sheets(TabNom(i, 1))
For j = LBound(TabDay, 2) + 1 To UBound(TabDay, 2)
.Cells(NumLigne, j + 1) = TabDay(i, j) 'première ligne morning
.Cells(NumLigne, j + 72) = TabDay(i + 1, j) 'seconde ligne morning
.Cells(NumLigne, j + 144) = TabDay(i + UBound(TabNom, 1) + 1, j) 'première ligne afternoon
.Cells(NumLigne, j + 215) = TabDay(i + 1 + UBound(TabNom, 1) + 1, j) 'seconde ligne afternoon
Next j
End With
End If
Next i
End Sub