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 :

Créer un Tableau croisé dynamique par VBA


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    james bonde 007
    Inscrit en
    Septembre 2014
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : james bonde 007

    Informations forums :
    Inscription : Septembre 2014
    Messages : 25
    Par défaut Créer un Tableau croisé dynamique par VBA
    Hello !

    Le but de la macro :
    A partir de mon excel en VBA, j'ouvre un explorateur Windows afin d'ouvrir un fichier excel,
    puis créer un TCD (Tableau Croisé Dynamique) qui pioche dans cet excel.

    Voici le code que j'ai fait :

    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
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    56
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    76
        Sheets("Feuil1").Select
        Columns("A:Z").Select
        Selection.Delete Shift:=xlToLeft
     
        Call Suprimer_Liaison
     
        Lien_Fichier = Application.GetOpenFilename("Fichiers Excel (*.xlsm), *.xlsm")
    If Lien_Fichier <> False Then
        Workbooks.Open Filename:=Lien_Fichier
    End If
     
    ActiveWindow.Visible = False
     
        For Z = 1 To 100
            If Left(Right(Lien_Fichier, Z), 1) = "\" Then
                y = Right(Lien_Fichier, Z - 1)
                GoTo 1
            End If
        Next Z
     
    1
     
        For Z = 1 To 100
            If Right(Left(y, Z), 1) = "I" Then
                N°_Affaire = Left(y, Z)
                GoTo 2
            End If
        Next Z
     
    2
     
        For Z = 1 To 100
            If Right(Left(y, Z), 1) = "x" Then
                Nom_Complet = Left(y, Z - 2)
                GoTo 3
            End If
        Next Z
     
    3
     
        n = ActiveSheet.Name
     
        Application.DisplayAlerts = False
        Workbooks(Nom_Complet & ".xlsm").Close
     
        Workbooks("test - V4.xlsm").Connections.Add Nom_Complet, "", _
            Array( _
            "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;Password="""";User ID=Admin;Data Source=Lien_Fichier" _
            , _
            " ;Mode=Share Deny Write;Extended Properties=""HDR=YES;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path" _
            , _
            "="""";Jet OLEDB:Database Password="""";Jet OLEDB:Engine Type=37;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=" _
            , _
            "2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encry" _
            , _
            "pt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=Fals" _
            , _
            "e;Jet OLEDB:Support Complex Data=False;Jet OLEDB:Bypass UserInfo Validation=False" _
            ), Array(n), 3
        ActiveWorkbook.PivotCaches.Create(SourceType:=xlExternal, SourceData:= _
            ActiveWorkbook.Connections(Nom_Complet), Version:= _
            xlPivotTableVersion14).CreatePivotTable TableDestination:="Feuil1!R1C1", _
            TableName:="Tableau croisé dynamique1", DefaultVersion:= _
            xlPivotTableVersion14
        Cells(1, 1).Select
        With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("F7")
            .Orientation = xlRowField
            .Position = 1
        End With
        With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields( _
            N°_Affaire)
            .Orientation = xlPageField
            .Position = 1
        End With
     
        Cells(2, 1).Select
    Mais à
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
      "OLEDB;Provider=Microsoft.ACE.OLEDB.12.0;Password="""";User ID=Admin;Data Source=Lien_Fichier" _
            , _
            " ;Mode=Share Deny Write;Extended Properties=""HDR=YES;"";Jet OLEDB:System database="""";Jet OLEDB:Registry Path" _
            , _
            "="""";Jet OLEDB:Database Password="""";Jet OLEDB:Engine Type=37;Jet OLEDB:Database Locking Mode=0;Jet OLEDB:Global Partial Bulk Ops=" _
            , _
            "2;Jet OLEDB:Global Bulk Transactions=1;Jet OLEDB:New Database Password="""";Jet OLEDB:Create System Database=False;Jet OLEDB:Encry" _
            , _
            "pt Database=False;Jet OLEDB:Don't Copy Locale on Compact=False;Jet OLEDB:Compact Without Replica Repair=False;Jet OLEDB:SFP=Fals" _
            , _
            "e;Jet OLEDB:Support Complex Data=False;Jet OLEDB:Bypass UserInfo Validation=False" _
            ), Array(n), 3
    J'ai l’erreur suivante :
    La requête ne s'est pas exécutée ou la table de la base de donnée n'a pas pu être ouverte.

    Cette erreur arrive dès que dans le code je modifie "Data Source=Lien_Fichier"

    Je ne comprend pas d'où cela viens.

    Merci d'avance pour votre aide.

  2. #2
    Membre averti
    Homme Profil pro
    james bonde 007
    Inscrit en
    Septembre 2014
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : james bonde 007

    Informations forums :
    Inscription : Septembre 2014
    Messages : 25
    Par défaut
    J'ai contourné le problème ainsi :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
        Workbooks("test - V4.xlsm").Connections.AddFromFile _
            Lien_Fichier
        ActiveWorkbook.PivotCaches.Create(SourceType:=xlExternal, SourceData:= _
            ActiveWorkbook.Connections(Nom_Complet), Version:= _
            xlPivotTableVersion14).CreatePivotTable TableDestination:="Feuil1!R1C1", _
            TableName:="Tableau croisé dynamique1", DefaultVersion:= _
            xlPivotTableVersion14
        Cells(1, 1).Select
    Mais cela m'oblige à sélectionner la feuille que je souhaite importer, c'est un peu dommage je trouve.
    Si vous avez des solutions, je suis preneur.

    Merci

  3. #3
    Membre averti
    Homme Profil pro
    james bonde 007
    Inscrit en
    Septembre 2014
    Messages
    25
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : james bonde 007

    Informations forums :
    Inscription : Septembre 2014
    Messages : 25
    Par défaut
    Personne ne sais ou je ne suis pas suffisamment précis ?

Discussions similaires

  1. Créer en TCD à partir d'une base de données évolutive
    Par ti_mouton dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 22/07/2015, 11h42
  2. Création d'une procédure dans une base externe par code
    Par AndréPe dans le forum VBA Access
    Réponses: 1
    Dernier message: 22/07/2007, 10h19
  3. Réponses: 2
    Dernier message: 07/03/2006, 00h31
  4. debit d'une connection ADSL par switch
    Par barrada dans le forum Dépannage et Assistance
    Réponses: 4
    Dernier message: 23/10/2005, 16h20
  5. [Excel] Utiliser une application externe par une macro
    Par thierry2.dlp dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/08/2005, 22h07

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