SourceData Tableaux Croisé Dynamique

Résolu/Fermé
kprime95 - Modifié par pijaku le 4/06/2015 à 09:30
 kprime95 - 4 juin 2015 à 15:45
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 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
4 juin 2015 à 08:29
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 jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
4 juin 2015 à 09:32
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 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
4 juin 2015 à 10:18
Bonjour Frank,
Merci! je ne connaissais pas...
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744 > michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023
4 juin 2015 à 10:30
Moi non plus...
Je n'aime pas créer des TCD par macro...

Bonne journée
0
Malheuresement il me dit "erreur de syntaxe".
0
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 jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744
4 juin 2015 à 11:42
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
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 jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744 > kprime95
4 juin 2015 à 12:16
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
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 jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 744 > kprime95
4 juin 2015 à 12:36
Tu ne te trompes pas.
Sheets.Add te place sur la feuille que tu viens de créer.
Donc...
Problème résolu?
0