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 :

TCD à partir d'une plage nommée vers une nouvelle feuille nommée [XL-2007]


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club Avatar de MushuLeDragon
    Homme Profil pro
    Apprenti BTS SIO
    Inscrit en
    Janvier 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Apprenti BTS SIO

    Informations forums :
    Inscription : Janvier 2015
    Messages : 8
    Points : 6
    Points
    6
    Par défaut TCD à partir d'une plage nommée vers une nouvelle feuille nommée
    Bonjour.

    Un problème au niveau du code de mon TCD que j'ai créé grâce à l'enregistreur. Quand j'enregistre ma macro, tout se passe bien, quand je la relance j'ai un message d'erreur qui s'affiche (J'ai vérifié ce n'est pas un problème de langue de la version avec le "L" qui doit être remplacé en "R") :
    Erreur d'ecécution '5'
    Argument ou appel de procédure incorrect


    Voici le code réalisé à partir de l'enregistreur :
    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
     
        ActiveSheet.UsedRange.Select
     
        ActiveWorkbook.Names.Add Name:="Tableau1", RefersToR1C1:= _
            "='données edsl'!R1C1:R500C35"
     
        Sheets.Add After:=Sheets(Sheets.Count)
        Sheets("Feuil1").Select
        Sheets("Feuil1").Name = "TCD dde"
        ActiveWindow.View = xlNormalView
        Range("A3").Select
        ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
            "Tableau1", Version:=xlPivotTableVersion12).CreatePivotTable _
            TableDestination:="TCD dde!R3C1", TableName:="Tableau croisé dynamique1", _
            DefaultVersion:=xlPivotTableVersion12
        Sheets("TCD dde").Select
        Cells(3, 1).Select
    J'ai modifié un peu le code pour raccourcir et simplifier le tout mais je vous précise les étapes que je souhaite faire via la macro :
    - Sélectionner le tableau et renommer la plage Tableau1
    - Créer une noucelle feuille nommée "TCD dde"
    - Y incorporer un Tableau croisé Dynamique (en A3 comme quand on créer un TCD) à partir de la plage "Tableau1" sur la feuille "TCD dde"

    voici le code :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
        ActiveSheet.UsedRange.Select
     
        ActiveWorkbook.Names.Add Name:="Tableau1", RefersToR1C1:= _
            "='données edsl'!R1C1:R500C35"
     
        Sheets.Add.Name = "TCD dde"
        ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
            "Tableau1", Version:=xlPivotTableVersion12).CreatePivotTable _
            TableDestination:="TCD dde!R3C1", TableName:= _
            "Tableau croisé dynamique1", DefaultVersion:=xlPivotTableVersion12
        Sheets("TCD dde").Select
        Cells(3, 1).Select

    Pouvez vous m'aider ?

    En espérant que vous me comprendrez !
    Et si vous avez un temps passez aussi sur mon autre sujet ici.

    Excelément

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Une proposition pour la création de votre TCD avec ce 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
    57
    58
    59
    60
    61
    62
    63
    64
    65
    66
    67
    68
    69
    70
    71
    72
    73
    74
    75
    Option Explicit
     
     
    Sub TestCreationTcd()
     
    Dim AireZoneNommee As Range
    Dim LigneDeTitre As Long
    Dim DerniereLigne As Long
    Dim DerniereColonne As Long
    Dim ShDonnees As Worksheet
    Dim ShTcd As Worksheet
     
        Set ShDonnees = Sheets("données edsl")
     
        With ShDonnees
     
            LigneDeTitre = 1
            DerniereLigne = .Cells(.Rows.Count, 1).End(xlUp).Row
            DerniereColonne = .Cells(LigneDeTitre, .Columns.Count).End(xlToLeft).Column
            Set AireZoneNommee = .Range(.Cells(LigneDeTitre, 1), .Cells(DerniereLigne, DerniereColonne))
     
            ' Suppression et création de la zone Tableau1
            RedefinitionZoneNommee "Tableau1", AireZoneNommee
     
         End With
     
         ' Suppression éventuelle feuille Tcd déjà existante
         For Each ShTcd In Sheets
             If ShTcd.Name = "TCD dde" Then
                Application.DisplayAlerts = False
                Sheets("TCD dde").Delete
                Application.DisplayAlerts = True
                Exit For
             End If
         Next ShTcd
     
         ' Création de la feuille "Tcd dde"
         Set ShTcd = Worksheets.Add(after:=Sheets(Sheets.Count))
         With ShTcd
            .Name = "TCD dde"
         End With
     
     
         CreationTcd AireZoneNommee, ShTcd
     
     
        Set AireZoneNommee = Nothing
        Set ShTcd = Nothing
        Set ShDonnees = Nothing
     
    End Sub
     
    Sub CreationTcd(ByVal AireSourceTcd As Range, ByVal FeuilleCible As Worksheet)
     
        ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
            AireSourceTcd, Version:=xlPivotTableVersion12). _
            CreatePivotTable TableDestination:="'" & FeuilleCible.Name & "'!R3C1", TableName _
            :="TCD1", DefaultVersion:=xlPivotTableVersion12
     
    End Sub
     
    Sub RedefinitionZoneNommee(ByVal ZoneNommee As String, ByVal AdresseZoneNommee As Range)
     
    Dim ZoneNom As Name
     
        For Each ZoneNom In ActiveWorkbook.Names
            If ZoneNom.Name = ZoneNommee Then
                 ZoneNom.Delete
                 Exit For
            End If
        Next ZoneNom
     
        ActiveWorkbook.Names.Add ZoneNommee, AdresseZoneNommee
     
    End Sub

    Cordialement.

  3. #3
    Futur Membre du Club Avatar de MushuLeDragon
    Homme Profil pro
    Apprenti BTS SIO
    Inscrit en
    Janvier 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Apprenti BTS SIO

    Informations forums :
    Inscription : Janvier 2015
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Bonjour.
    Avant tout merci pour la réponse.

    Sinon le code fonctionne normalement pour afficher encore et toujours le même message à ce niveau
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
     
      ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
            AireSourceTcd, Version:=xlPivotTableVersion12). _
            CreatePivotTable TableDestination:="'" & FeuilleCible.Name & "'!R3C1", TableName _
            :="TCD1", DefaultVersion:=xlPivotTableVersion12
    Je ne sais pas quoi faire de plus...

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Le code que je vous ai envoyé est rodé depuis bien longtemps.
    Essayez de mettre en ligne un fichier exemple sans données confidentielles pour voir si le problème se reproduit sur mon PC.

    Cordialement.
    Dernière modification par Invité ; 15/01/2015 à 13h48. Motif: Citation inutile

  5. #5
    Futur Membre du Club Avatar de MushuLeDragon
    Homme Profil pro
    Apprenti BTS SIO
    Inscrit en
    Janvier 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Apprenti BTS SIO

    Informations forums :
    Inscription : Janvier 2015
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Voici donc le fichier que j'utilise, allégé car le double de lignes, ainsi que le code que j'ai créé via enregistreur et que je modifie au fur et a mesure pour permettre de l'utiliser quelque soit les extractions que j'ai (les données varient d'un fichier à l'autre) et que je n'arrive pas à compléter a partir du moment où je créé un TCD à partir de la plage nommée (d'ailleurs j'ai remarqué que ma plage ne prends pas tout mon tableau mais une partie seulement) vers une feuille nommée.

    Pour le moment je bute ici mais ce n'est pas dit qu'une fois mon souci résolu il n'y ait pas d'autre problemes rencontrés par la suite

    En tout cas merci du temps que vous me consacrez.

    Fichiers :

    #JeSuisCharlie

  6. #6
    Invité
    Invité(e)
    Par défaut
    Citation Envoyé par DragonMushu Voir le message
    Pour le moment je bute ici mais ce n'est pas dit qu'une fois mon souci résolu il n'y ait pas d'autre problemes rencontrés par la suite
    Bonjour,

    Pourrais-tu mettre en ligne un vidage d'écran du ou des TCD formatés (manuellement) souhaités à partir du fichier transmis ?

    Cordialement.

  7. #7
    Futur Membre du Club Avatar de MushuLeDragon
    Homme Profil pro
    Apprenti BTS SIO
    Inscrit en
    Janvier 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Apprenti BTS SIO

    Informations forums :
    Inscription : Janvier 2015
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Je n'ai pas bien compris ce qu'était le vidage d'écran, j'espère que c'est ce que j'ai fait.

    Dans le TCD j'y ait inté gré 2 fois le champ catégorie : dans étiquette et dans somme valeurs. Dans ce dernier le champ durée est une moyenne et a un format personnalisé : j " jours" qui lors d'une des premieres macro m'affichait après exécution "jj " " jours""" (ou dans ce genre là), ce qui ne m'affichait pas la bonne valeur.



  8. #8
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    Une solution possible dans le fichier joint.

    Cordialement.

  9. #9
    Futur Membre du Club Avatar de MushuLeDragon
    Homme Profil pro
    Apprenti BTS SIO
    Inscrit en
    Janvier 2015
    Messages
    8
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 36
    Localisation : France, Hérault (Languedoc Roussillon)

    Informations professionnelles :
    Activité : Apprenti BTS SIO

    Informations forums :
    Inscription : Janvier 2015
    Messages : 8
    Points : 6
    Points
    6
    Par défaut
    Je ne saurai comment te remercier.

    Il fonctionne correctement j'essaye de l'appliquer dans différentes situations.
    J'essaye aussi de m'en imprégner pour le comprendre.

    Mille merci et mille excuses si ca a pris du temps.

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

Discussions similaires

  1. [AC-2010] Exporter une requête paramétrée vers une plage Excel
    Par fabian_ dans le forum VBA Access
    Réponses: 7
    Dernier message: 16/03/2014, 00h19
  2. Réponses: 0
    Dernier message: 04/08/2010, 14h02
  3. Réponses: 0
    Dernier message: 07/06/2009, 12h31
  4. Envoyer une plage Excel vers une base Access
    Par alain59320 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 04/01/2009, 19h21
  5. copie d'une table Y d'une base A vers une table X d'une base
    Par moneyboss dans le forum PostgreSQL
    Réponses: 1
    Dernier message: 30/08/2005, 21h24

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