VBA TCD execution depuis un autre PC
Bonjour à tous,
J'ai créer une macro Excel, qui a pour but de simplifier au maximum le travail d'un collègue qui est novice en excel.
Mais je bloque sur un point, la macro de création du TCD ne fonctionne que sur mon Ordinateur...
Je pars d'une feuille "BDD" dans lequel j'ai toute ma base de donnée, sous forme de tableau "Tableau1", que j'actualise via une première macro qui fonctionne sans soucis.
Ensuite je créer une nouvelle feuille "TCD_résultat" et c'est là que ça bloque, je crée un TCD à partir de Tableau1 avec la création d'un modèle pour utiliser la fonction de total distinct du TCD.
par la suite je met en place les lignes et colonnes qui vont bien et j'affiche le segment sur lequel mon collègue doit effectuer sont filtre (c'est pas tres ergonomique mais déjà une révolution par rapport à la méthode d'aujourd'hui).
L'ensemble du code fonctionne sur mon ordinateur
Voyez vous quelque chose dans mon code qui l’empêche de s’exécuter chez quelqu'un d'autre, ou des points d'amélioration ?
PS : la macro RAZ "Remise à Zéro" permet de supprimer la partie TCD et d'executer la macro de créatio du TCD qui fonctionne sur mon poste
Merci beaucoup pour votre aide !
Sub TCD() ' construction du TCD
Dim Adresse_BDD As String
Dim Nom_Classeur As String
'Sauvegarde le nom du classeur
Nom_Classeur = ActiveWorkbook.Name
'Permet de trouver le chemin d'acces du classeur
Adresse_BDD = Workbooks(ActiveWorkbook.Name).Path & "\" & Nom_Classeur
'création de la connection pour exploitation sur TCD (notamment affichage des valeur unique)
Workbooks(Nom_Classeur).Connections.Add2 _
"WorksheetConnection", "", _
"WORKSHEET;Adresse_BDD", _
Nom_Classeur & "!Tableau1", 7, True, False
'Création de la feuille TCD_résultat avec vérification qu'elle n'existe pas déjà(via une fonction créée)
If FeuilleExiste("TCD_Resultat") = False Then
Sheets.Add.Name = "TCD_Resultat"
End If
'Création du TCD
ActiveWorkbook.PivotCaches.Create(SourceType:=xlExternal, SourceData:= _
ActiveWorkbook.Connections("WorksheetConnection"), _
Version:=6).CreatePivotTable TableDestination:="TCD_Resultat!R3C1", TableName:= _
"Tableau croisé dynamique"
With ActiveSheet.PivotTables("Tableau croisé dynamique")
'rajout des lignes
With .CubeFields("[Tableau1].[Type de bac]")
.Orientation = xlRowField
.Position = 1
End With
'supprimer les totaux des colonnes
.RowGrand = False
'rajout de la somme des bac rouge
.CubeFields.GetMeasure "[Tableau1].[NB_BAC]", xlSum, "Somme de NB_BAC"
.AddDataField ActiveSheet.PivotTables("Tableau croisé dynamique").CubeFields( _
"[Measures].[Somme de NB_BAC]"), "Nombre de bac Rouge"
'rajout du nombre de bacs vert(compte les n° de palette d'origine)
.CubeFields.GetMeasure "[Tableau1].[Palette origine]", xlCount, _
"Nombre de Palette origine"
.AddDataField ActiveSheet.PivotTables("Tableau croisé dynamique").CubeFields( _
"[Measures].[Nombre de Palette origine]"), _
""
'modification de la somme par un comptage disctinct
With .PivotFields("[Measures].[Nombre de Palette origine]")
.Function = xlDistinctCount
End With
'Modification du titre
.PivotFields("[Measures].[Total distinct de Palette origine]").Caption = _
"Nombre de bac Vert"
End With
' pour "masquer" les valeur que je ne souhaite pas afficher
Range("B6:B9,C4,C5").Select
' Range("C5").Activate
With Selection.Font
.ThemeColor = xlThemeColorDark1
.TintAndShade = 0
End With
ActiveWorkbook.SlicerCaches.Add2(ActiveSheet.PivotTables( _
"Tableau croisé dynamique"), "[Tableau1].[N°palette préparation]"). _
Slicers.Add ActiveSheet, _
"[Tableau1].[N°palette préparation].[N°palette préparation]" _
, "N°palette préparation", "N°palette préparation", 180, 1, 350, 198.75 'position de la fenetre Y, X, dimension de la fenetre X,Y
d'ailleurs avez vous des problèmes lorsque vous essayez mon code ? ou est ce simplement les 2 collègues avec qui j'ai testés