Macro - TCD à plage variable

N

Nico

Guest
Re-bonjour :)

Suite à la résolution rapide et efficace de mon précédent problème, je me tourne à nouveau vers vous, pour lever le dernier obstacle au bon fonctionnement de mon projet.

Je précise que j'utilise la version 2003 d'Excel. Par conséquent les macros (concernant les TCD) créées sous 2000 ne fonctionnent pas.

Lorsque je crée une macro pour l'élaboration d'un TCD à plage fixe, j'ai ceci :

ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
''Historique relations clients'!R3C1:R44C5').CreatePivotTable TableDestination _
:=''[Projet VBA - 15-12.xls]TCD - Analyse clientèle'!R3C3', TableName:= _
'Tableau croisé dynamique1', DefaultVersion:=xlPivotTableVersion10

Maintenant, pour un TCD à plage variable j'ai tenté ceci:

Range('A3').CurrentRegion.Select
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
Selection).CreatePivotTable TableDestination _
:=''[Projet VBA - 15-12.xls]TCD - Analyse clientèle'!R3C3', TableName:= _
'Tableau croisé dynamique1', DefaultVersion:=xlPivotTableVersion10

Et ceci:

dim lastrow
lastrow = range('A3').end(xldown).row
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
''Historique relations clients'!R3C1:R' & lastrow & 'C5').CreatePivotTable TableDestination _
:=''[Projet VBA - 15-12.xls]TCD - Analyse clientèle'!R3C3', TableName:= _
'Tableau croisé dynamique1', DefaultVersion:=xlPivotTableVersion10

Dans les 2 derniers cas j'ai droit au message d'erreur : 'Erreur d'éxécution '1004'. Impossible de lire la propriété PivotTables de la classe WorkSheet.'

Pouvez-vous m'aider? :)
 

myDearFriend!

XLDnaute Barbatruc
Bonjour Nico, le Forum,

Je ne suis pas vraiment un spécialiste en TCD (loin de là !), mais je tenterais bien quelque chose comme ça :

Dim Plage As Range
Dim L As Long
      With ActiveWorkbook.Sheets('Historique relations clients')
            L = .Range('A65536').End(xlUp).Row
            Set Plage = .Range(.Cells(3, 1), .Cells(L, 5))
      End With
      ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
            Plage).CreatePivotTable TableDestination:= _
            ''[Projet VBA - 15-12.xls]TCD - Analyse clientèle'!R3C3', TableName:= _
            'Tableau croisé dynamique1', DefaultVersion:=xlPivotTableVersion10

Bonnes fêtes de fin d'année.
 

Luki

XLDnaute Accro
Bonsoir Nico, salut Didier,

J'aiu géré ce genre de problèmes ( sous 2000) en travaillant avec une plage source variable nommée.

Soit ta plage source est redimensionnée autaomatiquement par l'insertion de lignes ou de colonnes, dans ce cas, pas de soucis, ton tcd devrait marcher:

... SourceData:=range('MaSourceDeDonnées')

soit, par tu ajoutes des lignes à la suite de ta plage nommée.
Dans ce cas,il faut la redéfinir avant de générer ton TCD. ( par une methode de ton choix) et la faire renommer par le code:
Par ex:
set maplage= range('MaSourceDeDonnées').currentRegion
Maplage.name='MaSourceDeDonnées'.
puis de créer ton TCD.

N'hésites pas ....
 

Luki

XLDnaute Accro
Re, Nico

Donc, si le debogueur s'arrête plus loin, c'est qu'une partie du problème est résolu!

Essayons de voir la suite,. Peux tu zipper un bout de fichier et de code? si c'est possible, ce serait plus simple, ou tu du moins, coller dans le post un bout de code un peu pus long que la ligne qui plante( tout le bloc 'with' serait le bienvenu)

A+
 
N

Nico

Guest
Merci pour ton aide ;)

J'ai joint une partie de mon projet, avec la macro en question. [file name=Exemple_20051227212508.zip size=10843]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Exemple_20051227212508.zip[/file]
 

Pièces jointes

  • Exemple_20051227212508.zip
    10.6 KB · Affichages: 170

Dan

XLDnaute Barbatruc
Bonsoir Nico,

en fait tes macros ne fonctionnent pas à cause du Pivot Cache que tu introduit dans ta macro.

Peux tu me dire si c'est le fichier que tu as posté qui est valable et si oui, me donner un nouveau fichier avec ce que tu attends comme résultat dans le TCD.

A te lire.

;)
 

Luki

XLDnaute Accro
Re Nico, salut Dan, je m'étonnais de ne pas te voir passer sur ce fil! lol!

Je suis sous 2000, donc deboguage 2003 un peu long... Mais en regardant tout ça, la majorité des problèmes semblent venir du fait que l'enregistreur de macros ne s'occupe pas de déclarer les objets et les feuilles, il travaille sur les feuilles activées par l'utilisateur, donc problèmes à l'exécution.

Je suis en train de corriger le code en nettoyant un peu tout ça. Par contre je risque de buter sur certains trucs because version 2003.

A +
 

Dan

XLDnaute Barbatruc
Bonsoir Luki,

Le pb ne vient pas de cela je crois mais plutot de la manière dont est faite la macro.

Pour moi cette macro ne saurait fonctionner; De plus, l'instruction sur laquelle bute cette macro est normal dans le sens où le Chr10 n'est pas accepté.

Raison pour laquelle je demandais à Nico de remettre son fichier avec le TCD réalisé sans macro.

;)
 
N

Nico

Guest
J'avoue ne pas encore être très familiarisé avec le langage VB, et à vrai dire, j'ai utilisé l'enregistreur de macro intégré à Excel pour construire mon TCD.

Voici ci-joint le TCD que je souhaite obtenir, avec pour plage variable les données de l'historique relations clients.

Merci d'avance ;) [file name=Exemple2_20051227231627.zip size=11757]http://www.excel-downloads.com/components/com_simpleboard/uploaded/files/Exemple2_20051227231627.zip[/file]
 

Pièces jointes

  • Exemple2_20051227231627.zip
    11.5 KB · Affichages: 205
N

Nico

Guest
Te presse pas, ça peut tout à fait attendre demain ;)

Pour ce qui est de la présentation, j'ai forcément besoin des totaux des contacts commerciaux, des indicents de paiement, des demandes de renégociation de prêt et des résiliations de contrat, le tout par client.

Le but étant de calculer des scores individuels en pondérant les contacts commerciaux, les incidents de paiement etc...

Merci beaucoup ;)
 

Discussions similaires

Réponses
1
Affichages
514

Statistiques des forums

Discussions
312 081
Messages
2 085 161
Membres
102 800
dernier inscrit
NOTZ