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
| Call filtreTCD("MARGES CAF SUR CLOTURES", "BonusMalus", "statut du chantier", "clôturé", "Bonus ou malus sur affaire clôturée", "", "chargé d'affaire")
Sub filtreTCD(nomFeuilleTCD As String, nomTCD As String, nomChamps1 As String, filtre1 As String, nomChamps2 As String, filtre2 As String, cacheSsTotaux As String) ' Mise en forme des TCD
Dim i As Integer
Dim x As String
Dim plageDonnees As Range
Dim nombreLigneDonnees As Long
Dim nomFeuilleDonnees As String
Dim j As Long
Dim k As Long
Sheets(nomFeuilleTCD).Activate
If nomChamps1 <> "" Then
ActiveSheet.PivotTables(nomTCD).PivotFields(nomChamps1).ClearAllFilters ' Supprime tous les précédents filtres
ActiveSheet.PivotTables(nomTCD).PivotFields(nomChamps1) _
.EnableMultiplePageItems = True
With ActiveSheet.PivotTables(nomTCD).PivotFields(nomChamps1) ' Filtre selon le champs défini
If filtre1 <> "" Then
.PivotItems(filtre1).Visible = True ' TCD Filtré sur les cellules "Encours"
End If
For j = 1 To .PivotItems.Count
If .PivotItems(j).Value = "0" Or .PivotItems(j).Value = "(Vide)" Then
.PivotItems(j).Visible = False ' TCD Filtré sur les cellules à 0.00
End If
Next j
End With
End If
If nomChamps2 <> "" Then
'ActiveSheet.PivotTables(nomTCD).PivotFields(nomChamps2).ClearAllFilters ' Supprime tous les précédents filtres
ActiveSheet.PivotTables(nomTCD).PivotFields(nomChamps2) _
.EnableMultiplePageItems = True
With ActiveSheet.PivotTables(nomTCD).PivotFields(nomChamps2) ' Filtre selon le champs défini
If filtre2 <> "" Then
.PivotItems(filtre2).Visible = True
End If
For k = 1 To .PivotItems.Count
If .PivotItems(k).Value = "0" Or .PivotItems(k).Value = "(Vide)" Then
.PivotItems(k).Visible = False ' TCD Filtré sur les cellules à 0.00
End If
Next k
End With
End If
If cacheSsTotaux <> "" Then
ActiveSheet.PivotTables(nomTCD).PivotFields(cacheSsTotaux).ShowDetail = False ' N'affiche que les sous-totaux
End If
nomFeuilleDonnees = "données traitées"
Sheets("extraction").Select ' Compteur de lignes de données dans feuille extraction
Range("A1").Select
nombreLigneDonnees = Range("A1", Selection.End(xlDown)).Cells.Count ' Compte le nombre de ligne ligne de la plage de données
Sheets(nomFeuilleDonnees).Select ' Compteur de lignes de données dans feuille extraction
Range("A1").Select
Set plageDonnees = Worksheets(nomFeuilleDonnees).Range(Cells(1, 1), Cells(nombreLigneDonnees, 65)) ' Selection de la plage source presente sur l'onglet "données traitées"
Sheets(nomFeuilleTCD).Activate
Sheets(nomFeuilleTCD).Select
' Modification de la plage de données dynamiquement
ActiveSheet.PivotTables(nomTCD).ChangePivotCache _
ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:=plageDonnees, Version:=xlPivotTableVersion14)
End Sub |
Partager