SourceData Tableaux Croisé Dynamique

Résolu
kprime95 -  
 kprime95 -
Bonjour à tous, je vous explique mon problème.

J'aimerai faire un TCD à partir d'un worksheet dont je ne connais pas le nom a l'avance, je m'explique j'ai un bouton qui me demande quel fichier excel je veux ouvrir, je clique sur le fichier le fichier demander s'ouvre les données sortent et j'aimerai qu'a partir de là le TCD se crée tout seul. Voilà le code pour l'instant

Public Sub Outbound()
   
   '*************************************
   'On choisit le fichier que l'on veut                  *
   '*************************************
    
Dim wbSource, wbFichierUsager As Workbook
Dim strFileName As String
Dim intChoice As Integer

Set wbFichierUsager = ThisWorkbook


Application.FileDialog(msoFileDialogOpen).AllowMultiSelect = False
intChoice = Application.FileDialog(msoFileDialogOpen).Show
If intChoice <> 0 Then
strFileName = Application.FileDialog(msoFileDialogOpen).SelectedItems(1)
Workbooks.Open strFileName
Set wbSource = ActiveWorkbook
Else
 MsgBox "La procédure est annulée car aucun fichier n'a été entré."
    Exit Sub
End If

Application.ScreenUpdating = False
  

  Dim DernLigne As Long
    DernLigne = Range("A" & Rows.Count).End(xlUp).Row

Sheets.Add
     ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "strFileName!R1C1:R" & DernLigne & "C16", Version:=xlPivotTableVersion15). _
        CreatePivotTable TableDestination:="Feuil1!R3C1", TableName:= _
        "Tableau croisé dynamique", DefaultVersion:=xlPivotTableVersion15
 

  Application.ScreenUpdating = True


Inutile d'aller plus loin le problème vient du SourceData. Que mettre dans celui ci ?

Bien à vous

V.B.

3 réponses

michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Bonjour
sur quelle ligne la procédure s'arr^te elle ?
quel est le message ?
qu'appelles tu sourcedata ?

Merci d'^tre clair et précis

peut-^tre un indice:
les déclarations de variables sont fausses
tel quel wbsource est un variant et non un workbook
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Bonjour,

Salut Michel,

SourceData:= _
"strFileName!R1C1:R"

Or strFileName est une variable, donc à sortir des guillemets :
SourceData:= _
        & strFileName & "!R1C1:R"


Mais bon, ça ne fonctionnera pas davantage car :
strFileName = nom du classeur
or SourceDate:= NomFeuille!RmachinCtruc
0
michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention   3 314
 
Bonjour Frank,
Merci! je ne connaissais pas...
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761 > michel_m Messages postés 16602 Date d'inscription   Statut Contributeur Dernière intervention  
 
Moi non plus...
Je n'aime pas créer des TCD par macro...

Bonne journée
0
kprime95
 
Malheuresement il me dit "erreur de syntaxe".
0
kprime95
 
Bonjour, merci à vous pour vos réponses. Excusez moi pour le manque de clarté de mon message.

En attendant vos réponses j'ai "triché" voici ce que j'ai écris et qui fonctionne plutôt correctement.

ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= "R1C1:R" & DernLigne & "C16", Version:=xlPivotTableVersion15)

Apparemment je n'ai besoin de préciser le nom de la feuille sur lequel je travaille bien que ça ne soit pas très rigoureux cela fonctionne.
Je précise que le nom de la feuille est strictement équivalent au nom du classeur.

Je vais tester la solution de pijaku.

Bien à vous
V.B.
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Je précise que le nom de la feuille est strictement équivalent au nom du classeur.
Il n'y a pas d'extension dans strFileName?
Genre .xls? ou .xlsx?
0
kprime95
 
A la base c'est un fichier .csv que je retraite de a à z à l'aide de ma macro.

Sauf que je souhaiterai pouvoir choisir le fichier que j'ai envie de traiter plutôt que de devoir l'ouvrir a côté et appliquer la macro. Donc je ne sais pas si le strFileName possède une extension ... Surement le .csv ?
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761 > kprime95
 
En supposant que ta feuille n'a pas comme nom : machin.csv, je penses que strFileName est différent du nom de ta feuille.
Mais bon l'important étant que cela fonctionne.

Il convient de préciser le nom de la feuille pour le cas ou celle-ci ne serait pas la feuille active.
Si tu es sur à 100% qu'à chaque lancement de ta macro elle est active, nul besoin de le préciser.
0
kprime95
 
Je pense que oui à chaque itération de la macro le TCD se situera dans la feuille active puisque je fais un Sheets.add juste avant ?
A moins que je me trompe je ne suis pas du tout expert en VBA
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761 > kprime95
 
Tu ne te trompes pas.
Sheets.Add te place sur la feuille que tu viens de créer.
Donc...
Problème résolu?
0