TCD avec macro avec feuille de départ variable

Bonjour,

Je viens de créer une macro avec l'enregistrement de macro qui a pour but de générer un TCD.

Mais je suis bloquée car je souhaite ouvroir appliquer cette macro à différentes feuilles de mon classeur.

Sauf que dans la macro, il est défini la feuille qui permet de créer le TCD.

Comment puis-je faire pour faire en sorte qu'elle soit applicable à toutes les feuilles svp ?

Voila la formule que j'ai actuellement et qui bloque :

Columns("A:AQ").Select
    ActiveWorkbook.PivotCaches.Create(SourceType:=xlDatabase, SourceData:= _
        "Janvier!R1C1:R1048576C43", Version:=xlPivotTableVersion14).CreatePivotTable _
        TableDestination:="Janvier!R1C47", TableName:="Tableau croisé dynamique1", _
        DefaultVersion:=xlPivotTableVersion14
    ActiveSheets.Select
    Cells(1, 47).Select
    ActiveWorkbook.ShowPivotTableFieldList = True
    With ActiveSheet.PivotTables("Tableau croisé dynamique1").PivotFields("nom")
        .Orientation = xlRowField
        .Position = 1
    End With

Merci beaucoup de votre aide.

Bonjour

Tu peux utiliser Activesheet mais

  • de façon générale on fait rarement des TCD par code : on utilise plutôt une méthodologie qui permet de garder le même TCD qui s’actualise en fonction des données qui elles évoluent y compris changement de source de même structure.
  • il est un peu aberrant de construire un TCD sur 1 millions de lignes : quitte à coder on calcule la plage et mieux on met la plage sous forme de tableau et on fait un TCD basé sur le tableau

Peux-tu préciser ton contexte ?

Bonjour 78chris,

Désolé de ma réponse tardive.

Voici le contexte :

Chaque mois je fais une extraction de données qui contient des données telles que le nom du fournisseur, le numéro de commande, le numéro de la réception, la date demandée de livraison, la date de réception, la quantité à livrer, quantité livrée en réel. Chaque réception a sa propre ligne. L'objectif est d'automatiser le truc pour gagner un peu de temps. Du coup, chaque ligne calcule si la réception était en temps et si la quantité était correcte avec un système binaire 01. Suivi d'un calcul de l'OTIF en binaire 01 (si tout est correct = 1 // sinon = 0 )

Apres ça je fais un TCD qui me donne la somme et le nombre de ligne des OTIF pour chaque fournisseur. Et à coté de ce TCD je fais un % calculé avec somme OTIF/Nombre OTIF. Bref je ne sais pas si je suis claire. Suite à ça j'ai un tableau récapitulatif pour chaque fournisseur et mois/mois.

Du coup je pensais faire :

Voilà, je sais pas si c’est complètement clair.

Connais-tu un autre moyen que le TCD qui puisse faire ce type de calcul ?

Merci beaucoup.

Bonjour,

Bonjour Chris,

Je te propose un exemple de création de TCD dans le fichier joint.

Regarde et redis nous.

Celle ci est évidemment à adapter a tes besoins.

Sinon pour une aide adaptée, un fichier serait apprécié...

Cdlt.

43emilie-excel.xlsm (19.82 Ko)

Bonjour à tous

"à coté de ce TCD je fais un % calculé avec somme OTIF/Nombre OTIF"

Une moyenne dans le TCD doit faire la même chose...

Bonjour,

@78chris, effectivement. des fois on veut tellement faire bien qu'on fait compliqué la ou lon peut faire simple.

@Jean-Eric, je n'ai rien trouvé dans ton fichier.

Par contre je vous joint une idée du fichier que je souhaiterais faire tourner. Comme ça se sera surement plus claire.

Merci d'avance.

28otif-auto.xlsx (34.62 Ko)

Re

Le classeur de Jean-Eric contient un modèle de code de création de TCD : voir le module VBA

Comme je le disais pour ma part je conseille de garder le même TCD au fil du temps : en plus si tu extrais tous les mois des données pour Tableau de bord annuel, je vois encore moins l'intérêt de le refaire.

Dans l'onglet Extract, au lieu de copier coller (sans doute) les données, fait un lien vers le fichier d'extraction qui doit garder le même nom au fil des mois et juxtapose tes formules au tableau qui se crée lors d'une liaison.

Elles s'y intégreront, ce qui permettra qu'elles suivent automatiquement la taille de celui-ci.

Tu n'auras plus qu'à actualiser ton TCD.

Pour le tableau de bord faire les formules pour tous les mois en imbriquant les LIREDONNEESTABCROISDYNAMIQUE dans un SIERREUR en en dynamisant ces LIREDONNEESTABCROISDYNAMIQUE pour pouvoir les recopier d'un mois à l'autre : exemple en B11

=SIERREUR(LIREDONNEESTABCROISDYNAMIQUE("Moyenne de OTIF TOTAL";TCD!$A$3;"nom";$B$9;"MOIS OTIF";TEXTE(COLONNE(A1);"00"));0)

Utiliser un format de nombre adéquat pour masquer les 0.

Edit : Pour la moyenne utiliser MOYENNE.SI pour ne pas prendre en compte les 0.

Sinon on peut utiliser "" mais je ne suis pas fana dans des résultats supposés numériques

bonjour à tous

comme Chris : on crée un TCD au clavier/souris. Et ensuite il suffit de l'actualiser chaque mois.

méthode pour se simplifier la tâche : créer un fichier Miroir du fichier des données exportées.

Les données exportées sont dans Export.xls. On ne peut pas le mettre sous forme de tableau car chaque mois l'export va détruire sa structure de tableau . Alors on crée Miroir.xlsx. Et on copie Export, et on colle spécial avec liaison dans Miroir (prendre une plage qui anticipe que Export sera un jour de 100 000 lignes). Penser à figer la 1ère ligne qui contient les titres de colonnes.

Maintenant Miroir contient une image toujours fidèle de Export.

Mettre Miroir sous forme de tableau.

Créer le TCD basé sur Miroir.

C'est terminé.

Chaque mois on exporte, et on met à jour la liaison et le TCD.

Aucune manœuvre complexe, aucun VBA.

Bonjour

Si l'export est au format Excel et non texte, il suffit de lier la classeur tableau de bord à la source : toute liaison donne un tableau.

Sinon effectivement il faut un classeur intermédiaire.

78chris a écrit :

Bonjour

Si l'export est au format Excel et non texte, il suffit de lier la classeur tableau de bord à la source : toute liaison donne un tableau.

en cas de TCD direct vers un export.xls, faut-il redéfinir à chaque fois la zone de base du TCD ?

Bonjour

Non si les lignes et colonnes vides ne contiennent pas de caractères ou mise en forme parasites, Excel détecte automatiquement la plage remplie.

Passer par Données, connexions existantes, aller chercher le fichier dans l'arborescence et choisir l'onglet.

Le mois suivant, si on a écrasé le fichier précédant par le nouveau, que l'actualisation de la source et du TCD sont paramétrées pour être faits à l'ouverture, cela devient totalement transparent : le tableau de bord se met à jour.

Rechercher des sujets similaires à "tcd macro feuille depart variable"