Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

créer un tcd avec vba

9 réponses
Avatar
julien
Bonjour,

Je ne parviens pas =E0 cr=E9er un tcd en vba.
J'ai fais la manip =E0 la main en enreigistrant la macro, j'ajoute mes
variable (longueur du tableau de mes donn=E9es principalement) mais elle
g=E9n=E8re des erreurs =E0 l'ex=E9cution.

Mes recherche internet n'ont pas donn=E9 grand chose, je retombe sur les
m=EAmes routines & m=EAmes erreur...

Je suis =E0 la recherche d'un classeur exemple qui cr=E9e un TCD via vba,
et qui marche :)

Merci de votre aide.

Julien

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

9 réponses

Avatar
julien
On 1 oct, 14:42, julien wrote:
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
Avatar
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 wrote:
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)


Avatar
julien
On 1 oct, 15:11, LSteph wrote:
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 wrote:

> 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
Avatar
julien
On 1 oct, 15:54, julien wrote:
On 1 oct, 15:11, LSteph wrote:



> 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 wrote:

> > 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
Avatar
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 wrote:
On 1 oct, 15:54, julien wrote:





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

> > 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 wrote:

> > > 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 -


Avatar
julien
On 1 oct, 16:13, LSteph wrote:
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 wrote:

> On 1 oct, 15:54, julien wrote:

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

> > > 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 wrote:

> > > > 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.
Avatar
LSteph
...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 wrote:
On 1 oct, 16:13, LSteph wrote:





> 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 wrote:

> > On 1 oct, 15:54, julien wrote:

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

> > > > 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 wrote:

> > > > > 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 -


Avatar
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:=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" a écrit dans le message de groupe de discussion :

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)
Avatar
julien
On 1 oct, 17:41, "michdenis" wrote:
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" a écrit dans le message de groupe de disc ussion :

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