créer un tcd avec vba

Le
julien
Bonjour,

Je ne parviens pas à créer un tcd en vba.
J'ai fais la manip à la main en enreigistrant la macro, j'ajoute mes
variable (longueur du tableau de mes données principalement) mais elle
génère des erreurs à l'exécution.

Mes recherche internet n'ont pas donné grand chose, je retombe sur les
mêmes routines & mêmes erreur

Je suis à la recherche d'un classeur exemple qui crée un TCD via vba,
et qui marche :)

Merci de votre aide.

Julien

PS : je ne parviens plus à me connecter à news.microsoft.com via
outlook express ou thunderbird. Y'a un souci ? (là je passe par google
groups)
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
julien
Le #20268811
On 1 oct, 14:42, julien
Bonjour,

Je ne parviens pas à créer un tcd en vba.
J'ai fais la manip à la main en enreigistrant la macro, j'ajoute mes
variable (longueur du tableau de mes données principalement) mais elle
génère des erreurs à l'exécution.

Mes recherche internet n'ont pas donné grand chose, je retombe sur les
mêmes routines & mêmes erreur...

Je suis à la recherche d'un classeur exemple qui crée un TCD via vba,
et qui marche :)

Merci de votre aide.

Julien

PS : je ne parviens plus à me connecter à news.microsoft.com via
outlook express ou thunderbird. Y'a un souci ? (là je passe par google
groups)



NB : je suis sous XL2003
LSteph
Le #20269071
Bonjour,

Si tu veux bien préciser:

-ce que tu as écrit
- où s'arrête le code , sur quelle instruction (surlignée en jaune)
-le message erreur
- ou le cas échéant le défaut de résultat.

Cordialement.

--
lSteph




On 1 oct, 14:42, julien
Bonjour,

Je ne parviens pas à créer un tcd en vba.
J'ai fais la manip à la main en enreigistrant la macro, j'ajoute mes
variable (longueur du tableau de mes données principalement) mais elle
génère des erreurs à l'exécution.

Mes recherche internet n'ont pas donné grand chose, je retombe sur les
mêmes routines & mêmes erreur...

Je suis à la recherche d'un classeur exemple qui crée un TCD via vba,
et qui marche :)

Merci de votre aide.

Julien

PS : je ne parviens plus à me connecter à news.microsoft.com via
outlook express ou thunderbird. Y'a un souci ? (là je passe par google
groups)


julien
Le #20269521
On 1 oct, 15:11, LSteph
Bonjour,

Si tu veux bien préciser:

-ce que tu as écrit
- où s'arrête le code , sur quelle instruction (surlignée en jaune)
-le message erreur
- ou le cas échéant le défaut de résultat.

Cordialement.

--
lSteph

On 1 oct, 14:42, julien
> Bonjour,

> Je ne parviens pas à créer un tcd en vba.
> J'ai fais la manip à la main en enreigistrant la macro, j'ajoute mes
> variable (longueur du tableau de mes données principalement) mais ell e
> génère des erreurs à l'exécution.

> Mes recherche internet n'ont pas donné grand chose, je retombe sur le s
> mêmes routines & mêmes erreur...

> Je suis à la recherche d'un classeur exemple qui crée un TCD via vb a,
> et qui marche :)

> Merci de votre aide.

> Julien

> PS : je ne parviens plus à me connecter à news.microsoft.com via
> outlook express ou thunderbird. Y'a un souci ? (là je passe par googl e
> groups)



Je veux bien mettre mon code, mais avant d'embêter tout le monde, je
cherche un exemple qui marche pour comprendre mes erreurs et pouvoir
avancer.

Julien
julien
Le #20269511
On 1 oct, 15:54, julien
On 1 oct, 15:11, LSteph


> Bonjour,

> Si tu veux bien préciser:

> -ce que tu as écrit
> - où s'arrête le code , sur quelle instruction (surlignée en jaun e)
> -le message erreur
> - ou le cas échéant le défaut de résultat.

> Cordialement.

> --
> lSteph

> On 1 oct, 14:42, julien
> > Bonjour,

> > Je ne parviens pas à créer un tcd en vba.
> > J'ai fais la manip à la main en enreigistrant la macro, j'ajoute me s
> > variable (longueur du tableau de mes données principalement) mais e lle
> > génère des erreurs à l'exécution.

> > Mes recherche internet n'ont pas donné grand chose, je retombe sur les
> > mêmes routines & mêmes erreur...

