VBA : Actualisation

Résolu
piroc Messages postés 61 Date d'inscription   Statut Membre Dernière intervention   -  
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   -
Bonjour,

J'ai un petit problème côté VBA sur mon Excel...

Voici ma situation.
J'ai créer la formule suivant sous VBA qui me permet en fonction d'une couleur d'une cellule de prendre en compte sa valeur ou non :

Option Explicit

Function SommeCouleur(Zone As Range, CRef As Range, X, Y)
    Dim c, Cel, S
    c = CRef.Interior.ColorIndex
    S = 0
    For Each Cel In Zone
        If Cel.Interior.ColorIndex = c Then
            S = S + Cel.Offset(Y, X)
        End If
    Next
    SommeCouleur = S
End Function



Dans l'utilisation la formule fonctionne mais elle ne s'actualise pas automatiquement. Pour ce faire je dois rentrer dans le texte de la cellule et taper "Entrée". Ayant plusieurs centaines de cellule à actualiser, ce n'est pas viable....

J'ai donc crée un Bouton avec comme macro :

Sub Selection()
    Range("CF35:CG333").Calculate
End Sub


Cette macro m'actualise bien mes formules, mais juste 1 seul fois. Si je remet des couleurs, que je reclique sur le bouton cela ne fonctionne plus. Je dois dan ce cas la retourner dans la VBA est modifier un caractère (Ex : "Espace" puis "Suppr"). Après cela je peux recliquer sur le bouton (1 fois).

Savez-vous pourquoi le bouton ne fonctionne qu'une fois ? Que dois-je faire pour ce problème ?


PS : J'ai essayé les F9, calcul formule automatique mais RAS.



Cordialement,

1 réponse

pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761
 
Bonjour,

Sans bouton, essaie d'ajouter
Application.Volatile
en début de ta fonction, comme ceci :
Option Explicit

Function SommeCouleur(Zone As Range, CRef As Range, X, Y)
    Dim c, Cel, S
    Application.Volatile
    c = CRef.Interior.ColorIndex
    S = 0
    For Each Cel In Zone
        If Cel.Interior.ColorIndex = c Then
            S = S + Cel.Offset(Y, X)
        End If
    Next
    SommeCouleur = S
End Function

0
piroc Messages postés 61 Date d'inscription   Statut Membre Dernière intervention  
 
Avec le
Application.Volatile
après mes applications de couleurs je fait un F9 et ça actualise tout.

Merci beaucoup !
0
pijaku Messages postés 12263 Date d'inscription   Statut Modérateur Dernière intervention   2 761 > piroc Messages postés 61 Date d'inscription   Statut Membre Dernière intervention  
 
de rien.
A+
0