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

  FORUM HardWare.fr
  Programmation
  VB/VBA/VBS

  macro tableau croisé dynamique

 



 Mot :   Pseudo :  
 
Bas de page
Auteur Sujet :

macro tableau croisé dynamique

n°1994335
nounouna
Posté le 19-05-2010 à 10:06:23  profilanswer
 

Bonjour,
Je débute avec VBA. Je voudrais créer plusieurs macros pour mon tableau simple. le tableau contient un nombre de colonne fixe: (ville, emploi, ..), mais le nombre de ligne varie.
chaque macro doit créer un tableau croisés dynamiques. Dans cet exemple, je traite le nombre d'occurence pour la ville, qui se trouve sur la colonne B.
J'ai utilisé l'enregistreur de macro pour écrire le code.
 
 
Private Sub CommandButton2_Click()
 
 
    Columns("B:B" ).Select
 
    ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
 
        "Feuil1!C2" ).CreatePivotTable TableDestination:="", TableName:= _
 
->        "Tableau croisé dynamique2", DefaultVersion:=xlPivotTableVersion10

 
    ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1)
 
    ActiveSheet.Cells(3, 1).Select
 
    With ActiveSheet.PivotTables("Tableau croisé dynamique2" ).PivotFields("ville" )
 
        .Orientation = xlRowField
 
        .Position = 1
 
    End With
 
    ActiveSheet.PivotTables("Tableau croisé dynamique2" ).AddDataField ActiveSheet. _
 
        PivotTables("Tableau croisé dynamique2" ).PivotFields("ville" ), "Nombre de ville", _
 
        xlCount
 
     Sheets("Feuil1" ).Select
 
End Sub
 
Apres execution de la cette macro, on m'indique cette erreur que je ne comprends pas.  
 
Merci pour votre aide

mood
Publicité
Posté le 19-05-2010 à 10:06:23  profilanswer
 

n°1994404
superdeug2
Geek 1 jour, Geek pour tjrs
Posté le 19-05-2010 à 12:48:20  profilanswer
 

c'est quoi ton message d'erreur?
Ton TCD est à créer sur la même feuille que celle où se trouve tes données?
Attention aussi au fait que si tu as des lignes variables, il te faudra nommer la plage de données (nommer la plage avec une fonction DECALER)
 
Dans ma macro ci dessous, la source de données variables se trouve sur la feuille SYNTHESE et a été nommée "BDD" auparavant (ce qui permet quelque soit le nb de ligne de ma base de données que toutes les données soient prises en compte dans le TCD) et le TCD à créer est placé dans la feuille1  
 
Sheets("SYNTHESE" ).Select 'se placer dans la feuille SYNTHESE
Range("A2" ).Select 'se placer en A2
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
        "BDD" ).CreatePivotTable TableDestination:="feuille1!R5C1", _
        TableName:="Tableau croisé dynamique3"
            ActiveSheet.PivotTables("Tableau croisé dynamique3" ).SmallGrid = False
    ActiveSheet.PivotTables("Tableau croisé dynamique3" )
 
Après le reste de la macro c'est la selection des champs et la mise en forme du TCD donc propre à chacun.


Message édité par superdeug2 le 19-05-2010 à 12:53:57

---------------
mon feed-back: http://forum.hardware.fr/hfr/Achat [...] 4641_1.htm
n°1994420
nounouna
Posté le 19-05-2010 à 13:38:51  profilanswer
 

Merci pour ta réponse.
J'ai changé la destination, en mettant le nom de la nouvelle feuille ainsi que l'emplacement du tableau:
 
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
        "Feuil1!C3" ).CreatePivotTable TableDestination:="[graph.xls]Feuil2!R2C2", _
        TableName:="Tableau croisé dynamique1", DefaultVersion:= _
        xlPivotTableVersion10
 
la fleche d'erreur pointe sur cette ligne: xlPivotTableVersion10
le message d'erreur est:  
cette commande requiert au moins 2 lignes de données sources. vous ne pouvez pas l'utiliser sur une seule ligne de données. essayez la méthode suivante:
si vous utilisez un filtre élaboré, selectionnez une plage de cellules qui contient au moins 2 lignes de données. Puis cliquez

n°1994421
nounouna
Posté le 19-05-2010 à 13:39:15  profilanswer
 

Merci pour ta réponse.
J'ai changé la destination, en mettant le nom de la nouvelle feuille ainsi que l'emplacement du tableau:
 
ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
        "Feuil1!C3" ).CreatePivotTable TableDestination:="[graph.xls]Feuil2!R2C2", _
        TableName:="Tableau croisé dynamique1", DefaultVersion:= _
        xlPivotTableVersion10
 
la fleche d'erreur pointe sur cette ligne: xlPivotTableVersion10
le message d'erreur est:  
cette commande requiert au moins 2 lignes de données sources. vous ne pouvez pas l'utiliser sur une seule ligne de données. essayez la méthode suivante:
si vous utilisez un filtre élaboré, selectionnez une plage de cellules qui contient au moins 2 lignes de données. Puis cliquez a nouveau sur la commande filtre élaboré


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

  macro tableau croisé dynamique

 

Sujets relatifs
Pb d'enregistrement en base d'un tableau linéarisé[VBA-Access] Tableau dont on ne connait pas Nb de lignes
Problème sur une macro ExcelSupprimer une "colone" dans un tableau
Initialisation de tableauSuppression de RDV dans Outlook via macro Excel
Macro SASVBA : débutant, besoind'aide pour une macro
Macro Excel date et tableau croisé dynamiqueMacro tableau croisé dynamique en vb
Plus de sujets relatifs à : macro tableau croisé dynamique


Copyright © 1997-2018 Hardware.fr SARL (Signaler un contenu illicite) / Groupe LDLC / Shop HFR