> > Je suis à la recherche d'un classeur exemple qui crée un TCD via vba,
> > et qui marche :)

> > Merci de votre aide.

> > Julien

> > PS : je ne parviens plus à me connecter à news.microsoft.com via
> > outlook express ou thunderbird. Y'a un souci ? (là je passe par goo gle
> > groups)

Je veux bien mettre mon code, mais avant d'embêter tout le monde, je
cherche un exemple qui marche pour comprendre mes erreurs et pouvoir
avancer.

Julien



Voici mon code :


Sub CreerTCD()
Dim lastrow As Integer

lastrow = Range("A1").End(xlDown).Row


'parfois ça boque ici, avec le message "Argument ou appel de procédure
incorrect"
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase,
SourceData:= _
"Data!R1C1:R" & CStr(lastrow) & "C4").CreatePivotTable
TableDestination _
:="TCD!R1C1", TableName:= _
"Tableau croisé dynamique1", DefaultVersion:=xlPivotTableVersion10

ActiveWorkbook.Sheets("TCD").Select

'parfois ça ne bloque pas audessus mais ici avec le message "Erreur
91, Variable objet ou
' variable de bloc With non définie
ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField
ActiveSheet. _
PivotTables("Tableau croisé dynamique1").PivotFields("Durée"),
_
"Durées", xlSum

With ActiveSheet.PivotTables("Tableau croisé
dynamique1").PivotFields("Action")
.Orientation = xlRowField
.Position = 1
End With
ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataField
ActiveSheet. _
PivotTables("Tableau croisé dynamique1").PivotFields("Durée"),
_
"Nombre de Durée", xlSum
With ActiveSheet.PivotTables("Tableau croisé
dynamique1").PivotFields("Date")
.Orientation = xlPageField
.Position = 1
End With

End Sub

Voilà.

Merci !

Julien
LSteph
Le #20269651
ReBonjour,

Ok je vais regarder... si je trouve.

pour commencer définis lastrow as long
car integer s'arrête à 32768
alors que ta feuille peut aller plus loin.

@+

--
lSteph

On 1 oct, 16:04, julien
On 1 oct, 15:54, julien




> On 1 oct, 15:11, LSteph
> > Bonjour,

> > Si tu veux bien préciser:

> > -ce que tu as écrit
> > - où s'arrête le code , sur quelle instruction (surlignée en ja une)
> > -le message erreur
> > - ou le cas échéant le défaut de résultat.

> > Cordialement.

> > --
> > lSteph

> > On 1 oct, 14:42, julien
> > > Bonjour,

> > > Je ne parviens pas à créer un tcd en vba.
> > > J'ai fais la manip à la main en enreigistrant la macro, j'ajoute mes
> > > variable (longueur du tableau de mes données principalement) mais elle
> > > génère des erreurs à l'exécution.

> > > Mes recherche internet n'ont pas donné grand chose, je retombe su r les
> > > mêmes routines & mêmes erreur...

> > > Je suis à la recherche d'un classeur exemple qui crée un TCD vi a vba,
> > > et qui marche :)

> > > Merci de votre aide.

> > > Julien

> > > PS : je ne parviens plus à me connecter à news.microsoft.com vi a
> > > outlook express ou thunderbird. Y'a un souci ? (là je passe par g oogle
> > > groups)

> Je veux bien mettre mon code, mais avant d'embêter tout le monde, je
> cherche un exemple qui marche pour comprendre mes erreurs et pouvoir
> avancer.

> Julien

Voici mon code :

Sub CreerTCD()
Dim lastrow As Integer

    lastrow = Range("A1").End(xlDown).Row

'parfois ça boque ici, avec le message "Argument ou appel de procédur e
incorrect"
    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase,
SourceData:= _
    "Data!R1C1:R" & CStr(lastrow) & "C4").CreatePivotTable
TableDestination _
    :="TCD!R1C1", TableName:= _
    "Tableau croisé dynamique1", DefaultVersion:=xlPivotTableVers ion10

    ActiveWorkbook.Sheets("TCD").Select

'parfois ça ne bloque pas audessus mais ici avec le message "Erreur
91, Variable objet ou
' variable de bloc With non définie
    ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataFie ld
ActiveSheet. _
        PivotTables("Tableau croisé dynamique1").PivotFields("D urée"),
