IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Macro et source de données pour un TCD


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2015
    Messages
    41
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Ardèche (Rhône Alpes)

    Informations professionnelles :
    Activité : Étudiant
    Secteur : High Tech - Éditeur de logiciels

    Informations forums :
    Inscription : Mai 2015
    Messages : 41
    Par défaut Macro et source de données pour un TCD
    Bonjour,
    Je souhaiterais créer une ou plusieurs macro qui fonctionnerais de la manière suivant :
    Lors de l'ouverture du classeur , il me demande de choisir un fichier.
    Une fois que le fichier est choisi, je voudrais que la 1er feuille soit la source de données de mon TCD.

    Le problème est que je n'arrive pas a choisir ma feuille comme source de données.

    Le fichier sera toujours du même format et il contient le même nom et nombre de colonne.

    La sélection de fichier marche mais j'ai une erreur lors de la création du TCD : "Incompatibilité de type"

    Voici le code que j'utilise :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
     
        Dim fichier_source As Workbook
        Dim plage As Range
        Dim classeur As Workbook
        Dim nom As String
     
       Set classeur = ThisWorkbook
     
           xls = Application.GetOpenFilename("Excel files (*.xlsx), *.xlsx", , "Choisir le fichier source.")
     
     
           If xls <> False Then
             Set fichier_source = Application.Workbooks.Open(xls)
                nom = fichier_source.Name
     
                fichier_source.Activate
     
                Sheets(1).Activate
     
                Dim dl As Long, dc As Long
     
                dl = ActiveSheet.Range("a" & Rows.Count).End(xlUp).Row
                dc = ActiveSheet.Cells(1, Columns.Count).End(xlToLeft).Column
              'Set plage = ActiveSheet.Range(Cells(1, 1), Cells(dl, dc))
                Set plage = ActiveSheet.Range(Cells(1, 1), Cells(dl, dc))
     
                classeur.Activate
     
                      ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
         "[" + nom + "]" + plage, Version:=6). _
            CreatePivotTable TableDestination:="Feuil1!R1C1", TableName:= _
            "Tableau croisé dynamique1", DefaultVersion:=6
        Sheets("Feuil1").Select
        Cells(1, 1).Select
     
     
                fichier_source.Activate
                ActiveWorkbook.Close False
           End If

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    Essayez ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    Private Sub Workbook_Open()
        Dim Fichier_source As Workbook
        Dim Plage As Variant
        Dim Classeur As Workbook
        Dim Nom As String
        Dim Dl As Long, Dc As Long
        Application.ScreenUpdating = False
        Set Classeur = ThisWorkbook
        xls = Application.GetOpenFilename("Excel files (*.xlsx), *.xlsx", , "Choisir le fichier source.")
        If xls <> False Then
            Set Fichier_source = Application.Workbooks.Open(xls)
            Nom = Fichier_source.Name
            Dl = Workbooks(Nom).Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row
            Dc = Workbooks(Nom).Sheets("Feuil1").Cells(1, Columns.Count).End(xlToLeft).Column
            Plage = "[" & Nom & "]Feuil1!R1C1:R" & Dl & "C" & Dc
            Classeur.Activate
            ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
            Plage, Version:=6).CreatePivotTable TableDestination:="Feuil1!R1C1", TableName:= _
            "Tableau croisé dynamique", DefaultVersion:=6
            Workbooks(Nom).Close False
        End If
    End Sub
    Cdlt

Discussions similaires

  1. [XL-2007] Macro pour modifier source de données d'un TCD
    Par Jay29 dans le forum Macros et VBA Excel
    Réponses: 12
    Dernier message: 05/10/2009, 15h21
  2. Réponses: 13
    Dernier message: 04/04/2007, 10h44
  3. Connexion à une source de données pour un objet pivotTable
    Par totocasagrandi dans le forum Access
    Réponses: 2
    Dernier message: 12/01/2007, 10h45
  4. Réponses: 2
    Dernier message: 24/05/2005, 16h35
  5. [EJB2] Sources de données pour EJB
    Par thomy dans le forum Java EE
    Réponses: 4
    Dernier message: 04/06/2003, 15h52

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo