Les Graphiques Ne Sont Pas Automatiquement Mise À Jour Lorsque Des Modifications De Données

J'espère que c'est facile. J'ai une série de tableaux MS Excel de ce point de données sur la même feuille de calcul. Les données sur la feuille de calcul est calculée à l'aide d'une fonction VBA. Lorsque les données sont mises à jour par la fonction VBA les nouveaux numéros ne sont pas reflétés dans les tableaux qui pointent vers eux. J'ai essayé d'appeler l'Application.Calculer, mais qui n'a pas fait l'affaire. Toutes les pensées?


UDPATE:

J'ai été en mesure de reproduire ce problème sur une échelle beaucoup plus petite. Voici comment:

  • Créer un nouveau classeur
  • Renommer la Feuille 1 "Résumé"
  • Renommer la Feuille 2 de "Données"
  • Ouvrir la fiche de Synthèse dans l'éditeur VBA et collez le code suivant:

    Private Sub Worksheet_Change(ByVal Target As Range)
       If Target.Parent.Range("worksheetDate") = Target Then
          Application.CalculateFull
       End If
    End Sub
  • Créer un nouveau module VBA

  • Collez le code suivant dans le nouveau module VBA (je m'en excuse, je ne peux pas obtenir de Débordement de Pile pour formater correctement pour la vie de moi, c'est le mieux que je puisse faire pour le faire):

    .

     Function getWeekValue (weekNumber As Integer, valuesRange As Range) As Integer   
    
     Dim aCell As Range  
     Dim currentDate As Date  
     Dim arrayIndex As Integer  
     Dim weekValues(1 To 6) As Integer  
    
     currentDate = ThisWorkbook.Names("worksheetDate").RefersToRange.Value
     arrayIndex = 1  
     For Each aCell In valuesRange 
         If month(currentDate) = month(ThisWorkbook.Sheets("Data").Cells( _  
                                       aCell.Row - 1, aCell.Column)) Then
             weekValues(arrayIndex) = aCell.Value 
             arrayIndex = arrayIndex + 1 
         End If 
     Next
    
     getWeekValue = weekValues(weekNumber)   
     End Function  

    .

  • Modifier les Données de feuille de calcul pour correspondre à l'image suivante:

Les Graphiques Ne Sont Pas Automatiquement Mise À Jour Lorsque Des Modifications De Données

  • Sélectionnez la Cellule B1 et le nom de la gamme "worksheetDate"
  • Dupliquer les lignes 1 à 3 dans l'image suivante:

Les Graphiques Ne Sont Pas Automatiquement Mise À Jour Lorsque Des Modifications De Données

  • Sur la ligne 4, en vertu de la "Semaine X" en-têtes, entrez la formule suivante

.

 = getWeekValue(1, Data!$A$2:$M$2)

incrémenter le premier argument de la getWeekValue fonction par un pour chaque semaine (par exemple, passer de 1 pour 1 Semaine, 2 pour la Semaine 2, 3, pour la Semaine 3, etc.

  • Créer un graphique à barres à l'aide de cellules A3 à E4, comme les données
  • De changer la date dans la cellule B2 pour une date entre 10/1/2010 et 12/31/2010, le choix d'un mois autre que le mois de mai qui est actuellement dans la cellule. Par exemple, si la date est 12/11/2010, de le changer pour quelque chose comme 11/11/2010 ou 10/11/2010. Il est à noter que les données et mise à jour du tableau correctement.
  • De modifier la date dans la cellule B2 de gain. Notez que les données mises à jour, mais le tableau ne tient pas.

Curieusement, après une période de temps (plusieurs minutes) s'est écoulé, le graphique enfin des mises à jour. Je ne sais pas si c'est parce que j'ai été d'effectuer d'autres activités qui a déclenché la mise à jour ou parce que Excel est le déclenchement d'une mise à jour au bout de plusieurs minutes.

sont vos graphiques basés sur de simples plages de données ou sont-ils les graphiques croisés dynamiques qui sont en fonction (a) du tableau croisé dynamique(s) (qui peuvent à leur tour être basé sur vos VBA valeurs calculées). Les deux types de graphique se comporter différentes - pour mettre à jour ce dernier, vous devez actualiser les Pivots plutôt que de recalculer et les graphiques croisés dynamiques suivra automatiquement
Merci pour l'info, je vais garder cela à l'esprit dans l'avenir. Dans ce cas, je travaille avec un graphique à barres, pointant vers une des données d'une simple plage de données qui n'est pas liée à un tableau croisé dynamique.
Si vous étiez en mesure de résoudre cette après tout? J'ai remarqué que l'insertion de la première ligne de la feuille de calcul mises à jour le tableau
Remarque: voir la réponse ci-dessous par moi, plus besoin d'utiliser la fonction DoEvents dans le code pour forcer les mises à jour sur le graphique.

OriginalL'auteur Adam | 2010-12-16