_
        "Durées", xlSum

    With ActiveSheet.PivotTables("Tableau croisé
dynamique1").PivotFields("Action")
        .Orientation = xlRowField
        .Position = 1
    End With
    ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataFie ld
ActiveSheet. _
        PivotTables("Tableau croisé dynamique1").PivotFields("D urée"),
_
        "Nombre de Durée", xlSum
    With ActiveSheet.PivotTables("Tableau croisé
dynamique1").PivotFields("Date")
        .Orientation = xlPageField
        .Position = 1
    End With

End Sub

Voilà.

Merci !

Julien- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


julien
Le #20269741
On 1 oct, 16:13, LSteph
ReBonjour,

Ok je vais  regarder... si je trouve.

pour commencer définis lastrow as long
car integer s'arrête à 32768
alors que ta feuille peut aller plus loin.

@+

--
lSteph

On 1 oct, 16:04, julien
> On 1 oct, 15:54, julien
> > On 1 oct, 15:11, LSteph
> > > Bonjour,

> > > Si tu veux bien préciser:

> > > -ce que tu as écrit
> > > - où s'arrête le code , sur quelle instruction (surlignée en jaune)
> > > -le message erreur
> > > - ou le cas échéant le défaut de résultat.

> > > Cordialement.

> > > --
> > > lSteph

> > > On 1 oct, 14:42, julien
> > > > Bonjour,

> > > > Je ne parviens pas à créer un tcd en vba.
> > > > J'ai fais la manip à la main en enreigistrant la macro, j'ajout e mes
> > > > variable (longueur du tableau de mes données principalement) ma is elle
> > > > génère des erreurs à l'exécution.

> > > > Mes recherche internet n'ont pas donné grand chose, je retombe sur les
> > > > mêmes routines & mêmes erreur...

> > > > Je suis à la recherche d'un classeur exemple qui crée un TCD via vba,
> > > > et qui marche :)

> > > > Merci de votre aide.

> > > > Julien

> > > > PS : je ne parviens plus à me connecter à news.microsoft.com via
> > > > outlook express ou thunderbird. Y'a un souci ? (là je passe par google
> > > > groups)

> > Je veux bien mettre mon code, mais avant d'embêter tout le monde, j e
> > cherche un exemple qui marche pour comprendre mes erreurs et pouvoir
> > avancer.

> > Julien

> Voici mon code :

> Sub CreerTCD()
> Dim lastrow As Integer

>     lastrow = Range("A1").End(xlDown).Row

> 'parfois ça boque ici, avec le message "Argument ou appel de procéd ure
> incorrect"
>     ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase,
> SourceData:= _
>     "Data!R1C1:R" & CStr(lastrow) & "C4").CreatePivotTable
> TableDestination _
>     :="TCD!R1C1", TableName:= _
>     "Tableau croisé dynamique1", DefaultVersion:=xlPivotTableVe rsion10

>     ActiveWorkbook.Sheets("TCD").Select

> 'parfois ça ne bloque pas audessus mais ici avec le message "Erreur
> 91, Variable objet ou
> ' variable de bloc With non définie
>     ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataF ield
> ActiveSheet. _
>         PivotTables("Tableau croisé dynamique1").PivotFields( "Durée"),
> _
>         "Durées", xlSum

>     With ActiveSheet.PivotTables("Tableau croisé
> dynamique1").PivotFields("Action")
>         .Orientation = xlRowField
>         .Position = 1
>     End With
>     ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDataF ield
> ActiveSheet. _
>         PivotTables("Tableau croisé dynamique1").PivotFields( "Durée"),
> _
>         "Nombre de Durée", xlSum
>     With ActiveSheet.PivotTables("Tableau croisé
> dynamique1").PivotFields("Date")
>         .Orientation = xlPageField
>         .Position = 1
>     End With

> End Sub

> Voilà.

> Merci !

> Julien- Masquer le texte des messages précédents -

> - Afficher le texte des messages précédents -



OK, j'ai changé le type de lastrow.
Merci de ton aide.
LSteph
Le #20270051
...de même utiliser plutôt:

lastrow = [a65536].End(xlUp).Row


pour le reste je ne trouve rien pour le moment

moi je procède ainsi en standard:

Sheets("TCD").Cells.Clear
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase,
SourceData:= _
"Base_de_données").CreatePivotTable
TableDestination:="[Classeur1]TCD!R1C1", _
TableName:="Tableau croisé dynamique1",
DefaultVersion:=xlPivotTableVersion10


On 1 oct, 16:23, julien
On 1 oct, 16:13, LSteph




> ReBonjour,

> Ok je vais  regarder... si je trouve.

> pour commencer définis lastrow as long
> car integer s'arrête à 32768
> alors que ta feuille peut aller plus loin.

> @+

> --
> lSteph

> On 1 oct, 16:04, julien
> > On 1 oct, 15:54, julien
> > > On 1 oct, 15:11, LSteph
> > > > Bonjour,

> > > > Si tu veux bien préciser:

> > > > -ce que tu as écrit
> > > > - où s'arrête le code , sur quelle instruction (surlignée e n jaune)
> > > > -le message erreur
> > > > - ou le cas échéant le défaut de résultat.

> > > > Cordialement.

> > > > --
> > > > lSteph

> > > > On 1 oct, 14:42, julien
> > > > > Bonjour,

> > > > > Je ne parviens pas à créer un tcd en vba.
> > > > > J'ai fais la manip à la main en enreigistrant la macro, j'ajo ute mes
> > > > > variable (longueur du tableau de mes données principalement) mais elle
> > > > > génère des erreurs à l'exécution.

> > > > > Mes recherche internet n'ont pas donné grand chose, je retomb e sur les
> > > > > mêmes routines & mêmes erreur...

> > > > > Je suis à la recherche d'un classeur exemple qui crée un TC D via vba,
> > > > > et qui marche :)

