OVH Cloud OVH Cloud

Modification TCD avec macro VBA

3 réponses
Avatar
francois-paul.j.decloquement
Bonjour,

Je suis sur Excel 97.
J'ai un problème de modification de tableau croisé dynamique à l'aide
d'une macro.
Ce TCD comporte 2 champs en zone PAGE du TCD : "Type de Produit" et
"Dépôt".
Je parle du champ "Type de Produit" e zone PAGE juste pour dire qu'il
existe, mais il n'est pas concerné par mon besoin.

Le but de la macro est de filtrer le champ "Dépôt" sur un dépôt
particulier, de récupérer la valeur totale sur ce dépôt, pour la
recopier ailleurs dans le fichier. Et ainsi de suite pour tous les
dépôts.

En mode enregistrement manuel, cela marche très bien.
Mais dès que je lance l'exécution de la macro, le message d'erreur
suivant apparaît :
"Impossible de définir la propriété _Default de la classe PivotItem"

J'ai déjà de bonnes notions de programmation VBA/Excel97, sauf sur les
TCD, où je débute. Je n'ai jusqu'à présent rien trouvé à ce sujet dans
mes bouquin VBA/Excel, même sur le Walkenbach !

Merci d'avance pour votre aide.

Cordialement,
François-Paul Decloquement

3 réponses

Avatar
AV
Tant qu'à faire une macro mieux vaut ne pas passer par le "parcours" des items
du TCD mais extraire directement à partir de la base de données
Exemple :
Dans une feuille, la BD avec plages nommées "Dépôts" et "Valeurs" (étiquettes
(obligatoires) en ligne 1)
* Ajouter une feuille pour faire le total des valeurs pour chacun des dépôts *

Sub zzz_Extract()
On Error Resume Next
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'suppression/ajout feuille
Sheets("Extract").Delete
Sheets.Add.Name = "Extract"
Application.DisplayAlerts = True
'extraction liste des dépôts
[Dépôts].Offset(-1, 0).Resize([Dépôts].Rows.Count + 1, 1) _
.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=[A1], Unique:=True
'calculs
Dim plg As Range
Set plg = Range("B2:B" & [A65536].End(3).Row)
plg = "=sumproduct((Dépôts¢)*Valeurs)"
plg = plg.Value
'broutilles
[B1] = "Total"
[A:B].EntireColumn.AutoFit
Set plg = Nothing
End Sub

AV qui s'est forcé sur ce coup : déclaration de variable, libération de l'objet,
indentation et commentaires !
Avatar
Denis Michon
Bonjour AV,


"AV qui s'est forcé sur ce coup : déclaration de variable, libération de l'objet,
indentation et commentaires !"

Un grand moment dans l'histoire du MPFE !!!

;-)


Salutations!




"AV" a écrit dans le message de news:blavps$8sj$
Tant qu'à faire une macro mieux vaut ne pas passer par le "parcours" des items
du TCD mais extraire directement à partir de la base de données
Exemple :
Dans une feuille, la BD avec plages nommées "Dépôts" et "Valeurs" (étiquettes
(obligatoires) en ligne 1)
* Ajouter une feuille pour faire le total des valeurs pour chacun des dépôts *

Sub zzz_Extract()
On Error Resume Next
Application.ScreenUpdating = False
Application.DisplayAlerts = False
'suppression/ajout feuille
Sheets("Extract").Delete
Sheets.Add.Name = "Extract"
Application.DisplayAlerts = True
'extraction liste des dépôts
[Dépôts].Offset(-1, 0).Resize([Dépôts].Rows.Count + 1, 1) _
.AdvancedFilter Action:=xlFilterCopy, CopyToRange:=[A1], Unique:=True
'calculs
Dim plg As Range
Set plg = Range("B2:B" & [A65536].End(3).Row)
plg = "=sumproduct((Dépôts¢)*Valeurs)"
plg = plg.Value
'broutilles
[B1] = "Total"
[A:B].EntireColumn.AutoFit
Set plg = Nothing
End Sub

AV qui s'est forcé sur ce coup : déclaration de variable, libération de l'objet,
indentation et commentaires !
Avatar
AV
Un grand moment dans l'histoire du MPFE !!!


Comme tu dis ! ;-))
AV