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 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 144 145 146 147 148 149 150 151
| ' on attaque ici la mise en place des pilotes de données
' je vais expliquer la première mise en place de façon très détaillé
' les autres codes sont extremement ressemblant, la seule chose qui change est le nom de la feuille où l'on met le tableau dynamique croisé
' et le nom du paramètre pour les trois derniers derniers codes
Sub pilotededonneejour()
Dim ShResultatJ As Worksheet 'raccourci pour la feuille d'insertion du TDC (tableau croisé dynamique)
Dim ShTemp1 As Worksheet ' ------------------------ donnée temporaire 1
Dim ShTemp2 As Worksheet ' ------------------------ tempoper
Dim ShTemp3 As Worksheet ' ------------------------ tempanes
Dim nombredeligneTemp1 As Long 'nombre de ligne de la feuille donnée temporaire 1
Dim nombredeligneTemp2 As Long '----------------------------- tempoper
Dim nombredeligneTemp3 As Long '----------------------------- tempanes
'met en place les raccourcis feuilles
Set ShResultatJ = Worksheets("Résultat par jour")
Set ShTemp1 = Worksheets("donnée temporaire 1")
Set ShTemp2 = Worksheets("tempoper")
Set ShTemp3 = Worksheets("tempanes")
'desactiver le calcul auto, le screen updating
Application.ScreenUpdating = False
Application.Calculation = xlManual
'calcul le nombre de ligne
ShTemp1.Activate
nombredeligneTemp1 = ShTemp1.Range("A1").End(xlDown).Row
ShTemp2.Activate
nombredeligneTemp2 = ShTemp2.Range("A1").End(xlDown).Row
ShTemp3.Activate
nombredeligneTemp3 = ShTemp3.Range("A1").End(xlDown).Row
'mise en place du premier tableau dynamique dans la feuille résultat par jour
ShTemp1.Select 'selectionne la feuille donnee temporaire 1
Range("A1").Select 'selectionne la cellule A1 de la feuille donnee temporaire (marche parfois pas en une étape)
'explication des lignes suivantes:
' - << ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, >>: commun à tous
'
' - << SourceData:="donnée temporaire 1!R1C1:R" & nombredeligneTemp1 & "C26" >>:
' => indique la plage utilisé pour la création des TDC, deux cas: ou - feuille donnee temporaire 1
' ou - feuille tempoper
' ou - feuille tempanes
' => la feuille donnee temporaire 1 est utilisé pour la création des tableaux 1 à 3
' => la feuille tempoper est utilisé pour la création du tableau 4
' => la feuille tempanes est utilisé pour la création du tableau 5
'
' - << Version:=xlPivotTableVersion10). >>: commun à tous
'
' - << CreatePivotTable TableDestination:=ShResultatJ.Range("A1") >>:
' => indique la destination du tableau dynamique: ici on va inserer le tableau dans la feuille resultat par jour cellule A1
'
' => la cellule d'insertion est très importante, deux tableaux ne peuvent pas se chevaucher,
' elle varie à chaque création de tableau du nombre de colonne du TDC plus une colonne
'
' => le nom du tableau d'insertion, ici ShResultatJ, varie dans chacunes des six procedures de création
' première: feuille résultat par jour
' seconde: feuille résultat par semaine
' troisième: feuille résultat par période
' quatrième: feuille résultat par jour & codsal
' ...
'
' - << TableName:="resultat1" >> : nom du tableau d'insertion, varie de "resultat1" à "resultat5"
' => deux tableaux ne peuvent pas avoir le même nom dans la même feuille
'
' - << DefaultVersion:=xlPivotTableVersion10 >>: commun à tous
ActiveWorkbook.PivotCaches.create(SourceType:=xlDatabase, SourceData:= _
"donnée temporaire 1!R1C1:R" & nombredeligneTemp1 & "C26"). _
CreatePivotTable TableDestination:=ShResultatJ.Range("A1"), TableName:= _
"resultat1", DefaultVersion:=xlPivotTableVersion10
ShResultatJ.Select
Cells(1, 1).Select
ActiveWorkbook.ShowPivotTableFieldList = True
' definit les paramètres généraux du TDC crée, ici resultat1
With ShResultatJ.PivotTables("resultat1")
.ColumnGrand = False ' n'affiche pas les totaux globaux pour les colonnes du rapport dans le TDC
.DisplayErrorString = True '
.RowGrand = False ' n'affiche pas les totaux globaux pour les lignes du rapport dans le TDC
End With
' définit le premier paramètre de tri
' => pivotfiels("uf_prod")
' donc, ici uf_prod
With ShResultatJ.PivotTables("resultat1").PivotFields("uf_prod")
.Orientation = xlRowField 'declare un tri par colonne
.Position = 1 'declare l'indice de tri, ici, c'est le premier paramètre, on va trier d'abord par uf_prod, puis par le .position = 2
End With
'definit les paramètres du tri uf_prod
ShResultatJ.PivotTables("resultat1").PivotFields("uf_prod").Subtotals = Array _
(False, False, False, False, False, False, False, False, False, False, False, False)
'pareil que le paramètre précedente
With ShResultatJ.PivotTables("resultat1").PivotFields("date_interv")
.Orientation = xlRowField
.Position = 2
End With
ShResultatJ.PivotTables("resultat1").PivotFields("date_interv").Subtotals = _
Array(False, False, False, False, False, False, False, False, False, False, False, False)
'cette partie insère les données à trier
'assez simple à comprendre
' => ShResultatJ.PivotTables("resultat1").AddDataField ShResultatJ.PivotTables("resultat1").PivotFields("hfin - heb5"):
' => ajoute une donnée à trier au TDC
' => ici, ajoute dans le TDC resultat1 la colonne :"hfin -heb5"
' => caption: renomme la ligne, sert à expliquer le résultat
' => function: fonction effectuée sur les données
' => numberformat: indique le format d'affichage du résultat
ShResultatJ.PivotTables("resultat1").AddDataField ShResultatJ.PivotTables("resultat1").PivotFields("hfin - heb5"), "Count of hfin - heb5", xlCount
ShResultatJ.PivotTables("resultat1").PivotFields("Count of hfin - heb5"). _
Caption = "nombre d'opération dans la journée pour l'uf_prod"
ShResultatJ.PivotTables("resultat1").AddDataField ShResultatJ.PivotTables("resultat1").PivotFields("hfin - heb6"), "Count of hfin - heb6", xlCount
With ShResultatJ.PivotTables("resultat1").PivotFields("Count of hfin - heb6")
.Caption = "nombre de temps chirugical utilisable pour cette journée"
.Function = xlCountNums
End With
ShResultatJ.PivotTables("resultat1").AddDataField ShResultatJ.PivotTables("resultat1").PivotFields("hfin - heb"), "Count of hfin - heb", xlCount
With ShResultatJ.PivotTables("resultat1").PivotFields("Count of hfin - heb")
.Caption = "moyenne des temps chirugicaux dans la journée par uf_prod"
.Function = xlAverage
.NumberFormat = "h:mm;@"
End With
ShResultatJ.PivotTables("resultat1").AddDataField ShResultatJ.PivotTables("resultat1").PivotFields("hfin - heb2"), "Count of hfin - heb2", xlCount
With ShResultatJ.PivotTables("resultat1").PivotFields("Count of hfin - heb2")
.Caption = "minimun des temps chirugicaux dans la journée par uf_prod"
.Function = xlMin
.NumberFormat = "h:mm;@"
End With
ShResultatJ.PivotTables("resultat1").AddDataField ShResultatJ.PivotTables("resultat1").PivotFields("hfin - heb3"), "Count of hfin - heb3", xlCount
With ShResultatJ.PivotTables("resultat1").PivotFields("Count of hfin - heb3")
.Caption = "maximun des temps chirugicaux dans la journée par uf_prod"
.Function = xlMax
.NumberFormat = "h:mm;@"
End With
ShResultatJ.PivotTables("resultat1").AddDataField ShResultatJ.PivotTables("resultat1").PivotFields("hfin - heb4"), "Count of hfin - heb4", xlCount
With ShResultatJ.PivotTables("resultat1").PivotFields("Count of hfin - heb4")
.Caption = "ecart-type des temps chirugicaux dans la journée par uf_prod"
.Function = xlStDev
.NumberFormat = "h:mm;@"
End With |
Partager