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 vba tableau croisé dynamique


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 12
    Par défaut Macro vba tableau croisé dynamique
    Bonjour à tous !

    Je rencontre un problème actuellement au boulot. Je récupère le programme de quelqu'un qui n'est plus là actuellement. Son programme "importe" une base de données (excel) existante et placée dans le même dossier que le fichier macro et il sort, à l'aide boutons (thématiques on va dire), plusieurs tableaux croisés dynamiques.
    Je connais un peu le langage vba mais pas bien la construction de tcd.


    Là où je rencontre un problème, c'est qu'il m'affiche un bug :
    "Erreur d'exécution '13' :

    Incompatibilité de type"

    pour la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set ptCache = ActiveWorkbook.PivotCaches.Create(xlDatabase, rngData, 4)
    (je vais poser le code un peu plus bas)

    Je précise que le programme pour la base de données de l'année précédente et que celle de cette année (celle qui ne marche pas) est construite exactement pareil et selon les demandes du programme (même nombre et non de variable, NR pour valeur manquantes, ...). Cette année compte 2 observations en plus.

    Enfin bref, j'arrive à me débrouiller habituellement mais là je suis un peu perdu.



    Le début du code :

    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
    Option Explicit
    Dim wsData As Worksheet, wsPT As Worksheet
    Dim rngData As Range
    Dim ptCache As PivotCache
    Dim pt As PivotTable
    Dim NomTable As String
     
    ' TCDs sur la page Généralité : Les informations générales...
     
    Sub Generalite_Bouton2_Cliquer()
     
       Worksheets("Données1").Visible = True
       Application.DisplayAlerts = False
       Worksheets("Generalite").Visible = True
     
       Application.ScreenUpdating = False
     
        'Set pt = Nothing
        'Set ptCache = Nothing
        'Set rngData = Nothing
        'Set wsPT = Nothing
        'Set wsData = Nothing
     
        Set wsData = Worksheets("Données1")
        Set rngData = wsData.Cells(1).CurrentRegion
        Set wsPT = Worksheets("Generalite")
     
        'Suppression de tous les TCD existants dans la feuille
     
       For Each pt In wsPT.PivotTables
            pt.TableRange2.Clear
        Next pt
     
     
        'création du TCD
     With wsPT
     
        Set ptCache = ActiveWorkbook.PivotCaches.Create(xlDatabase, rngData, 4)
     
         With Sheets("Generalite").Activate
            Range("B1") = "Tableaux croisés dynamiques concernant les informations générales sur les diplômés"
            Range("B1").Font.Size = 26
            Range("B1").Font.Italic = True
            Range("B1").Font.Bold = True
            Range("B1").Font.Name = "Times New Roman"
            Range("B1").Font.Underline = xlUnderlineStyleSingle
          End With
     
        Set pt = ptCache.CreatePivotTable(wsPT.Range("B12"), "TCD_1", , 4)
     
        With Sheets("Generalite").Activate
            Range("B10") = "Diplômés selon le genre "
            Range("B10").Font.Size = 18
            Range("B10").Font.Italic = True
            Range("B10").Font.Name = "Arial"
          End With

    Le code continue en incluant les TCDs. N’hésitez pas à me poser d'autres questions car je me doute que je ne vous ait pas fourni toutes les explications.

  2. #2
    Membre expérimenté
    Avatar de MolikDLuffy
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2017
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2017
    Messages : 158
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    j'aimerais savoir sur quelle ligne le message d'erreur 13 apparaît?

    Essaye de cliquer sur débogage en faisant F8 (pas à pas) afin de voir la ligne qui beug

    PS : je te conseille d'utiliser la BALISE # pour le codage

  3. #3
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 12
    Par défaut
    Bonjour,

    Je vous remercie pour votre aide.

    Il s'agit de la ligne que j'ai mis en rouge et gras
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set ptCache = ActiveWorkbook.PivotCaches.Create(xlDatabase, rngData, 4)
    Le code avec la balise :

    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
    Option Explicit
    Dim wsData As Worksheet, wsPT As Worksheet
    Dim rngData As Range
    Dim ptCache As PivotCache
    Dim pt As PivotTable
    Dim NomTable As String
     
    ' TCDs sur la page Généralité : Les informations générales...
     
    Sub Generalite_Bouton2_Cliquer()
     
    Worksheets("Données1").Visible = True
    Application.DisplayAlerts = False
    Worksheets("Generalite").Visible = True
     
    Application.ScreenUpdating = False
     
    'Set pt = Nothing
    'Set ptCache = Nothing
    'Set rngData = Nothing
    'Set wsPT = Nothing
    'Set wsData = Nothing
     
    Set wsData = Worksheets("Données1")
    Set rngData = wsData.Cells(1).CurrentRegion
    Set wsPT = Worksheets("Generalite")
     
    'Suppression de tous les TCD existants dans la feuille
     
    For Each pt In wsPT.PivotTables
    pt.TableRange2.Clear
    Next pt
     
     
    'création du TCD
    With wsPT
     
    Set ptCache = ActiveWorkbook.PivotCaches.Create(xlDatabase, rngData, 4)
     
    With Sheets("Generalite").Activate
    Range("B1") = "Tableaux croisés dynamiques concernant les informations générales sur les diplômés"
    Range("B1").Font.Size = 26
    Range("B1").Font.Italic = True
    Range("B1").Font.Bold = True
    Range("B1").Font.Name = "Times New Roman"
    Range("B1").Font.Underline = xlUnderlineStyleSingle
    End With
     
    Set pt = ptCache.CreatePivotTable(wsPT.Range("B12"), "TCD_1", , 4)
     
    With Sheets("Generalite").Activate
    Range("B10") = "Diplômés selon le genre "
    Range("B10").Font.Size = 18
    Range("B10").Font.Italic = True
    Range("B10").Font.Name = "Arial"
    End With

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 12
    Par défaut
    Bonjour,

    je me permet de remonter le sujet. Je suis prêt à répondre à vos questions également. Je me suis renseigné rapidement, cette erreur fait référence à un problème de type de données ou une mauvaise déclaration de variable. Mais je ne vois sincèrement pas où est le problème même en vérifiant la base importée...

    edit : je vois que cela peut s'agir de vraiment pas mal de choses mais je pense que ça doit être ma base importée puisque le programme marche très bien avec la base de l'année dernière. A première vue, elles semblent identiques (données en standard toutes les deux, pas de formules (donc pas d'erreur de calcul), ...). Auriez-vous des pistes pour que je cherche mieux ?

  5. #5
    Membre expérimenté
    Avatar de MolikDLuffy
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2017
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2017
    Messages : 158
    Billets dans le blog
    1
    Par défaut
    Bonjour,

    Je suis désolé mais cela me dépasse sans le fichier car je ne suis pas expert en VBA pour faire du VBA directement comme ça...

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2015
    Messages
    12
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 34
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2015
    Messages : 12
    Par défaut
    Pas de soucis !

    Je te remercie déjà pas mal d'y avoir réfléchi c'est pas très pro mais je pense que je vais lancer les tcd un par un finalement. C'est pas spécialement beaucoup plus long, surtout si l'on compare au temps que je met pour résoudre ce problème..
    Ce qui m’énerve c'est que je suis persuadé que ça doit être un truc tout bête, mais bon...

  7. #7
    Membre expérimenté
    Avatar de MolikDLuffy
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2017
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2017
    Messages : 158
    Billets dans le blog
    1
    Par défaut
    Puisque je ne sais pas, je vais essayer de m'acharner pour essayer de régler le problème. Ca sera gagnant-gagnant

  8. #8
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 569
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 569
    Par défaut
    Bonjour

    De façon générale on ne crée par de TCD par VBA.

    On les crée une fois pour toutes avec une méthodologie permettant qu'ils s'adaptent aux évolutions de la source...

  9. #9
    Membre expérimenté
    Avatar de MolikDLuffy
    Homme Profil pro
    Contrôleur de gestion
    Inscrit en
    Mars 2017
    Messages
    158
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 37
    Localisation : France, Val d'Oise (Île de France)

    Informations professionnelles :
    Activité : Contrôleur de gestion
    Secteur : Finance

    Informations forums :
    Inscription : Mars 2017
    Messages : 158
    Billets dans le blog
    1
    Par défaut
    Citation Envoyé par 78chris Voir le message
    Bonjour

    De façon générale on ne crée par de TCD par VBA.

    On les crée une fois pour toutes avec une méthodologie permettant qu'ils s'adaptent aux évolutions de la source...
    Oui aussi

Discussions similaires

  1. [XL-2010] Macro sur tableau croisé dynamique ?
    Par genius4evers dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 08/10/2015, 19h46
  2. [VBA] Tableau Croisé Dynamique.
    Par le_niak dans le forum VBA Access
    Réponses: 3
    Dernier message: 25/06/2014, 11h02
  3. Macro de tableau croisé dynamique ne fonctionne pas avec excel 2007
    Par Sherman750 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 15/10/2012, 22h42
  4. TCD VBA tableau croisé dynamique
    Par pierrotpoulpo dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 11/05/2007, 14h24
  5. [VBA-E] pb entre macro et tableau croisé dynamique
    Par flear dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 23/01/2007, 09h19

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