Private Sub UserForm_Initialize()
Dim Liste, i%, n$
Me.Cbx_Création.List = Tables.[Affectation].Value
Liste = WorksheetFunction.Transpose(Me.Cbx_Création.List) 'Liste des affectations réalisées (1 dimension)
'Retirer de la liste les affectations pour lesquelles une feuille existe déjà
On Error Resume Next
For i = UBound(Liste) To LBound(Liste) Step -1
n = "": n = ThisWorkbook.Worksheets(Liste(i)).Name
If n <> "" Then Me.Cbx_Création.RemoveItem i - 1
Next
On Error GoTo 0
End Sub
Private Sub CBn_Quitter_Click()
Unload Me
End Sub
Private Sub CBn_Ajouter_Click()
Dim sh As Worksheet, Nom$, Scl As Slicer, SlcIt As SlicerItem, ListeActif, Mois
If Me.Cbx_Création.ListIndex = -1 Then Exit Sub 'Le nom contenu dans la combo n'est pas une affectation
Nom = Me.Cbx_Création.Text
Application.ScreenUpdating = False
Modèle_TdB.Copy before:=Tables 'Copier le Modèle
Set sh = ActiveSheet
sh.Name = Nom 'Nommer la nouvelle feuille
sh.Shapes("Btn_Nouveau").Delete
With sh.PivotTables("Etat Mensuel")
'Rajouter les champs des valeur du TCD
.AddDataField .PivotFields(Nom & " Nb OT"), "Nb OT", xlSum
.AddDataField .PivotFields(Nom & " Nb OT terminé"), "Nb OT terminé", xlSum
.AddDataField .PivotFields(Nom & " OT restant"), "OT restant", xlSum
'Mettre à jour le segment de choix des mois
Set Slc = .Slicers(1)
Slc.Name = Nom & " Mois"
Slc.SlicerCache.Name = Nom & "_Mois"
'liste des mois actifs (qu'on retrouve dans le tableau "_tb_Entretien" de la feuille Archives
ListeActif = WorksheetFunction.Transpose(Tables.[Périodes_actives].Value)
'On active tous les mois
For Each Mois In ListeActif
Slc.SlicerCache.SlicerItems(Mois).Selected = True
Next
'On désactive ceux qui ne sont pas dans la liste
For Each SlcIt In Slc.SlicerCache.SlicerItems
If UBound(Filter(ListeActif, SlcIt.Name)) = -1 Then SlcIt.Selected = False
Next
End With
'Etiquettes et légende du graphique "Grph_Mensuel"
Set chrt = sh.ChartObjects("Grph_Mensuel").Chart
chrt.ApplyDataLabels 'ajoute toutes les étiquettes
For Each sr In chrt.FullSeriesCollection
'Mise en forme des étiquettes
With sr.DataLabels.Format.Fill
.Visible = msoTrue
.ForeColor.RGB = RGB(255, 255, 255)
.Transparency = 0
.Solid
End With
Next
chrt.SetElement (msoElementLegendBottom) 'ajoute la légende en bas du graphique
'Retirer de la liste de la combo l'affection que l'on vient de traiter
Me.Cbx_Création.RemoveItem (Me.Cbx_Création.ListIndex)
Me.Cbx_Création.Text = ""
Application.ScreenUpdating = True
End Sub
Private Sub Cbx_Création_Change()
'Affichage ou non du bouton Ajouter en fonction du texte de la combo
Select Case Me.Cbx_Création.ListIndex
Case -1
Me.CBn_Ajouter.Visible = False
Case Else
Me.CBn_Ajouter.Visible = True
End Select
End Sub