Problème avec le TCD sous VBA

Bonsoir,

Sur l'exemple attaché, j'ai un petit souci, pouvez vous m'aider ?

Ma question est : comment faire pour que le VBA débug car quand je lance pas à pas la macro, celle ci se stop sur la création du tableau avec 2 types de messages (c'est selon) : Erreur d'execution 1004' Référence non valide ou Erreur d'éxecution 1004' Erreur définie par l'application ou par l'objet.

Pour que vous puissiez visualiser le problème, j'ai fait un petit exemple du problème avec les 2 solutions sur lesquelles j'ai travaillé.

Pouvez vous, s'il vous plaît, m'aider à éclaircir ce problème ?

A vous lire,

Ben.

43test.zip (12.17 Ko)

Bonjour

Tu peux tester cela:

Sub Macro1()
Sheets("ref 1").Activate
    ActiveWorkbook.Names.Add Name:="REF1", RefersToR1C1:= _
        "=OFFSET('Ref 1'!R1C1:R1C2,,,COUNTA('Ref 1'!C1))"
    ActiveWorkbook.Names.Add Name:="REF2", RefersToR1C1:= _
        "=OFFSET('Ref 2'!R1C1:R1C2,,,COUNTA('Ref 2'!C1))"
    ActiveWorkbook.PivotCaches.Add(SourceType:=xlConsolidation, SourceData:= _
        Array(Array("REF1", "Élément1"), Array("REF2", "Élément2"))).CreatePivotTable _
        TableDestination:="", TableName:="TCDm"
    ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
    Application.CommandBars("PivotTable").Visible = False
End Sub

Salut CB60,

Tout d'abord un grand merci pour ton aide, ta solution fonctionne très bien.

N'arrivant pas à faire que les 2 bases de données coïncident j'étais partis dans une solution qui faisait d'abord 2 TCD puis les regroupés mais je m'aperçois que l'on pouvait le faire directement

En revanche, je comprends pas très bien la formule : RefersToR1C1:= "=OFFSET('Ref 1'!R1C1:R1C2,,,COUNTA _('Ref 1'!C1))" . Pourrais tu m'expliquer à quoi correspond chacun des éléments, pour que je puisses l'appliquer dans des problèmes futurs.

Encore un grand merci,

Cordialement,

Ben

Re

voici un debut d'explication

  ActiveWorkbook.Names.Add Name:="REF1", RefersToR1C1:= _
        "=OFFSET('Ref 1'!R1C1:R1C2,,,COUNTA('Ref 1'!C1))"

Je nomme ton premier tableau __ REF1
REF1=OFFSET('Ref 1'!R1C1:R1C2,,,COUNTA('Ref 1'!C1))
offset= decaler
R1 = rows 1 ligne 1
C1= colonne 1

REF1=DECALER('Ref 1'!$A$1:$B$1;;;NBVAL('Ref 1'!$A:$A))

je decale en partant des cellules A1(R1C1):B1(R1C2)
et le counta et = à nbval, donc je calcul le nombre de cellule renseigné de la colonne A ( C1)

sans macro tu peux le faire de cette façon:
Dans le bandeau en haut
insertion
nom
definir
une fenetre s'ouvre
en haut de la fenetre tu met le "nom" et en bas tu met la "formule"

Re,

Ok j'ai compris à peut près la façon dont la formule fonctionnait. Merci beaucoup

Cordialement,

Ben_Co

Rechercher des sujets similaires à "probleme tcd vba"