« Macros-commandes VBA/Création de Tableau croisé » : différence entre les versions
Contenu supprimé Contenu ajouté
mise en forme de code VBA |
|||
Ligne 195 :
<source lang=vb>
Sub CREERTCD()
'
' CREERTCD Macro
'
' Sélection des données
Sheets("BASE DE DONNEES").Select
Columns("A:D").Select
' Création du TCD
Sheets.Add
ActiveWorkbook.Worksheets("ACTUALISER TCD").PivotTables( _
"Tableau croisé dynamique7").PivotCache.CreatePivotTable TableDestination:= _
"Feuil1!L3C1", TableName:="Tableau croisé dynamique1", DefaultVersion:= _
xlPivotTableVersion12
Sheets("Feuil1").Select
Cells(3, 1).Select
' Actualiser
Range("C9").Select
ActiveSheet.PivotTables("Tableau croisé dynamique4").PivotCache.Refresh
Ligne 234 ⟶ 223 :
<source lang=vb>
ActiveWorkbook.Worksheets("ACTUALISER TCD").PivotTables( _
"Tableau croisé dynamique7").PivotCache.CreatePivotTable TableDestination:= _
"Feuil1!L3C1", TableName:="Tableau croisé dynamique1", DefaultVersion:= _
xlPivotTableVersion12
</source>
Le problème est que nous spécifions la feuille de destination et également la plage du tableau croisé dynamique dans l’écriture. La conséquence de ce type d’écriture est que la macro n’est pas dynamique. Ce qui explique que la macro ne puisse s’exécuter.
Ligne 256 ⟶ 241 :
'''''5e étape : L’écriture finale pour automatiser la création d’un TCD'''''
Ligne 262 ⟶ 246 :
<source lang=vb>
Sub CREERTCD()
'
' CREERTCD Macro
'
' Sélection des données
Sheets("BASE DE DONNEES").Select
Columns("A:D").Select
' Création du TCD
ActiveWorkbook.Worksheets("ACTUALISER TCD").PivotTables( _
"Tableau croisé dynamique7").PivotCache.CreatePivotTable TableDestination:= _
"", TableName:="Tableau croisé dynamique4", DefaultVersion:= _
xlPivotTableVersion12
' Actualiser
Range("C9").Select
ActiveSheet.PivotTables("Tableau croisé dynamique4").PivotCache.Refresh
End Sub
</source>
{{Remarque|contenu=Il est possible de modifier les intitulés des colonnes uniquement lorsque les champs ne sont pas définis dans la macro.}}
*Avec contrainte des champs :
<source lang=vb>
Sub CREERTCDCHAMPS()
'
' CREERTCDCHAMPS Macro
'
' Sélection des données
Sheets("BASE DE DONNEES").Select
Columns("A:D").Select
' Création du TCD
ActiveWorkbook.Worksheets("ACTUALISER TCD").PivotTables( _
"Tableau croisé dynamique7").PivotCache.CreatePivotTable TableDestination:= _
"", TableName:="Tableau croisé dynamique3", DefaultVersion:= _
xlPivotTableVersion12
' Choix des champs
ActiveSheet.PivotTables("Tableau croisé dynamique3").AddDataField ActiveSheet. _
PivotTables("Tableau croisé dynamique3").PivotFields("Nom client"), _
"Nombre de Nom client", xlCount
With ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields( _
"Motif de résiliation")
.Orientation = xlRowField
.Position = 1
End With
' Filtrer
With ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotFields( _
"Motif de résiliation")
.PivotItems("(blank)").Visible = False
End With
' Actualiser
Range("B5").Select
ActiveSheet.PivotTables("Tableau croisé dynamique3").PivotCache.Refresh
Ligne 586 ⟶ 535 :
<source lang=vb>
'
'
'
Sub EnleverSousTotauxDuTCD()
Ligne 594 ⟶ 543 :
Dim pvfTCD As PivotField
ThisWorkbook.Sheets("TCD automatique").Select
Set pvtTCD = ActiveSheet.PivotTables("TCD_Adhérents")
For Each pvfTCD In pvtTCD.PivotFields
If pvfTCD.Subtotals(1) Then pvfTCD.Subtotals(1) = False
Next pvfTCD
Ligne 610 ⟶ 557 :
<source lang=vb>
'
'Cette procédure paramètre les sous-totaux : n'applique des sous-totaux qu'aux champs définis
'
Sub InitialiserSousTotauxDuTCD()
Ligne 618 ⟶ 566 :
ThisWorkbook.Sheets("TCD automatique").Select
Set pvtTCD = ActiveSheet.PivotTables("TCD_Adhérents")
For Each pvfTCD In pvtTCD.PivotFields
'Seuls les champs "Age" et "Catégorie" auront l’attribut subtotals activé
Select Case pvfTCD.Name
Ligne 655 ⟶ 601 :
' Défini le TCD sur lequel on souhaite récupérer la valeur
Set pvtTCD = ActiveSheet.PivotTables("TCD_Adhérents")
' Exemple 1 : Cette procédure affiche la valeur de la synthèse "Cotisations" pour l'élément "A" du champ "Catégorie" grâce à la méthode GetPivotData.
' Récupération de la valeur du champs "Cotisation" pour la ligne "Catégorie A" =>> Récupère le total de la ligne.
Set rngPlage = pvtTCD.GetPivotData("Cotisation", "Catégorie", "A")
|