Code VBA pour rafraîchir POWER PIVOT

Accueil – Le CFO masqué Forums Power Pivot Code VBA pour rafraîchir POWER PIVOT

Mots-clés : 

  • Ce sujet contient 6 réponses, 3 participants et a été mis à jour pour la dernière fois par armeniinho10, le il y a 1 année.
7 sujets de 1 à 7 (sur un total de 7)
  • Auteur
    Articles
  • #29092
    Marc-André Lépine
    Participant

    Bonjour,
    quel serait le code VBA à faire afin de rafraichir une Power Pivot avec des données provenant de l’externe via Power Query et des données provenant d’une table dans un autre worksheet.

    Je veux protéger le fichier (worksheet et workbook) afin que les usagers ne puissent pas modifier le fichier et ouvrir/modifier les query

    Merci

    #29099
    Francis Paquet
    Participant

    Marc-André,

    Le code VBA est simplement activeworkbook.refreshall

    Mais assurez-vous, dans les propriétés des connexions liées à PowerQuery, que le Enable Background Refresh n’est pas coché. Cela nous assure que les requêtes seront rafraîchies avant que les tableaux croisés dynamiques ne le soient.

    Francis

    #29100
    Marc-André Lépine
    Participant

    OK merci

    Par contre, quel serait le code pour s’assurer que les usagers ne peuvent pas modifier le fichier ou accéder à Power Query ou Power Pivot?

    Merci

    #29101
    Francis Paquet
    Participant

    Marc-André,

    Si vous ajoutez de la protection au niveau du classeur, les usagers ne pourront pas éditer vos requêtes PowerQuery, ni aller dans l’écran de PowerPivot.

    Le code pour ce faire est simplement: ActiveWorkbook.Protect Structure:=True, Windows:=False

    Comme n’importe quelle protection pour Excel, c’est suffisant pour les usagers moyens.

    Francis

    #29143
    Marc-André Lépine
    Participant

    Merci, le code marche, par contre, la mise à jour n’a pas le temps de finir avant que la macro re verrouille le fichier.
    Dans mes connections, j’ai la connection ThisWorkbookModel que je ne suis pas capable de décocher la case Enable background refresh, pourquoi?

    Merci beaucoup pour votre aide

    #29144
    Francis Paquet
    Participant

    Marc-André,

    ThisWorkbookModel est le modèle PowerPivot. Il ne faut donc pas le modifier dans les connexions.

    Pour le rafraîchissement, il faudrait peut-être insérer un délai. Essayez le code Application.Wait et passez le temps actuel plus un délai d’attente suffisant afin que la mise à jour soit complétée correctement avant de mettre la protection. Voir https://msdn.microsoft.com/fr-fr/library/office/ff822851.aspx par exemple.

    Francis

    #127035
    armeniinho10
    Participant

    Bonjour,

    J’ai un problème similaire à ce sujet.
    Je cherche à faire une macro qui éditerai des classeurs excel à partir d’une requête Power Query que j’ai ensuite transformé en formule cube (modèle de données Power Pivot).
    Ma macro va copier des codes qui proviennent de ma requête Power Query et les coller dans une cellule du modèle donnée ce qui mettra à jour les données de ma feuille. Je vais ensuite copier ma feuille et la coller dans un nouveau classeur.
    Le problème étant que j’obtiens des #N/A.
    Aucun problème sur les formules car lorsque je le fais manuellement cela fonctionne. Le code VBA est bon car parfois les données s’affichent correctement.
    J’ai mis un “Application.Wait (Now + TimeValue(“00:00:20″))” pour laisser un peu de temps de charge.
    Je me demande si l’actualisation de ma requête Power Query empêche l’actualisation de ma requête Power Pivot. Je ne suis pas capable de décocher la case Enable background refresh pour le WorkBookDataModel car la case est grisée.

    Ci-joint mon code.

    Attachments:
    You must be logged in to view attached files.
7 sujets de 1 à 7 (sur un total de 7)
  • Vous devez être connecté pour répondre à ce sujet.