Changer la source data des tcd en VBA

bonjour ,

je cherche quelqu'un pour m'aider à résoudre mon problème , je suis en stage et on m'a demandé d'automatiser la création des tcd en changeant la data source sachant que j'ai un classeur qui contient plusieurs feuilles et sur chaque feuille ya plusieurs tcd

je veux savoir si je peux créer des tcd identiques à ceux existants sur ce classeur à partir d'une base de donnée qui change le nom et l'emplacement à chaque trimestre , je suis débutante en vba et je ne sais mème pas comment commencer

merci

Bonjour,

tu t'engages sur un plus ou moins gros projet, je pense que pour commencer, il faudrait que tu te renseignes sur la création automatisée de tcd, si c'est nécessaire d'en créer bien sûr, si il faut juste modifier leur source de données, il faut voir pour ça. Tu peux facilement avoir des lignes de code avec l'enregistreur de macro, tu pourras ainsi voir les fonctions et propriétés utilisées pour créer un tcd ou modifier sa source de données.

Si tu dois changer toutes les sources de données de tes tcd pour une source qui change de nom et d'emplacement, je te conseille de te renseigner sur:

  • For Each, qui te permettra de faire une boucle sur tes feuilles
  • opérateur Like, si jamais tes feuilles commencent par le même nom
  • GetOpenFileName, pour avoir le nom d'un fichier sélectionné via une fenêtre d'ouverture de fichier
  • Application.Inputbox(...,Type:=8) pour sélectionner une plage de cellules (pour la source de données)

ça devrait déjà te donner des bases pour ton projet.

L'important je dirais, c'est de schématiser tout ce que tu vas devoir faire, et comment les fonctions pourraient t'y aider (pas forcément via croquis), une fois que tu verras le fonctionnement général et comment faire fonctionner tout ça, tu arriveras mieux à coder derrière à mon avis

Merci Ausecour pour ces idées mais je trouve ça trop compliqué à faire vu mon niveau en vba , tu peux m'aider please ?

Merci Ausecour pour ces idées mais je trouve ça trop compliqué à faire vu mon niveau en vba , tu peux m'aider please ?

Bonsoir Hadjila1992,

Je trouve les conseils de Ausecour plutôt bien avisés, je ne l'imagine pas faire ton exercice à ta place.

Pour cela, tu peux t'instruire ici :

Personnellement, en tant que débutant VBA, ce n'est pas par des TCD que je commencerai.

Bonjour

De façon générale on ne crée pas de TCD par VBA.

On les crée manuellement avec une source interne ou externe, ce qui semble ton cas.

La source externe peut être un fichier qui ne change pas de nom et est

  • soit écrasé au fil du temps par de nouvelles données,
  • soit placé dans un nouveau dossier avec une copie du classeur d'analyse contenant les TCD

Comme tu as 2016, il y a encore plus simple :

  • on définit la source (chemin et nom du classeur) dans une cellule du classeur d'analyse (donc cellule qui peut être modifiée selon besoin)
  • on utilise cette information pour lier les données via un requête PowerQuery
  • les TCD sont liés à la requête

Quand la source change, il suffit ensuite d'utiliser Données, Actualiser tout pour que la nouvelle source soit utilisée pour la mise à jour de tous les TCD.

c'est très simple et très efficace...

oups double envoi

Bonjour 78Chris,

Une question concernant

on définit la source (chemin et nom du classeur) dans une cellule du classeur d'analyse (donc cellule qui peut être modifiée selon besoin)

Si je comprends il est possible de définir dans une cellule le chemin d'accés d'un fichier et celui-ci modifiera la source de la requête?,

Comment le code Query sera écrit pour cette première ligne source?,

Merci d'avance,

Cordialement,

Bonjour

Il faut nommer la cellule.

On définit une variable en début de requête qui prendra la valeur de cette cellule nommée et l'attribuera à la ligne qui référence la source en lieu et place du chemin en dur

exemple avec une cellule nommée Dossier

Chemin seul dans la cellule

   
   Chemin = Table.FirstValue(Excel.CurrentWorkbook(){[Name="Dossier"]}[Content]),
   Source = Excel.Workbook(File.Contents(Chemin & "tableau.xlsx"), null, true),

Chemin et fichier dans la cellule

   
   Chemin = Table.FirstValue(Excel.CurrentWorkbook(){[Name="Dossier"]}[Content]),
   Source = Excel.Workbook(File.Contents(Chemin), null, true),

Bonjour Chris

je ne comprends pas trop cette mèthode , tu veux dire que je peux effectuer une requète PQ sur ma base de données et puis rajouter ces deux lignes de code dans ma requète ??

RE

Si tu lis bien il faut :

Dans Excel

une cellule contenant le chemin et nom de fichier

nommer cette cellule

Dans PowerQuery

créer une requête allant chercher ton fichier

puis éditer cette requête dans l'éditeur avancé, y ajouter une ligne et modifier la ligne Source

That's all folks !

Rechercher des sujets similaires à "changer source data tcd vba"