Menu

Macro actualisation auto TCD [Résolu]

Messages postés
89
Date d'inscription
lundi 4 juin 2012
Statut
Membre
Dernière intervention
23 mars 2019
- - Dernière réponse : eriiic
Messages postés
22729
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
18 mai 2019
- 23 mars 2019 à 17:03
Bonjour,
J’ai réalisé avec EXCEL un petit applicatif budgétaire composé de plusieurs feuilles, une qui sert d’écran menu composé de 6 boutons (choix), chacun donnant accès à une feuille spécifique.
Parmi celles-ci, une est dédiée à différents TCD de synthèse.
A l’usage, la lecture de cette feuille de synthèse ne s’avère pas pratique et la nécessité de devoir actualiser manuellement les données pose quelques problèmes aux utilisateurs.
J’ai donc développé, sur cette même feuille, un tableau de bord alimenté à partir des données des TCD.
Cela fonctionne parfaitement, il ne me reste qu’à intégrer une actualisation automatique dès lors que l’utilisateur accède ladite feuille.
J’ai effectué des recherches et trouvé une méthodologie que je n’arrive pas à intégrer à ma macro !!!
Pourriez-vous m’aider… je vous en remercie par avance.
Voici ma macro :
Sub Accès_Tableau_Analyse_Dynamique()
'
' Accès_Tableau_Analyse_Dynamique Macro

Sheets("Analyse_Dynamique").Visible = True
Sheets("Analyse_Dynamique").Activate
ActiveSheet.Unprotect "toto"
Cells.Select
Range("A5").Select
End Sub
Afficher la suite 

Votre réponse

2 réponses

Messages postés
15192
Date d'inscription
mardi 12 juin 2007
Statut
Contributeur
Dernière intervention
17 mai 2019
11695
0
Merci
Bonjour,

Un TCD ne se met pas à jour tout seul. Il faut donc l'ajouter à ton code, quelque chose comme ça :

With Sheets("Analyse_Dynamique")
.Visible = True
.Activate
.PivotTables("Nom du TCD").PivotCache.Refresh
End With


Si la feuille est protégée, il faut effectivement la déprotéger puis la reprotéger.
Si la feuille contient plusieurs TCD, il faut faire une boucle.

m@rina


Commenter la réponse de m@rina
Messages postés
22729
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
18 mai 2019
7373
0
Merci
Bonjour à tous,

Pour rafraichir tous les TCD d'un coup à l'activation de ta feuille, mettre dans le module de la feuille de synthèse :
Private Sub Worksheet_Activate()
ThisWorkbook.RefreshAll
End Sub

eric

JL00700
Messages postés
89
Date d'inscription
lundi 4 juin 2012
Statut
Membre
Dernière intervention
23 mars 2019
-
Bonjour Eric,
Voici comme convenu le fichier de test que j’ai créé.
Comme je vous l’ai indiqué, je souhaite que lorsque l’on clique sur le Bouton « Tableau_Analyse_Dynamique » de l’écran Menu, on accède à la feuille « Analyse_Dynamique », on actualise automatiquement les tableaux croisés et l’on positionne le curseur sur la cellule I20 du tableau de bord afin que l’utilisateur puisse sélectionner le mois, les autres cellules étant protégées.
J’ai à nouveau essayé avant de vous faire suivre le fichier mais rien n’y fait, je n’y arrive pas. Je pense pourtant ne pas être loin du but…
Il me reste encore du chemin à faire car en constituant le fichier test, je m’aperçois qu’alimenter les champs du tableau de bord à l’aide de RECHERCHEV n’est pas satisfaisant et présente des inconvénients.
Je reste bien entendu à votre entière disposition si nécessaire.
Encore merci de votre attention.
Cordialement
Jean

https://www.cjoint.com/c/ICwszXeFarL
eriiic
Messages postés
22729
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
18 mai 2019
7373 -
Bonjour,

Tu aurais pu fournir le mot de passe.

Dans ThisWorkbook Workbook_Open() à l'ouverture du classeur :
1) je masque toutes feuilles sauf Menu.
Masquage xlSheetVeryHidden car là il suffisait de faire un clic-droit sur un onglet pour avoir Afficher.. et accéder à tous les onglets.
2) je les protège avec UserInterfaceOnly:=True
Seul l'utilisateur est bloqué, les macros peuvent travailler sans déprotéger les feuilles.
Tu peux donc supprimer tous les autres .Unprotect et .Protec devenus inutiles.