> > > > > Merci de votre aide.

> > > > > Julien

> > > > > PS : je ne parviens plus à me connecter à news.microsoft.co m via
> > > > > outlook express ou thunderbird. Y'a un souci ? (là je passe p ar google
> > > > > groups)

> > > Je veux bien mettre mon code, mais avant d'embêter tout le monde, je
> > > cherche un exemple qui marche pour comprendre mes erreurs et pouvoi r
> > > avancer.

> > > Julien

> > Voici mon code :

> > Sub CreerTCD()
> > Dim lastrow As Integer

> >     lastrow = Range("A1").End(xlDown).Row

> > 'parfois ça boque ici, avec le message "Argument ou appel de proc édure
> > incorrect"
> >     ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase,
> > SourceData:= _
> >     "Data!R1C1:R" & CStr(lastrow) & "C4").CreatePivotTable
> > TableDestination _
> >     :="TCD!R1C1", TableName:= _
> >     "Tableau croisé dynamique1", DefaultVersion:=xlPivotTable Version10

> >     ActiveWorkbook.Sheets("TCD").Select

> > 'parfois ça ne bloque pas audessus mais ici avec le message "Erreur
> > 91, Variable objet ou
> > ' variable de bloc With non définie
> >     ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDat aField
> > ActiveSheet. _
> >         PivotTables("Tableau croisé dynamique1").PivotField s("Durée"),
> > _
> >         "Durées", xlSum

> >     With ActiveSheet.PivotTables("Tableau croisé
> > dynamique1").PivotFields("Action")
> >         .Orientation = xlRowField
> >         .Position = 1
> >     End With
> >     ActiveSheet.PivotTables("Tableau croisé dynamique1").AddDat aField
> > ActiveSheet. _
> >         PivotTables("Tableau croisé dynamique1").PivotField s("Durée"),
> > _
> >         "Nombre de Durée", xlSum
> >     With ActiveSheet.PivotTables("Tableau croisé
> > dynamique1").PivotFields("Date")
> >         .Orientation = xlPageField
> >         .Position = 1
> >     End With

> > End Sub

> > Voilà.

> > Merci !

> > Julien- Masquer le texte des messages précédents -

> > - Afficher le texte des messages précédents -

OK, j'ai changé le type de lastrow.
Merci de ton aide.- Masquer le texte des messages précédents -

- Afficher le texte des messages précédents -


michdenis
Le #20270521
Bonjour Julien,

Voici un exemple pour créer un TDC,

Ma feuille source des données est : "Feuil1"
Je n'ai que 2 petites colonnes de data

Ma feuille de destination est Feuil2

'--------------------------------------
Sub CreerTCD()
'Déclaration des variables
Dim Adr As String, Dest As String
Dim Pc As PivotCache
Dim Pt As PivotTable

'Si le TDC existe déjà il faut le supprimer
'avant de relancer la procédure sinon une
'erreur est générée c'est ce pourquoi j'ajoute
'la ligne de code suivante :
'On Error Resume Next
'Feuil1.PivotTables("Denis").TableRange2.Clear

'On Error Resume Next
With ActiveWorkbook
'Avec la feuille source des données
'(adapter le nom de la feuille + plage de cellules)
With .Worksheets("feuil1")
'Définir la plage de data source
Adr = .Name & "!" & .Range("A1:B" & _
.Range("A65536").End(xlUp).Row).Address
End With
'Avec la feuille où le TDC sera crée :
'adapter le nom de la feuille et la plage de cellule
With .Worksheets("Feuil2")
'Effacer le tdc si il existe
.PivotTables("Denis").TableRange2.Clear
'Définir la cellule où sera créé le TDC
Dest = .Name & "!" & .Range("A4").Address
End With
'Création du PivotCache
Set Pc = .PivotCaches.Add(SourceType:=xlDatabase, SourceData:­r)
'création du PivotTable
Set Pt = Pc.CreatePivotTable(TableDestination:=Range(Dest), _
TableName:="Denis", DefaultVersion:=xlPivotTableVersion10)
End With
With Pt
'Ajout d'un champ en ligne
.AddFields RowFields:="Étudiant"
'Ajout d'un champ "Data" dans le TDC
.PivotFields("Note").Orientation = xlDataField
End With
End Sub
'--------------------------------------



"julien"
Bonjour,

Je ne parviens pas à créer un tcd en vba.
J'ai fais la manip à la main en enreigistrant la macro, j'ajoute mes
variable (longueur du tableau de mes données principalement) mais elle
génère des erreurs à l'exécution.

Mes recherche internet n'ont pas donné grand chose, je retombe sur les
mêmes routines & mêmes erreur...

Je suis à la recherche d'un classeur exemple qui crée un TCD via vba,
et qui marche :)

Merci de votre aide.

Julien

PS : je ne parviens plus à me connecter à news.microsoft.com via
outlook express ou thunderbird. Y'a un souci ? (là je passe par google
groups)
julien
Le #20275391
On 1 oct, 17:41, "michdenis"
Bonjour Julien,

