VBA : Actualiser graphiques croisés dyn

Dimebag

XLDnaute Nouveau
Bonjour à tous, je viens vers vous pour un soucis sur une macro que je n'arrive pas à résoudre et dont je n'ai pas trouvé de solutions sur les divers forums. Je vous explique tout ça et vous joint mon fichier (fichier retouché, c à d que les noms et les infos ne sont pas réels) :

- En onglet "Tableau de bord", les résultats sont calculés automatiquement à partir des données des premiers onglets surlignés en orange.
Deux analyses sont possibles (à la journée et au mois), les onglets "Archives graph jour" et "Archives graph mois" correspondent aux données calculées dans l'onglet "Tableau de bord" qui sont archivées pour permettre d'alimenter des graphiques de tendance.

La macro qui ne fonctionne pas est celle de l'analyse au mois, elle s'appelle "maj-graph-mois". Sur cette macro, tout se déroule bien jusqu'au moment où je demande d'actualiser les graphiques croisés dynamiques de l'onglet "Graph des résultats mois".

Je précise que je suis en apprentissage de codage VBA et que je ne comprend pas encore très bien ce language, et également que mon fichier est protégé par le mot de passe "bad".

Merci par avance à ceux d'entre vous qui prendront le temps de m'aider sur ce problème.
 

Pièces jointes

  • Indices quota et qualité prod MACRO JOUR OK plus reprise macro mois.xlsm
    1.3 MB · Affichages: 50

phlaurent55

Nous a quittés en 2020
Repose en paix
Bonjour à tous,

@Oranger:
Bonjour,

Le fichier est protégé par un mot de passe. Pourrais tu me donner le mot de passe stp ou mettre en pièce joint le fichier sans mot de passe pour que l'on puisse t'aider ;)

Cdlt,

oranger

Le mot de passe est indiqué dans la question:
Je précise que je suis en apprentissage de codage VBA et que je ne comprend pas encore très bien ce language, et également que mon fichier est protégé par le mot de passe "bad".

à+
Philippe
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonjour Dimebag,

Je pense que le problème se situe au niveau de la définition de last_cell :
VB:
With .Range("A:T")
            Set last_cell = .Columns("A").Find("*",  SearchDirection:=xlPrevious)
            Set plage_graphique = .Resize(last_cell.Row)
        End With

En précisant aussi la cellule de départ de la recherche dans l'instruction find, cela semble fonctionner :
VB:
With .Range("A:T")
            Set last_cell = .Columns("A").Find("*", after:=.Cells(Rows.Count, "a"), SearchDirection:=xlPrevious)
            Set plage_graphique = .Resize(last_cell.Row)
        End With

Attention ! L'instruction FIND prend en compte le filtrage. Si les données vont jusqu'en ligne 100 mais si un filtre est actif et masque les lignes 80 à 100, alors la cellule last_cell sera A79 et non pas A100.
 

Discussions similaires

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa