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

  1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  2. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 772
     
    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
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Bonjour Frank,
      Merci! je ne connaissais pas...
      0
      1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 772 > michel_m Messages postés 18903 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
    2. kprime95
       
      Malheuresement il me dit "erreur de syntaxe".
      0
  3. 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
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 772
       
      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
    2. 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
    3. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 772 > 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
    4. 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
    5. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 772 > 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