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 :

Variable dans SourceData et TableDestination [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 93
    Par défaut Variable dans SourceData et TableDestination
    Bonjour tout le monde

    je bloque un peu et je trouve pas la syntaxe qui puisse me permettre d'utiliser une variable comme source de données por la création d'un tcd par macro,
    en gros j'essaie de boucler sur toutes les feuilles de mon classeur qui on la même mise en forme pour créer des tcd dans des nouvelles feuilles .


    merci de m'orienter s'il vous plait


    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
    Sub CreerTCD()
    Dim X, Y As Variant
    Dim ws As Worksheet
     For Each ws In ActiveWorkbook.Worksheets
     
    Y = ws.Name
    X = ws.Name & " " & "TCD"
     
     Worksheets.Add(After:=Worksheets(Worksheets.Count)).Name = X
    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
        [y!A1].CurrentRegion.Address(, , xlR1C1, True)).CreatePivotTable
        TableDestination:="x!R3C1", _
        TableName:="TCD"
     
    ActiveWorkbook.Sheets("x").PivotTables("Mon TCD").SmallGrid = False
    ActiveWorkbook.Sheets("x").PivotTables("Mon TCD").AddFields RowFields:="ARTICLE", ColumnFields:="ANNEE MOIS" ', PageFields:=""
    With ActiveWorkbook.Sheets("x").PivotTables("Mon TCD").PivotFields("km")
        .Orientation = xlDataField
        .Caption = "somme Qte_dem_km"
        .Function = xlSum
        '
    End With
     Application.CommandBars("PivotTable").Visible = True
     Next ws
    End Sub

  2. #2
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    Bonjour,

    Peut-être :

    X = "'" & ws.Name & " " & "TCD" & "'"

    au lieu de :

    X = ws.Name & " " & "TCD"

  3. #3
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 93
    Par défaut
    merci pour votre aide mais cela bloque toujours ici et ça me mets objet requis .

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
        [X!A1].CurrentRegion.Address(, , xlR1C1, True)).CreatePivotTable _
        TableDestination:="Y!R3C1", _
        TableName:="TCD"
    le contenu des variables x et y est bon .

  4. #4
    Expert confirmé
    Homme Profil pro
    aucune
    Inscrit en
    Septembre 2011
    Messages
    8 208
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : aucune

    Informations forums :
    Inscription : Septembre 2011
    Messages : 8 208
    Par défaut
    As-tu un message d'erreur ? si oui, lequel et sur quelle ligne ? est-ce que la variable Y comporte un espace ? est-ce que tu n'as pas un autre TCD du nom de "TCD" ?

  5. #5
    Membre confirmé
    Homme Profil pro
    Étudiant
    Inscrit en
    Décembre 2011
    Messages
    93
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Décembre 2011
    Messages : 93
    Par défaut
    BONJOUR

    l'erreur est a la ligne c'est un run-time erreur 424 objet requis

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
        [sheets(Y)!A1].CurrentRegion.Address(, , xlR1C1, True)).CreatePivotTable _
        TableDestination:="sheets(X)!R3C1", _
        TableName:="TCD"
    j'ai trouvé le poste suivant et je sais pas ce que vous en pensez!! :

    La but est de placer la feuille et la plage variable dans une variable :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sel = Worksheets(NomOp).Range("A1:N" & lasti).Address(True, True, xlR1C1, True)

    ce qui donne dans le TCD :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        Sel, Version:=xlPivotTableVersion12). _
        CreatePivotTable TableDestination:=Cells(lastj, 1).Offset(2, 0), TableName:= _
        "Tableau croisé dynamique1", DefaultVersion:=xlPivotTableVersion12

    merci

  6. #6
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonjour
    Je ferai comme ceci (tu t'es mêlé les pinceaux dans l'utilisation de tes variables)

    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
    Sub CreerTCD()
    Dim Ws As Worksheet, Wst As Worksheet
    Dim X As String, Y As String
     
    With ThisWorkbook
        For Each Ws In .Worksheets
            X = Ws.Name
            Y = X & " TCD"
            'Si c'est pas une feuille TCD
            If InStr(X, "TCD") = 0 Then
                'Si la feuille TCD correspondante n'existe pas
                If Not Existe(Y) Then
                    Set Wst = .Worksheets.Add(After:=.Worksheets(.Worksheets.Count))
                    Wst.Name = Y
                    .PivotCaches.Add(SourceType:=xlDatabase, _
                                     SourceData:=Ws.Range("A1").CurrentRegion).CreatePivotTable _
                                     TableDestination:=Wst.Range("A3"), TableName:="TCD" & X
     
                    With Wst.PivotTables("TCD" & X)
                        .SmallGrid = False
                        .AddFields RowFields:="ARTICLE", ColumnFields:="ANNEE MOIS"
     
                        With .PivotFields("km")
                            .Orientation = xlDataField
                            .Caption = "somme Qte_dem_km"
                            .Function = xlSum
                        End With
                    End With
                    Application.CommandBars("PivotTable").Visible = True
                End If
            End If
        Next Ws
    End With
    End Sub
     
    Private Function Existe(ByVal Str As String) As Boolean
    Dim Sh As Worksheet
     
    For Each Sh In ThisWorkbook.Sheets
        If Sh.Name = Str Then
            Existe = True
            Exit For
        End If
    Next Sh
    End Function

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 04/01/2004, 15h14
  2. [LG]variables dans procédure
    Par néo333 dans le forum Langage
    Réponses: 2
    Dernier message: 04/11/2003, 23h24
  3. comment recuperer une variable dans flash
    Par krépuscul dans le forum Flash
    Réponses: 30
    Dernier message: 16/10/2003, 09h40
  4. Réponses: 13
    Dernier message: 14/06/2003, 22h15
  5. [syntaxe] Gerer les variables dans une requete
    Par rastapopulos dans le forum MS SQL Server
    Réponses: 12
    Dernier message: 15/04/2003, 12h53

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