1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62
|
'Genérer une fiche d'émargement pour le consultant donné
'-> Permet également de protéger cette nouvelle feuille générée
Public Sub genererFicheEmargement(consultant As ConsultantType)
Dim nomFE As String 'nom de la fiche d'émargement à créer
Dim i As Integer
Dim J As Integer
Dim macro As String 'Code de la procédure évènementielle "Worksheet_Change" à ajouter dans la nouvelle feuille
Dim X As Integer
Dim Ws As Worksheet
If (Trim(consultant.initiales) = "") Then
Exit Sub
End If
'On crée la nouvelle feuille
nomFE = getNomFicheEmargement(consultant.initiales)
ModuleCommons.SuppressionFeuille nomFE
Set Ws = Application.Sheets.Add(after:=Worksheets(Worksheets.Count))
macro = ModuleCommons.recupereContenuMacro(ThisWorkbook, "formFEModele", "Worksheet_Change")
Ws.Name = nomFE
Ws.Select
With Application.ActiveSheet.Outline
.AutomaticStyles = False
.SummaryRow = xlAbove
.SummaryColumn = xlRight
End With
'On écrit le nom, prénom et initiales du consultant dans la feuille "FE_Modèle"
formFEModele.Range(ModuleFE.VAL_NOM_HEADER_NAME).Value = consultant.Nom
formFEModele.Range(ModuleFE.VAL_PRENOM_HEADER_NAME).Value = consultant.Prenom
formFEModele.Range(ModuleFE.VAL_INITIALES_HEADER_NAME).Value = consultant.initiales
i = formFEModele.Range(ModuleFE.VAL_INITIALES_HEADER_NAME).row
J = formFEModele.Range(ModuleFE.VAL_INITIALES_HEADER_NAME).Column
'On copie tout le modèle dans la nouvelle feuille
formFEModele.Cells.Copy
Ws.Select 'Sheets(nomFE).Select
Application.ActiveSheet.Paste
Application.ActiveWindow.DisplayGridlines = True
Application.ActiveSheet.Cells(i, J).Select
'protection de la feuille générée
ModuleCommons.protectWorksheet (nomFE)
'On ajoute le code de la procédure événementielle "Worksheet_Change" dans la feuille à générée
With Application.ThisWorkbook.VBProject.VBComponents(Ws.CodeName).CodeModule
X = .CountOfLines + 1
.InsertLines X, macro
End With
'ThisWorkbook.VBProject.VBComponents(Ws.CodeName).Name = "nomFE"
End Sub |
Partager