Voici un exemple pour créer un TDC,

Ma feuille source des données est : "Feuil1"
Je n'ai que 2 petites colonnes de data

Ma feuille de destination est Feuil2

'--------------------------------------
Sub CreerTCD()
'Déclaration des variables
Dim Adr As String, Dest As String
Dim Pc As PivotCache
Dim Pt As PivotTable

'Si le TDC existe déjà il faut le supprimer
'avant de relancer la procédure sinon une
'erreur est générée c'est ce pourquoi j'ajoute
'la ligne de code suivante :
'On Error Resume Next
'Feuil1.PivotTables("Denis").TableRange2.Clear

'On Error Resume Next
With ActiveWorkbook
    'Avec la feuille source des données
    '(adapter le nom de la feuille + plage de cellules)
    With .Worksheets("feuil1")
        'Définir la plage de data source
        Adr = .Name & "!" & .Range("A1:B" & _
              .Range("A65536").End(xlUp).Row).Address
    End With
    'Avec la feuille où le TDC sera crée :
    'adapter le  nom de la feuille et la plage de cellule
    With .Worksheets("Feuil2")
        'Effacer le tdc si il existe
        .PivotTables("Denis").TableRange2.Clear
        'Définir la cellule où sera créé le TDC
        Dest = .Name & "!" & .Range("A4").Address
    End With
    'Création du PivotCache
    Set Pc = .PivotCaches.Add(SourceType:=xlDatabase, SourceData: ­r)
    'création du PivotTable
    Set Pt = Pc.CreatePivotTable(TableDestination:=Range(Dest), _
        TableName:="Denis", DefaultVersion:=xlPivotTableVersi on10)
End With
With Pt
    'Ajout d'un champ en ligne
    .AddFields RowFields:="Étudiant"
    'Ajout d'un champ "Data" dans le TDC
    .PivotFields("Note").Orientation = xlDataField
End With
End Sub
'--------------------------------------

"julien"
Bonjour,

Je ne parviens pas à créer un tcd en vba.
J'ai fais la manip à la main en enreigistrant la macro, j'ajoute mes
variable (longueur du tableau de mes données principalement) mais elle
génère des erreurs à l'exécution.

Mes recherche internet n'ont pas donné grand chose, je retombe sur les
mêmes routines & mêmes erreur...

Je suis à la recherche d'un classeur exemple qui crée un TCD via vba,
et qui marche :)

Merci de votre aide.

Julien

PS : je ne parviens plus à me connecter à news.microsoft.com via
outlook express ou thunderbird. Y'a un souci ? (là je passe par google
groups)



Bonjour michdenis,

2 choses à dire :
1. Ca marche ! :)
2. Merci

Julien
Publicité
Poster une réponse
Anonyme