IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Ma feuille ne se recalcule pas malgré un MySheet.Calculate [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    lvr
    lvr est déconnecté
    Membre éclairé Avatar de lvr
    Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2006
    Messages
    920
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2006
    Messages : 920
    Par défaut Ma feuille ne se recalcule pas malgré un MySheet.Calculate
    Bonjour,

    J'ai écris une petite formule VBA dont l'objectif est de sommer des valeurs distribuées sur plusieurs feuilles. Les feuilles à prendre en compte sont identifiées dans une cellule via leur nom ex "Sheet1;Sheet2;Sheet3".


    J'écris dans
    SheetSummary!A1: "Sheet1;Sheet2;Sheet3", et dans
    SheetSummary!B10: "=ComputeSummary(SheetSummary!$A$1;0;0)
    Ce qui équivaut à
    SheetSummary!B10 "=Sheet1!B10+Sheet2!B10+Sheet3!B10"

    Mais quand je modifie une des cellules à sommer (ex Sheet1!B10) la formule n'est pas recalculée. Même si je force le calcule (que ce soit en VBA ou manuellement dans la feuille).

    Le seul moyen de reforcer le calcul est de rentrer manuellement dans la cellule SheetSummary!B10, de l'éditer (F2) et de taper Enter. Là, la cellule est recalculée.


    Ma question est:
    comment faire pour que ce recalcule se fasse automatiquement ou, au maximum, sur base d'un SheetSummary.Calculate ?

    Merci,

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Public Function ComputeSummary(SheetNames As String, Optional rowOffset As Integer = 0 _
            , Optional colOffset As Integer = 0) As Double
     
        Dim arrSheetNames
        arrSheetNames = Split(SheetNames, ";")
     
     
        Dim sheetName As Variant
        Dim rge As Range
        Dim res As Double
        Dim sht As Worksheet
        Dim nme As Name
        Dim isError As Boolean: isError = False
     
        res = 0
        For Each sheetName In arrSheetNames
            Debug.Print sheetName
            On Error Resume Next
            Set sht = ThisWorkbook.Worksheets(sheetName)
            If (Err <> 0) Then
                isError = True
                End If
            On Error GoTo 0
            If (isError) Then
                Err.Raise 1, "ComputeSummary", "Unknown sheet """ + sheetName + """"
                End If
            On Error Resume Next
            Set nme = sht.Names("SUMMARY")
            If (Err <> 0) Then
                isError = True
                End If
            On Error GoTo 0
            If (isError) Then
                Err.Raise 2, "ComputeSummary", "Name ""SUMMARY"" not found in """ + sheetName + """"
                'Set nme = ThisWorkbook.Names("SUMMARY")
                'If (Err <> 0) Then GoTo unknownName
                End If
            On Error GoTo 0
            Set rge = nme.RefersToRange.Cells(1, 1).Offset(2 + rowOffset, 2 + colOffset)
            res = res + rge.Value
            Next
     
        ComputeSummary = res
     
    End Function

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    A tout hasard, essaiesen début de ta fonction

  3. #3
    lvr
    lvr est déconnecté
    Membre éclairé Avatar de lvr
    Profil pro
    Responsable de projet fonctionnel
    Inscrit en
    Avril 2006
    Messages
    920
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations professionnelles :
    Activité : Responsable de projet fonctionnel
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Avril 2006
    Messages : 920
    Par défaut
    Simple et efficace. Merci.

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [debutant][XSLT] ma feuille ne s'applique pas.
    Par M@t2802 dans le forum XSL/XSLT/XPATH
    Réponses: 2
    Dernier message: 20/12/2007, 11h50
  2. Réponses: 2
    Dernier message: 30/09/2007, 18h05
  3. Réponses: 2
    Dernier message: 21/09/2007, 10h10
  4. [VB.Net 2.0] Pourquoi ma DataTable ne se modifie pas malgré l'Update ?
    Par sandra69 dans le forum Accès aux données
    Réponses: 8
    Dernier message: 21/08/2007, 22h41
  5. [C#] [Excel] Feuille qui s'ouvre pas...
    Par lololefada dans le forum Windows Forms
    Réponses: 7
    Dernier message: 15/07/2004, 14h45

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo