VBA Excel : Réevaluation automatique d'une formule

Résolu
vous_dites Messages postés 4 Date d'inscription jeudi 16 mars 2006 Statut Membre Dernière intervention 9 novembre 2007 - 8 nov. 2007 à 15:37
vous_dites Messages postés 4 Date d'inscription jeudi 16 mars 2006 Statut Membre Dernière intervention 9 novembre 2007 - 9 nov. 2007 à 14:16
Bonjour si vous avez une solution à mon probleme ca m'aiderait enormement.

Je vous explique mon cas. J'ai des cellules avec des reels à l'interieur dès que j'ai fini de traiter des valeurs je met les cellules sur fond gris.
J'ai ecrit en m'aidant de code deja ecrit sur internet une fonction qui permet de calculer la somme des cellules.
Voici la fonction :

Function Couleurs(Plage As Range, IndexCouleur As Integer) As Double
Dim Cel As Range
  For Each Cel In Plage.Cells
    If Cel.Interior.ColorIndex = IndexCouleur Then
        If IsNumeric(Cel) Then
            Couleurs = Couleurs + Cel.Value
        End If
    End If
  Next Cel
End Function

J'appelle cette fonction dans la cellule A1 comme ca, j'ai en haut à gauche la somme des valeurs des cellules grises.

Le probleme : Dès que je met une nouvelle cellule sur fond gris, la valeur en A1 ne se met pas à jour automatiquement.

Y'aurait il un moyen en VBA de lancer l'evaluation d'une formule des qu'il y a un changement dans la feuille excel?
Merci d'avance pour vos reponses.

6 réponses

Utilisateur anonyme
8 nov. 2007 à 16:51
Salut,

Les méthodes te sont proposé automatiquement :
Range(Cells(i, j), Cells(i2, j2)).Calculate







__________
Kenji

(


Nouveau forum VBA/Office
3
vous_dites Messages postés 4 Date d'inscription jeudi 16 mars 2006 Statut Membre Dernière intervention 9 novembre 2007
8 nov. 2007 à 16:31
Je suis d'accord avec toi, avec l'evenement Worksheet_Change c'est faisable, mais comment demander la réevaluation de la formule?

Est ce qu'il existe en VBA un truc qui ressemble à :
Range(cells(i,j),cells(i',j')).formula.calculate()
0
vous_dites Messages postés 4 Date d'inscription jeudi 16 mars 2006 Statut Membre Dernière intervention 9 novembre 2007
8 nov. 2007 à 16:44
salut, 
Si vous avez une idée pour faire un code dans ce style :

Pour toutes les cellules de la feuille qui possede la fonction : XXX , reevaluer la formule.

ce resolvera totalement mon prbleme.
merci d'avance pour vos reponses.
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
cs_MPi Messages postés 3877 Date d'inscription mardi 19 mars 2002 Statut Membre Dernière intervention 17 août 2018 21
8 nov. 2007 à 23:48
Pas certain de bien comprendre, mais as-tu regardé le mot Volatile dans ton aide ?

MPi²
0
vous_dites Messages postés 4 Date d'inscription jeudi 16 mars 2006 Statut Membre Dernière intervention 9 novembre 2007
9 nov. 2007 à 14:16
Merci c'est bon ca fonctionne.

En ecrivant seulement range(...).calculate ca faisait rien, j'ai ajouter avant :
Application.Calculation = xlCalculationManual

et c'est bon!
Merci beaucoup de votre aide, ca tourne impec!!!!
0
Rejoignez-nous