Sub Tab1toTab2()
Dim tabInit() As Variant
Dim tabFinal() As Variant
With Sheets("Feuil1")
'FeuilleDest = .Range("A1") ' la feuille de destination est indiquée dans la cellule A1
'on détecte les données du tableau à exporter
NbLignes = .Range("A" & .Rows.Count).End(xlUp).Row 'nb de lignes du tableau initial
NbCol = .Range("A2").End(xlToRight).Column 'nb de colonnes
tabInit = .Range("A1").Resize(NbLignes, NbCol).Value
End With
taille = (UBound(tabInit, 1) - 1) * (UBound(tabInit, 2) - 2) 'calcul du nombre de lignes du tableau final
ReDim tabFinal(1 To taille, 1 To 4) 'on définit les dimensions du tableau final
j = 1 'numéro de ligne du tablo en cours de remplissage
For i = 2 To UBound(tabInit, 1) 'on commence à la ligne 2 du tableau pour ignorer la ligne d'entete
For k = LBound(tabInit, 2) + 1 To UBound(tabInit, 2) - 1 'pour chaque colonne du tableau
tabFinal(j, 1) = tabInit(i, 1)
tabFinal(j, 2) = tabInit(i, 2)
tabFinal(j, 3) = tabInit(1, k + 1)
tabFinal(j, 4) = tabInit(i, k + 1)
j = j + 1
Next k
Next i
For i = LBound(tabFinal, 1) To UBound(tabFinal, 1)
tabFinal(i, 3) = WorksheetFunction.Substitute(tabFinal(i, 3), "Day", "")
Next i
With Sheets("Feuil3") 'dans la feuille de destination (première cellule du tabInit)
.UsedRange.Offset(1, 0).ClearContents 'on efface juste le contenu des cellules
.Range("A2").Resize(UBound(tabFinal, 1), UBound(tabFinal, 2)) = tabFinal
End With
End Sub