TCD en VBA

TCD en VBA - VB/VBA/VBS - Programmation

Marsh Posté le 27-06-2012 à 12:46:04    

Bonjour a tous,
 
J'ecris sur ce forum pour la premiere fois car j'ai un souci avec VBA (je previens je suis novice). Je veux creer une macro avec dedans un tableau croise dynamique. Pour ce faire, j'enregistre d'abord une macro pour voir comment ca marche derriere tout ca ? Et quand je veux l executer, il apparait "run time error 1004 : application defined or object defined error".
 
Quand je veux debugger il m'affiche le code :  
 

Citation :

Sub TCD_CUMP()
'
' TCD_CUMP Macro
'
 
'
    Range("A1" ).Select
    Range(Selection, Selection.End(xlToRight)).Select
    Range(Selection, Selection.End(xlDown)).Select
    Sheets.Add
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "Sheet1!R1C1:R7225C52", Version:=xlPivotTableVersion12).CreatePivotTable _
        TableDestination:="Sheet4!R3C1", TableName:="PivotTable1", DefaultVersion _
        :=xlPivotTableVersion12
    Sheets("Sheet4" ).Select
    Cells(3, 1).Select
    With ActiveSheet.PivotTables("PivotTable1" ).PivotFields("Country" )
        .Orientation = xlPageField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("PivotTable1" ).PivotFields("GOLD Item Nbr" )
        .Orientation = xlRowField
        .Position = 1
    End With
    With ActiveSheet.PivotTables("PivotTable1" ).PivotFields("Product" )
        .Orientation = xlPageField
        .Position = 1
    End With
    ActiveSheet.PivotTables("PivotTable1" ).AddDataField ActiveSheet.PivotTables( _
        "PivotTable1" ).PivotFields("Inv Qty" ), "Sum of Inv Qty", xlSum
    ActiveSheet.PivotTables("PivotTable1" ).AddDataField ActiveSheet.PivotTables( _
        "PivotTable1" ).PivotFields("Tot Price DZD" ), "Count of Tot Price DZD", xlCount
    With ActiveSheet.PivotTables("PivotTable1" ).PivotFields( _
        "Count of Tot Price DZD" )
        .Caption = "Sum of Tot Price DZD"
        .Function = xlSum
    End With
    ActiveSheet.PivotTables("PivotTable1" ).PivotFields("Sum of Tot Price DZD" ). _
        Orientation = xlHidden
    ActiveSheet.PivotTables("PivotTable1" ).AddDataField ActiveSheet.PivotTables( _
        "PivotTable1" ).PivotFields("Tot Invoice DZD" ), "Count of Tot Invoice DZD", _
        xlCount
    With ActiveSheet.PivotTables("PivotTable1" ).PivotFields( _
        "Count of Tot Invoice DZD" )
        .Caption = "Sum of Tot Invoice DZD"
        .Function = xlSum
    End With
    ActiveSheet.PivotTables("PivotTable1" ).PivotFields("Product" ).ClearAllFilters
    ActiveSheet.PivotTables("PivotTable1" ).PivotFields("Product" ).CurrentPage = _
        "CHEMICAL"
    ActiveSheet.PivotTables("PivotTable1" ).PivotFields("Country" ).ClearAllFilters
    ActiveSheet.PivotTables("PivotTable1" ).PivotFields("Country" ).CurrentPage = _
        "ALGERIA"
    Sheets("Sheet1" ).Select
End Sub


 
 
 
En surlignant en jaune la partie :  
 

Citation :

ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "Sheet1!R1C1:R7225C52", Version:=xlPivotTableVersion12).CreatePivotTable _
        TableDestination:="Sheet4!R3C1", TableName:="PivotTable1", DefaultVersion _
        :=xlPivotTableVersion12


 
 
Est-ce que quelqu'un a une idee d'ou peut venir l'erreur ?
 
Merci d'avance,
 
PS : Je travaille sur un clavier qwerty d'ou les accents manquants>

Reply

Marsh Posté le 27-06-2012 à 12:46:04   

Reply

Marsh Posté le 28-06-2012 à 07:24:03    

Bonjour,
il faut enlever le nom de l'onglet car là, tu créés une nouvelle feuille qui ne s'appelle pas "Sheet4".
 
 

Code :
  1. ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
  2.         "Sheet1!R1C1:R7225C52", Version:=xlPivotTableVersion12).CreatePivotTable _
  3.         TableDestination:="R3C1", TableName:="PivotTable1", DefaultVersion _
  4.         :=xlPivotTableVersion12


Ton TCD s'insérera en cellule A3 d'une nouvelle feuille.


---------------
Bel ours Vave, je me dois de l’admettre. -Skyl"win"-  Mais toi tu es intelligent -Homerde- - Ce génie -SkylWINd- JDD S16M72 10:43:46 GMT-DTC +1
Reply

Marsh Posté le 28-06-2012 à 09:32:43    

vave a écrit :

Bonjour,
il faut enlever le nom de l'onglet car là, tu créés une nouvelle feuille qui ne s'appelle pas "Sheet4".
 
 

Code :
  1. ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
  2.         "Sheet1!R1C1:R7225C52", Version:=xlPivotTableVersion12).CreatePivotTable _
  3.         TableDestination:="R3C1", TableName:="PivotTable1", DefaultVersion _
  4.         :=xlPivotTableVersion12


Ton TCD s'insérera en cellule A3 d'une nouvelle feuille.


 
D'accord, merci beaucoup de ta reponse, mais il reste un souci : dans mon code, je selectionnais la feuille 4 en utilisant

Citation :

Sheets("Sheet4" ).Select

. Y'a-t-il une commande pour selectionner la derniere feuille creee ?
 
Sinon, j'ai un autre souci : quand je veux enregistrer le document excel apparait le message :  

Citation :

The following features, click No, and then choose a macro-enabled file type in the File Type list.
 
To continue saving as a macro free workbook, click Yes.

.
 
 
En gros, il me demande d'enregistrer dans une version d'excel qui n'autorise pas les macros. Dans tous les cas, quand je reouvre mon fichier, plus moyen d'executer ma macro. Quelqu'un a-t-il une idee d'ou provient le souci ?
 
Merci d'avance, je debute en vba et j'espere progresser assez vite..
 
Cordialement.

Reply

Marsh Posté le 28-06-2012 à 09:40:18    

Tu n'as pas besoin de selectionner la dernière feuille créée, ça se fait tout seul.
Tu n'as qu'à supprimer cette ligne :

Code :
  1. Sheets("Sheet4" ).Select


 
Pour ton autre soucis, il faut que ton fichier soit enregistré avec l'extension "*.xlsm" (prenant en charge les macros) =>  fichier / enregistrer sous / type = *.xlsm


---------------
Bel ours Vave, je me dois de l’admettre. -Skyl"win"-  Mais toi tu es intelligent -Homerde- - Ce génie -SkylWINd- JDD S16M72 10:43:46 GMT-DTC +1
Reply

Marsh Posté le 28-06-2012 à 10:17:36    

Mais comment faire pour enregister en ce format : quand je veux enregister, j'ai le choix entre sauvegarder en differents types sans savoir sous quels types il y a le *.xlsm.
 
Et une fois au'on a code la macro elle s'enregistre tout de suite ?
 
Merci.

Reply

Marsh Posté le 28-06-2012 à 11:55:25    

C'est bon, j'ai reussi !! Tout venait de mon incomprehension de l'anglais (macro enable je pensais que ca voulait dire qu'on ne les autorisait pas).
 
Bref merci beaucoup de votre aide!

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed