Forum |  HardWare.fr | News | Articles | PC | S'identifier | S'inscrire | Shop Recherche
2890 connectés 

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  TCD en VBA

 


 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

TCD en VBA

n°2147303
anisbens45
Posté le 27-06-2012 à 12:46:04  profilanswer
 

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>

mood
Publicité
Posté le 27-06-2012 à 12:46:04  profilanswer
 

n°2147410
vave
Nice to meet me
Posté le 28-06-2012 à 07:24:03  profilanswer
 

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
n°2147420
anisbens45
Posté le 28-06-2012 à 09:32:43  profilanswer
 

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.

n°2147421
vave
Nice to meet me
Posté le 28-06-2012 à 09:40:18  profilanswer
 

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
n°2147424
anisbens45
Posté le 28-06-2012 à 10:17:36  profilanswer
 

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.

n°2147441
anisbens45
Posté le 28-06-2012 à 11:55:25  profilanswer
 

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!


Aller à :
Ajouter une réponse
  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  TCD en VBA

 

Sujets relatifs
VBAVBA- lisbox-user form
[VBA / Excel] supprimer une ligne sur deux[VBA / Excel] Modéliser dette dynamiquement
[VBA] Enregistrement de valeurs dans un fichier texteVBA/EXCEL
VBa : Dédoublonnage (Access 2007)Problème d'accès dll VBA/Excel
TCD à plage variableAide Copie TCD en VBA
Plus de sujets relatifs à : TCD en VBA


Copyright © 1997-2022 Hardware.fr SARL (Signaler un contenu illicite / Données personnelles) / Groupe LDLC / Shop HFR