Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Tableau croisé dynamique programmés en VBA et Excel de différentes langues

2 réponses
Avatar
Jack.R
Bonjour,

J'ai un classeur excel qui contient un tableau croisé dynamique. Un
bouton permet de faire une mise à jour. On ré-importe des données puis
effectue un traitement qui doit se terminer par la mise à jour du
tableau croisé dynamique.

Le classeur fonctionne parfaitement sur un excel français. Si j'utilise
se classeur sur un excel italien, par exemple, cela ne fonctionne plus
et se termine par une erreur de l'application. Cela est dû, entre autre,
aux termes:
- "ligne" devenu "riga"
- "colonne" devenu "colonna"
- "valeur" devenu "valeur"

J'ai donc décider de créer ce tableau dynamiquement en VBA en mettant
les termes anglais mais cela ne marche pas sur le "Nombre de Valeur" qui
devient "Number of Values". J'obtiens une erreur "Impossible de lire la
propriété PivotItems de la classe PivotField".

J'ai essayé aussi avec "Sum of Values", sans plus de succés.

Y a-t-il un moyen de créer dynamiquement un tableau croisé dynamique en
s'affranchissant des problèmes de langue de l'excel utilisé ?

Merci

Jack.R


<code>

Range("B26").Select
ActiveWorkbook.PivotCaches.Add(SourceType:=xlConsolidation,
SourceData:= _
Array(Array("Data!C2:C3", "Item1"), Array("Data!C12:C16",
"Item2"))). _
CreatePivotTable TableDestination:="Analysis!R25C2", _
TableName:="PivotTable1"

With ActiveSheet
.PivotTables("PivotTable1").DataPivotField.PivotItems("Number of
Values").Position = 1
.PivotTables("PivotTable1").PivotFields("Number of
Values").Function = xlSum
End With

Application.CommandBars("PivotTable").Visible = False
ActiveWorkbook.ShowPivotTableFieldList = False

</code>

2 réponses

Avatar
MPi
Je n'ai pas beaucoup d'expérience avec les tableaux croisés, mais
peut-être pourrais-tu remplacer les termes entre guillemets par des Index ?

Michel

Bonjour,

J'ai un classeur excel qui contient un tableau croisé dynamique. Un
bouton permet de faire une mise à jour. On ré-importe des données puis
effectue un traitement qui doit se terminer par la mise à jour du
tableau croisé dynamique.

Le classeur fonctionne parfaitement sur un excel français. Si j'utilise
se classeur sur un excel italien, par exemple, cela ne fonctionne plus
et se termine par une erreur de l'application. Cela est dû, entre autre,
aux termes:
- "ligne" devenu "riga"
- "colonne" devenu "colonna"
- "valeur" devenu "valeur"

J'ai donc décider de créer ce tableau dynamiquement en VBA en mettant
les termes anglais mais cela ne marche pas sur le "Nombre de Valeur" qui
devient "Number of Values". J'obtiens une erreur "Impossible de lire la
propriété PivotItems de la classe PivotField".

J'ai essayé aussi avec "Sum of Values", sans plus de succés.

Y a-t-il un moyen de créer dynamiquement un tableau croisé dynamique en
s'affranchissant des problèmes de langue de l'excel utilisé ?

Merci

Jack.R


<code>

Range("B26").Select
ActiveWorkbook.PivotCaches.Add(SourceType:=xlConsolidation,
SourceData:= _
Array(Array("Data!C2:C3", "Item1"), Array("Data!C12:C16",
"Item2"))). _
CreatePivotTable TableDestination:="Analysis!R25C2", _
TableName:="PivotTable1"

With ActiveSheet
.PivotTables("PivotTable1").DataPivotField.PivotItems("Number of
Values").Position = 1
.PivotTables("PivotTable1").PivotFields("Number of
Values").Function = xlSum
End With

Application.CommandBars("PivotTable").Visible = False
ActiveWorkbook.ShowPivotTableFieldList = False

</code>


Avatar
Jack.R
Je n'ai pas beaucoup d'expérience avec les tableaux croisés, mais peut-être
pourrais-tu remplacer les termes entre guillemets par des Index ?

Michel



Excellente idée, cela fonctionne si je fais:

<code>
Dim Title As String

Range("B26").Select
ActiveWorkbook.PivotCaches.Add(SourceType:=xlConsolidation,
SourceData:= _
Array(Array("Data!C2:C3", "Item1"), Array("Data!C12:C16",
"Item2"))). _
CreatePivotTable TableDestination:="Analysis!R25C2", _
TableName:="PivotTable1"

With ActiveSheet
Title = .Cells(25, 2)

.PivotTables("PivotTable1").DataPivotField.PivotItems(Title).Position =
1
.PivotTables("PivotTable1").PivotFields(Title).Function = xlSum

End With


Application.CommandBars("PivotTable").Visible = False
ActiveWorkbook.ShowPivotTableFieldList = False

</code>

Il ne me reste plus qu'a découvrir quels sont les autres problèmes de
"langue" qui vont se poser.

Merci

--
Jack.R