Sub Récap()
Dim Feuille, Source, Cible
Select Case [A5] 'A5 : la cellule contenant la durée du stage
Case "7H"
'à développer
Case "21H"
Feuille = "Recap 21H"
Source = Array("$B$8:$B$10", "$B$14:$B$22", "$B$26:$B$35", "$B$39:$B$42")
Cible = Array("$A$7:$A$9", "$A$11:$A$19", "$A$21:$A$30", "$A$32:$A$35")
Case "56H"
'à développer
Case "76H"
'à développer
End Select
Consolider Feuille, Source, Cible
End Sub
Sub Consolider(Feuille, Source, Cible)
Const C_L_Titre As Long = 6 'N° ligne d'entête dans la feuille cible
Const Col_Modèle = 2 'N° de la colonne de la feuille cible contenant les formats à recopier (colonne Moyenne)
Dim Wsh_C As Worksheet, Wsh_S As Worksheet
Dim Nom_Promo As String, Décalage As Integer, i As Integer
Application.ScreenUpdating = False
Set Wsh_C = ThisWorkbook.Worksheets(Feuille)
Set Wsh_S = ActiveSheet
Nom_Promo = Wsh_S.Name
Décalage = WorksheetFunction.CountA(Wsh_C.Rows(C_L_Titre))
'Nom de la feuille source
Wsh_C.Cells(C_L_Titre, Décalage + 1).Value = Nom_Promo
'Lien hypertexte vers cette feuille
Wsh_C.Hyperlinks.Add Anchor:=Wsh_C.Cells(C_L_Titre, Décalage + 1), Address:="", _
SubAddress:="'" & Nom_Promo & "'!A1", _
TextToDisplay:=Nom_Promo, _
ScreenTip:="Voir la fiche complète"
'Recopie des valeurs
For i = LBound(Source) To UBound(Source)
Wsh_C.Range(Cible(i)).Offset(0, Décalage).Value = Wsh_S.Range(Source(i)).Value
Next
'Recopie des formats
Wsh_C.Columns(Col_Modèle).Copy
Wsh_C.Columns(Col_Modèle).Resize(, Décalage).PasteSpecial xlPasteFormats
'Style Hypertexte (effacé par la recopie des formats)
Wsh_C.Cells(C_L_Titre, Col_Modèle).Offset(0, 1).Resize(, Décalage - Col_Modèle + 1).Style = "Hyperlink"
Application.ScreenUpdating = True
End Sub