OVH Cloud OVH Cloud

tableaux croisés dynamiques

2 réponses
Avatar
corolleur
bonjour

je veux crée dans une de mes macros sous vb un tableau croisé dynamique. Pour cela, je me suis servi de l'enregistreur de macro et j'ai copié la macro. La taille de ma plage à mettre dans mon tableau varie, sa taille est stockée dans une variable de type integer. Mais quand je remplace dans la macro, la taille définie par l'enregistreur (par exemple 100) par la variable, il se produit une erreur

ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:=
"Résistances!R1C1:R" & i & "C3").CreatePivotTable TableDestination:="", TableName _
:="Tableau croisé dynamique2", DefaultVersion:=xlPivotTableVersion1
ActiveSheet.PivotTableWizard TableDestination:=ActiveSheet.Cells(3, 1
ActiveSheet.Cells(3, 1).Selec

L'erreur est la suivante
erreur d'execution 100
Cette commande requiert au moins 2 lignes de données sources
Vous ne pouvez pas l'utiliser sur 1 seule ligne de donnée

Si quelqu'un peut m'aider ...

2 réponses

Avatar
AV
La taille de ma plage à mettre dans mon tableau varie,
sa taille est stockée dans une variable de type integer.


Si ta plage dépasse les 32767 lignes, tu auras un message d'erreur "dépassement
de capacité"
Tu peux te passer de la déclaration (= variant)

ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"Résistances!R1C1:R" & i & "C3").CreatePivotTable
TableDestination:="", TableName _


Par contre, je ne vois rien de "choquant" dans ces intstructions ..

AV

Avatar
michdenis
Bonjour Corolleur,

Un pivotTable n'aime pas beaucoup se faire piler sur les pieds !.. Une façon de dire que tu ne peux pas créer un
pivottable à un endroit où il y en existe déjà un.

Voici un exemple simple comment procéder :

'-----------------------------
Sub PivotTable()

Dim Adr As String 'Source
Dim Adr1 As String 'Destination
Dim PT As PivotTable

'Définir où sera copié le pivottable
With Worksheets("Feuil1")
Adr1 = .Name & "!" & .Range("A1").Address
'Supprime l'ancien pivotcache
.Range("A1").CurrentRegion.Delete (xlUp)
End With

With Worksheets("Feuil2")
'Définir où sont les données pour le pivotcache
Adr = .Name & "!" & .Range("A1:B" & _
.Range("B65536").End(xlUp).Row).Address

'Création du PivotTable
Set PT = ActiveWorkbook.PivotCaches.Add _
(SourceType:=xlDatabase, SourceData:=Range(Adr)) _
.CreatePivotTable(TableDestination:=Range(Adr1), _
TableName:="Denis", DefaultVersion:=xlPivotTableVersion10)
With PT
.AddFields RowFields:="Élève"
.PivotFields("résultat").Orientation = xlDataField
End With
End With

End Sub
'-----------------------------


Salutations!





"corolleur" a écrit dans le message de
news:
bonjour,

je veux crée dans une de mes macros sous vb un tableau croisé dynamique. Pour cela, je me suis servi de l'enregistreur
de macro et j'ai copié la macro. La taille de ma plage à mettre dans mon tableau varie, sa taille est stockée dans une
variable de type integer. Mais quand je remplace dans la macro, la taille définie par l'enregistreur (par exemple 100)
par la variable, il se produit une erreur.

ActiveWorkbook.PivotCaches.Add(SourceType:=xlDatabase, SourceData:= _
"Résistances!R1C1:R" & i & "C3").CreatePivotTable TableDestination:="", TableName _
:="Tableau croisé dynamique2", DefaultVersion:=xlPivotTableVersion10
ActiveSheet.PivotTableWizard TableDestination:¬tiveSheet.Cells(3, 1)
ActiveSheet.Cells(3, 1).Select

L'erreur est la suivante :
erreur d'execution 1004
Cette commande requiert au moins 2 lignes de données sources.
Vous ne pouvez pas l'utiliser sur 1 seule ligne de données

Si quelqu'un peut m'aider ...