macro tableau croisé dynamique

macro tableau croisé dynamique - VB/VBA/VBS - Programmation

Marsh Posté le 19-05-2010 à 10:06:23    

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

Reply

Marsh Posté le 19-05-2010 à 10:06:23   

Reply

Marsh Posté le 19-05-2010 à 12:48:20    

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
Reply

Marsh Posté le 19-05-2010 à 13:38:51    

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

Reply

Marsh Posté le 19-05-2010 à 13:39:15    

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é

Reply

Sujets relatifs:

Leave a Replay

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