Dans ThisWorkbook Workbook_SheetActivate (à l'activation d'une feuille) :
je masque les onglets autres que l'actif et Menu.
Comme ça ils se masquent même si tu cliques sur l'onglet menu.
Tu peux supprimer les Sheets("xxx").Visible = False (c'est =xlSheetHidden ou =xlSheetVeryHidden qu'il faut mettre d'ailleurs) devenus inutiles

Sub Accès_Analyse_Dynamique() :
je rafraîchi les TCD et j'active la feuille

Pas besoin d'un module par macro. Rassemble-les toutes dans unique module. C'est pénible de devoir chercher dans l'un ou l'autre. Ca ne te facilite pas le travail...

Il reste un message d'alerte à l'ouverture mais je n'arrive pas à l'enlever. Je ne l'ai pas sur le RefreshAll
Tu dois avoir une version excel récente car je ne vois aucun TCD, et je ne vois pas ce que je pourrais faire de plus..
Ca m'est déjà arrivé, sur 2010 on ne voit pas certains éléments nouveaux de 2016 ou 365.
https://www.cjoint.com/c/ICwwNmf4vL6
eric
JL00700
Messages postés
89
Date d'inscription
lundi 4 juin 2012
Statut
Membre
Dernière intervention
23 mars 2019
-
Bonjour Eric,
Un grand merci pour ton implication et désolé pour le Mot de Pass, à voiloir chercher le détail, on oublie l'essentiel !
Je vais prendre quelques jours pour analyser et comprendre dans le détail l'impact des corrections.
Il faut dire que j'arrive à 70 balais et j'ai découvert excel il y a 3à 4 ans. Je dois reconnaitre que je trouve cet outil génial et révèle chaque jour sa puissance notamment grâce à la communauté CCM.
Quant à la version EXCEL, j'ai 2013 !
Encore merci et peut-être à bientôt sur la toile CCM.
Amicalement
Jean
Re-Bonjour,
Désolé, qq tests plus tard, constat :
J'essaie de créer une opération… message 1004 sur module 5 ligne 27 et impossible de créer l'enregistrement.
Sur l'écran Tableau de Bord, la feuille n'est pas protégée et l'utilisateur peut saisir n'emporte où dans le tableau de synthèse.
J'ai essayé de protéger… rien n'y fait.
Pour le mot de pass : Toto mais je pense que tu avais trouvé.
Jean
eriiic
Messages postés
22729
Date d'inscription
mardi 11 septembre 2007
Statut
Contributeur
Dernière intervention
18 mai 2019
7373 -
Bonjour,

La question initiale était la mise à jour des TCD. Est-ce résolu ?

message 1004 sur module 5 ligne 27
Sheets("CreOp").Select : il faudrait peut être rendre visible ta feuille pour l'activer.
De plus cette partie est particulièrement mal programmée.
Il faut éliminer tous les .Select inutiles qui ralentissent considérablement le code. il ne faut garder que ceux obligatoires, c'est à dire lorsque vba ne te laisse plus le choix.
Par exemple au lieu de tes 24 lignes pour 2 valeurs tu mets :
    With Sheets("Base")
        lig = .Cells(Rows.Count, "A").End(xlUp).Row + 1 ' 1ère ligne vide pour nouvelle opération
        .Cells(lig, "A").Value = CDate(Sheets("CreOp").[E7].Value)    'inscription date
        .Cells(lig, "F").Value = Sheets("CreOp").[E9].Value    'inscription opé
        ' etc
    End With

nul besoin d'activer ou sélectionner quoique ce soit.
Attention au point devant
 .Cells(lig, "A")
, il est important.
Il signifie que tu t'adresses à la feuille désignée dans le With qui précède :
 With Sheets("Base")

Corrige tout ton code dans ce sens, tu y verras beaucoup plus clair en plus.

Sur l'écran Tableau de Bord, la feuille n'est pas protégée et l'utilisateur peut saisir n'emporte où dans le tableau de synthèse.
J'ignore ce qu'est l'écran Tableau de Bord.
Je suppose que tu as dû laisser un .Unprotect inutile ou trop de cellules déverrouillées.

Si ton pb est résolu merci de passer le topic en résolu (roue dentée à coté de ton titre en haut).
Si tu as d'autres soucis il faudra démarrer une nouvelle question.
eric
Commenter la réponse de eriiic