« Macros-commandes VBA/Création de Tableau croisé » : différence entre les versions

Contenu supprimé Contenu ajouté
Mepothe (discussion | contributions)
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>
'
 
' 'Cette procédure parcourt l'ensemble des champs d'un TCD afin de leur enlever les sous-totaux s'ils existent
'
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")