Compter les cellules selon leur couleur de remplissage

STEPHANIE59

XLDnaute Nouveau
Bonjour à tous,
Voilà, je parcours depuis 2 jours le net et le forum pour trouver une solution à mon problème.
Malgré les nombreux essais, cela ne fonctionne pas.
HELP !
Cordialement
Stéphanie
 

Paf

XLDnaute Barbatruc
Re,

pas traces d'erreurs dans ces deux derniers classeurs.

Le fonctionnement est conforme à la limitation annoncée au post 6:
la dernière modification de couleur d'une cellule ne sera prise en compte qu'au clic suivant sur une cellule.

A+

Edit: s'il y a toujours non fonctionnement, précisez les opérations effectuées, les couleurs utilisées (même si les couleurs semblent être identiques, leur colorindex peut-être différents) ...
 

riton00

XLDnaute Impliqué
Bonjour,

Essaye le fichier joint, chez moi il est fonctionnel donc il le devrait être aussi chez toi. N'oublie pas d'activer les macros à l'ouverture du fichier, et lorsque tu mets une couleur dans ton fichier n'oublie pas de valider par enter pour prendre en compte dans la colonne AI cette couleur.

Slts
 

Pièces jointes

  • CONGES (1).xlsm
    32.8 KB · Affichages: 102

Paf

XLDnaute Barbatruc
re

curieux que ça fonctionne mieux avec le classeur de riton00 ?
la fonction est sensiblement la même, et le "déclencheur" est le même,
sauf qu'on le trouve dans Private Sub Worksheet_SelectionChange(ByVal Target As Range) (au niveau feuille) et dans Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)( au niveau Thisworkbook) et qui sont activés tous les deux (1 de trop)

concernant ce "déclencheur":
Code:
If Not Intersect(Target, Sh.Range("B3:AF14")) Is Nothing Then Sh.Range("B3:AF14").Calculate
If Not Intersect(Target, Sh.Range("B22:AF33")) Is Nothing Then Sh.Range("B22:AF33").Calculate
If Not Intersect(Target, Sh.Range("B41:AF52")) Is Nothing Then Sh.Range("B41:AF53").Calculate

Comme dans la fonction on trouve : Application.Volatile, le fait de lancer un Calculate (même partiel) déclenche la mise à jour de la fonction de toutes les cellules de toutes les feuilles.

En fait, il faudrait :
Code:
If Not Intersect(Target, Sh.Range("B3:AF14")) Is Nothing Then Sh.Range("B3")=1
If Not Intersect(Target, Sh.Range("B22:AF33")) Is Nothing Then Sh.Range("B22")=1
If Not Intersect(Target, Sh.Range("B41:AF52")) Is Nothing Then Sh.Range("B41")=1

Puisqu'alors on modifie la plage utilisée par la fonction, Application.Volatile n'est plus nécessaire, et seules les fonctions utilisant la plage qui vient d'être modifiée seront mises à jour. donc temps de traitement plus court.


Si on utilise plusieurs feuilles, il y aura nécessité de copier Private Sub Worksheet_SelectionChange(ByVal Target As Range) (au niveau feuille) pour toutes les feuilles.

Je préconiserais donc de conserver le "déclencheur" dans Private Sub Workbook_SheetSelectionChange(ByVal Sh As Object, ByVal Target As Range)( au niveau Thisworkbook) qui fonctionne tel quel avec une ou plusieurs feuille.

A+
 

STEPHANIE59

XLDnaute Nouveau
Bonjour à tous,
Je reviens vers vous car le fichier va évoluer et dans ce classeur, il y a plusieurs feuilles (1 par personne) et la fonction fonctionne dans le première feuille mais pas dans les autres.
C'est certainement un oubli de ma part...
Comment dois-je faire ?
 

Discussions similaires

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote