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 :

Problème macro TCD


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre habitué
    Homme Profil pro
    consultant finance
    Inscrit en
    Juillet 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : consultant finance
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 10
    Par défaut Problème macro TCD
    Bonjour à tous,

    Cela fait un petit moment que je cherche sur internet la réponse à ma question mais sans trouver la solution. Je pense que la réponse est simplissime, mais je n'y arrive pas...

    Ci-dessous, le code que j'ai réalisé pour pouvoir faire un TCD dans l'onglet "Base Achats" des données incluses dans l'onglet "Importation achats".
    Je souhaite avoir en colonne les données "Article Ref" et pour chacune de ces données, la somme des poids "Poids total".

    Cependant, lorsque je lance la macro, il m'affiche un message d'erreur Run-time error '1004'...

    Si quelqu'un peut m'aider à débloquer mon problème, c'est avec grand plaisir que j'accepte.

    Merci à chacun pour le temps accordé.

    Bonne journée.

    Cordialement,

    Pierre-Yves

    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
    Sub Creation_TCD_Achats()
     
    Dim num_ligne As Integer
    ActiveWorkbook.Sheets("Importation Achats").Select
    ActiveSheet.Cells(1, 1).Select
    Selection.End(xlDown).Select
    num_ligne = ActiveCell.Rows.Row
    Set donnees = Range(ActiveSheet.Cells(1, 1), ActiveSheet.Cells(num_ligne, 10))
     
    ActiveWorkbook.Sheets("Base Achats").Select
    Cells.Clear
     
    Set pc1 = ActiveWorkbook.PivotCaches.Add(xlDatabase, "'" & donnees.Parent.Name & "'!" & donnees.Address(ReferenceStyle:=xlR1C1))
    Set pt1 = pc1.CreatePivotTable(TableDestination:=Worksheets("Base Achats").Cells(3, 1), TableName:="Tableau1", DefaultVersion:=xlPivotTableVersion10)
     
    With ActiveSheet.PivotTables("Tableau1").PivotFields("Article Ref")
    .Orientation = xlRowField
    .Position = 1
     
    End With
     
    ActiveSheet.PivotTables("Tableau1").PivotFields("Poids total").Function = xlSum
     
    End Sub

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Voici un exemple de code qui crée un tableau croisé dynamique nommé Mon Tableau et ce sur une nouvelle feuille
    Les données que l'on croise se trouve sur la feuille [Base] et le code ajoute sur le champs ligne le champs Vendeur.
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Option Explicit
    Const shtName As String = "Base"
    Const tcdName = "Mon Tableau"
    Sub MacroTCD()
     Dim dbSource As Range: Set dbSource = ActiveWorkbook.Worksheets(shtName).Range("A1").CurrentRegion
     Dim tcd As PivotCaches: Set tcd = ActiveWorkbook.PivotCaches
     Sheets.Add before:=Worksheets(1)
     tcd.Create(SourceType:=xlDatabase, SourceData:=dbSource, Version:=xlPivotTableVersion10).CreatePivotTable Tabledestination:=Worksheets(1).Range("A3"), TableName:=tcdName, DefaultVersion:=xlPivotTableVersion10 '
     With ActiveSheet.PivotTables(tcdName).PivotFields("Vendeur")
     .Orientation = xlRowField
     .Position = 1
     End With
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre habitué
    Homme Profil pro
    consultant finance
    Inscrit en
    Juillet 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : consultant finance
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 10
    Par défaut
    Merci Corona pour votre réponse.

    Cependant, le problème de la macro que j'ai donnée réside dans la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ActiveSheet.PivotTables("Tableau1").PivotFields("Poids total").Function = xlSum
    En effet, je souhaite pouvoir faire la somme des données correspondantes et malheureusement, il ne me semble pas que l'exemple que vous fournissez puisse me permettre de le faire.

    Merci en tout cas pour votre réponse.

    PY

  4. #4
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Pourtant, j'ai rencontré un problème dès les premières lignes mais comme dans ton message, tu parles d'une erreur mais tu ne dis pas à quelle ligne, c'est difficile d'aider quelqu'un ainsi.
    Bonjour à tous,
    Cela fait un petit moment que je cherche sur internet la réponse à ma question mais sans trouver la solution. Je pense que la réponse est simplissime, mais je n'y arrive pas...
    Ci-dessous, le code que j'ai réalisé pour pouvoir faire un TCD dans l'onglet "Base Achats" des données incluses dans l'onglet "Importation achats".
    Je souhaite avoir en colonne les données "Article Ref" et pour chacune de ces données, la somme des poids "Poids total".
    Cependant, lorsque je lance la macro, il m'affiche un message d'erreur Run-time error '1004'...
    Si quelqu'un peut m'aider à débloquer mon problème, c'est avec grand plaisir que j'accepte.
    Merci à chacun pour le temps accordé.
    Bonne journée.
    Cordialement,
    Pierre-Yves
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  5. #5
    Membre habitué
    Homme Profil pro
    consultant finance
    Inscrit en
    Juillet 2012
    Messages
    10
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : consultant finance
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 10
    Par défaut
    Effectivement, désolé, je m'en suis rendu compte après voir posté le message!
    Sais-tu cependant comment faire une somme dans le TCD? J'imagine que c'est la base du TCD mais dans mon cas, je n'y arrive pas.
    Merci encore.

  6. #6
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 173
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 173
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Voilà un code avec un TCD qui contient un champs en ligne, un champs en colonne, et un champs en valeur avec Somme
    Bien entendu les noms des champs est à changer ainsi que la valeur de la constante shtName et éventuellement celle de la constante tcdName si son nom ne te convient pas.
    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
    Option Explicit
    Const shtName As String = "Base"
    Const tcdName = "Mon Tableau"
    Sub MacroTCD()
     Dim dbSource As Range: Set dbSource = ActiveWorkbook.Worksheets(shtName).Range("A1").CurrentRegion
     Dim tcd As PivotCaches: Set tcd = ActiveWorkbook.PivotCaches
     Dim pvt As PivotTable
     
     Sheets.Add before:=Worksheets(1)
     tcd.Create(SourceType:=xlDatabase, SourceData:=dbSource, Version:=xlPivotTableVersion10).CreatePivotTable Tabledestination:=Worksheets(1).Range("A3"), TableName:=tcdName, DefaultVersion:=xlPivotTableVersion10 '
     Set pvt = ActiveSheet.PivotTables(tcdName)
     With pvt.PivotFields("Vendeur")
     .Orientation = xlRowField
     .Position = 1
     End With
     With pvt.PivotFields("Région")
     .Orientation = xlColumnField
     .Position = 1
     End With
     pvt.AddDataField pvt.PivotFields("Chiffre d'affaires"), "Somme de Chiffre d'affaires", xlSum
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] problème avec une macro TCD
    Par wsanchez dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 07/06/2009, 21h05
  2. problème macro vba collage
    Par olodin dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/06/2007, 10h08
  3. question sur TableDestination dans macro TCD
    Par sash6 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 12/06/2007, 15h31
  4. Problème macro modèle à document
    Par perophron dans le forum VBA Word
    Réponses: 9
    Dernier message: 16/05/2007, 10h38
  5. [VBA-E] Problème macro excel
    Par pontus21 dans le forum Macros et VBA Excel
    Réponses: 32
    Dernier message: 19/05/2006, 18h38

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