Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

XL 2016 Somme cellules horaire suivant couleur

bigeart

XLDnaute Occasionnel
Supporter XLD
Bonjour A tous,

En espérant que le confinement se passe toujours bien pour vous et vos proches.
Je viens vous solliciter pour un calcul un peu complexe.
Je souhaiterais additionner des cellules contenant des heures et des
minutes en fonction de leurs couleurs.
Ces cellules sont reparties sur un mois par semaines et par jours.
Elles sont coloriées en MFC en fonction de données horaires.
Exemple: Onglet S14, cellule des colonnes G et J
J'ai mis mon fichier Excel en VBA, mais on ne peut pas additionner les valeurs
des cellules qui ont une couleur lorsque celle-ci a été faite en MFC. (Exemple: onglet Synthèse, cellule O27)
A moins que j'ai raté quelque chose!!!!
Sur l'onglet synthèse, je souhaiterais
La somme des cellules vertes et oranges (par lignes) doivent être en minutes.
En revanche, pour les cellules bleus, il faut le nombre de cellules.

J'espère avoir été précis.

En vous remerciant par avance de votre aide.

Bigeart
 

Pièces jointes

  • Analyse temps.xlsm
    347.2 KB · Affichages: 19

mapomme

XLDnaute Barbatruc
Supporter XLD
Bonsoir @bigeart,

Sauf à recalculer pour chaque cellule les conditions de la MFC, il existe un moyen pour connaître le format d'une cellule issu d'une MFC : on utilise la propriété DisplayFormat de la cellule.

Malheureusement, cette propriété ne fonctionne que dans une Sub et pas dans une Function. Ce qui explique votre résultat.

Voir dans le fichier joint, un exemple (vite fait !) d'utilisation de cette propriété.

Pour lancer le calcul de la somme par couleur, double-cliquez sur la cellule F1.

VB:
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
Dim dico As New Dictionary, clef, i&

If Target.Address = [f1].Address Then
   For i = 1 To 20
      clef = Cells(i, "a").DisplayFormat.Interior.Color
      dico(clef) = dico(clef) + Cells(i, "a").Value
   Next i
   Range("f2:f" & 999).Clear
   i = 1
   For Each clef In dico.Keys
      i = i + 1
      Cells(i, "f") = dico(clef)
      Cells(i, "f").Interior.Color = clef
   Next clef
End If
End Sub
 

Pièces jointes

  • bigeart- couleur MFC- v1.xlsm
    37.6 KB · Affichages: 16
Dernière édition:

bigeart

XLDnaute Occasionnel
Supporter XLD
Bonjour Mapomme,

Je te remercie d'avoir pris le temps de te pencher sur mon problème.
Ton approche est intéressante et je la garde pour d'autres calculs.
Toutefois, ce que je recherche c'est d'avoir la somme des données dans
les cellules qui sont soit de couleur verte ou de couleur orange (en minutes) sur chaque
semaine et part ligne dans le tableau de synthèse du mois.
Pour celles qui sont de couleurs bleus, je vais utiliser la propriété que tu viens de mettre
elle devrait résoudre une partie de mon problème.

Ps: je ne suis pas très doué en VBA.

En te remerciant encore.

Bigeart
 

mapomme

XLDnaute Barbatruc
Supporter XLD
Re,

J'ai avancé. MAIS dans les colonnes à sommer du type G et J (onglets 'semaine'), les valeurs ne sont pas des nombres mais du texte. Je ne sais pas sommer. Transformez d'abord vos formules pour afficher des vraies heures ou minutes SVP.
 

bigeart

XLDnaute Occasionnel
Supporter XLD
Bonjour mapomme,

Désolé pour ma réponse tardive, je suis en télétravail et pas mal sollicité.
J'ai apporté des corrections sur l'onglet S14 de mon fichier.
J'ai modifié les cellules de la colonne AC18 à AC29 avec une nouvelle formule.
En revanche je perds la coloration des cellules, AC23 et AC29, sous conditions.
Et le plus surprenant, je perds le nombre 1 de la cellule AH29 alors que celui de la cellule AG23 est conforme. Cellule en jaune.
Après l'on peu peut-être colorer ces cellules en VBA. J'ai mis les codes couleurs sur l'onglet Synthèse cellule R10, mais je ne sais pas aller plus loin.
Bref, je suis peut-être sur un voie trop compliquée.

En tout cas merci pour votre aide.

Bigeart
 

Pièces jointes

  • Analyse temps_modif.xlsm
    350.7 KB · Affichages: 4

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…