erreur source de données d'1 tableau dynamique

L

loupisse

Guest
Bonjour,

J'ai fait une macro pour créer un tableau croisé dans lequel l'uilisateur spécifique l'onglet dans lequel se trouve les données.

Lors de l'exécution, je retrouve bien le nom de la feuille (qui est activée) mais un message d'erreur me dit qu'il est impossible de trouver la source des données.

Je joins le code qui me pose problème

Dim onglet As String

onglet = ActiveSheet.Name

ActiveSheet.PivotTableWizard SourceType:=xlDatabase, SourceData:= 'onglet &!C1:C26', TableDestination:='', TableName:= 'Tableau croisé dynamique'

Merci de m'aider pour faire fonctionner la macro

Cordialement
 

Dan

XLDnaute Barbatruc
Bonjour,

Dans ton code, à cet endroit -> SourceData:= 'onglet &!C1:C26'
tu devrais avoir SourceData:= 'onglet &!RxxC1:RyyC26'

avec :
Rxx : la première ligne avec les titres de la base de données
C1 : la première colonne de la base de données
Ryy : la dernière ligne de la base de données
C26 : la colonne 26 de la base de données

Si pb n'hésite pas


;)
 

Dan

XLDnaute Barbatruc
Re,

Tu peux m'expliquer ce que c'est 'onglet' ? c'est le nom d'une feuille que tu crées ou le nom d'une feuille existante ?

dis moi aussi en faisant défiler par F8 où ta macro s'arrete.

;)

Message édité par: Dan, à: 27/09/2005 00:12
 
L

loupisse

Guest
Bonjour,

1 - Dans onglet, je récupère le nom d'une feuille existante que l'utilisateur spécifie au préalable dans une fenêtre.
Le tableau dynamique doit être créé à partir des données de cette feuille.

2 - Quand je fais du 'Pas à pas', la macro s'arrête sur l'instruction

ActiveSheet.PivotTableWizard SourceType:=xlDatabase, SourceData:= _
'onglet &!R1C1:R90C26', TableDestination:='', TableName:= _
'Tableau croisé dynamique'

Le message affiché est le suivant

Erreur d'exécution '1004'
Impossible d'ouvrir le fichier source du tableau croisé dynamique 'onglet &'

Merci encore.
 

Dan

XLDnaute Barbatruc
Re,

Ce que je comprends :

- Tu as plusieures feuilles à partir desquelles tu peux créer un TCD
- L'utilisateur en choisit une qui devient 'onglet' pour la création du TCD
- La plage dans chaque feuille est toujours identique : soit de R1C1 à R90C26

Si c'est cela corrige ta macro comme suit :

Code:
Dim onglet As String 
onglet = ActiveSheet.Name
ActiveSheet.PivotTableWizard SourceType:=xlDatabase, SourceData:= _
onglet & '!R1C1:R90C26', TableDestination:='', TableName:= _
'Tableau croisé dynamique'

;)
 

Dan

XLDnaute Barbatruc
Re,

C'est tout à fait normal puisque tu déclares une variable que tu vas définir dans la macro.

R1C1.... est une plage à placer entre ''
Onglet peut changer pusiqu'il est le nom de la feuille active. Tu ne peux donc placer cela entre guillemets.
Le & fait la liaison entre la variable et le range considéré.

VBA ne comprend donc pas si tu mélanges une variable avec un range en plaçant le tout entre guillemets.

Par contre si tu utilises toujours la même feuille source, tu peux mettre le tout ensemble. Exemple : si ta feuille s'appellait 'onglet' cela donnerait : 'onglet!R1C1:R90C26'

Espérant que tu as compris.

;)
 
L

loupisse

Guest
Bien compris

je partage aussi l'explication car quand je mettais le nom de l'onglet en dur, çà marchait.

Merci encore, je serai un jour experte Excel en rencontrant des personnes comme toi.

A la prochaine quand je m'essayerai sur des choses plus compliquées.
 

Discussions similaires

Réponses
1
Affichages
528

Statistiques des forums

Discussions
312 321
Messages
2 087 229
Membres
103 497
dernier inscrit
JP9231