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

Compte cellules couleurs et MFC

Mapat

XLDnaute Occasionnel
Bonsoir le forum

J'ai fais unagenda avec l'aide des fichiers des géants de ce forum et adapté à mes besoins
Je voudrais pouvoir compter les cellules de couleur correspondant à chaque journée
J'ai fais quelques essais mais ils ne sont pas concluants du tout.
C'est sans doute à cause des MFC qui sont sur les cellules à compter.
J'ai vu que le sujet a déjà des demandes mais malgré mes recherches je bute
Alors si quelqu'un a une idée...
Bonne soirée
 

Pièces jointes

  • Planning Janvier 2019.xlsm
    186.7 KB · Affichages: 29

M12

XLDnaute Accro
Bonjour,
Tu ne pourras pas compter des couleurs par fonction VBA pour des couleurs mise en place par MFC

et sur un module on ne nomme pas celui-ci avec le même nom que la macro ou fonction.
 

chris

XLDnaute Barbatruc
Bonjour à tous

Petite précision.

On peut par VBA utiliser display.format pour tester la couleur d'une MFC mais ce ne peut être utilisé que dans une procédure pas une fonction personnalisée...

Donc nécessite un bouton pour lancer la procédure pour un calcul one shot et non automatique...
 
Dernière édition:

Mapat

XLDnaute Occasionnel
Bonjour

Merci pour vos réponses
Avec ce comptage de couleurs, je voulais comptabiliser les heures qui sont découpées en 4 cellules
Serait-il possible d'écrire 15mn dans chaque cellule qui se colore ?
 

job75

XLDnaute Barbatruc
Bonjour à tous,

Des formules SOMMEPROD dans toutes les cellules (des milliers) prendront sans doute pas mal de temps à se calculer.

Cette macro s'exécute chez moi en 5,8 secondes :
Code:
Sub RepereCouleurs()
Dim t, c As Range, coul&, Z As Range, P As Range
t = Timer
For Each c In [E4:IY53] 'plage à adapter
    coul = c.DisplayFormat.Interior.ColorIndex
    If coul = xlNone Then
        Set Z = Union(IIf(Z Is Nothing, c, Z), c)
    ElseIf coul <> 48 And coul <> 49 Then 'ni gris ni bleu foncé
        Set P = Union(IIf(P Is Nothing, c, P), c)
    End If
Next
Application.ScreenUpdating = False
If Not Z Is Nothing Then Z.Replace 1, "", xlWhole 'RAZ
If Not P Is Nothing Then P.NumberFormat = "0": P = 1 'repère
MsgBox "Couleurs repérées en " & Format(Timer - t, "0.00 \s")
End Sub
Des 1 repèrent les couleurs, il suffira ensuite de multiplier leurs sommes par "0:15" pour obtenir les heures.

A+
 
Dernière édition:

Discussions similaires

Réponses
3
Affichages
398
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…