valorisée des cellules colorées en minutes (15 min) puis...

louna13

XLDnaute Nouveau
Bonjour,

J'ai crée un tableau de présence sur un poste pour des agents qui travaillent sur deux postes en même temps. Seul un poste m’intéresse.

la tranche horaire du poste est de 12 h jour et nuit.
Donc, j'ai un tableau pour la tranche 08h-20h et l'autre 20h-08h
Chaque colonne correspond à 1 h et est divisée en 4 colonnes pour les quart d'heure.
Donc quand l'agent est sur le poste qui m'interesse, je met en rouge les cellules.
Je souhaiterais valorisée ma couleur pour 15 min et en dehors du tableau en fin de ligne faire le total des cellules en rouge pour le transformer en temps de présence.

Je vous met en pièce jointe mon tableau se sera plus simple

Je vous remercie par avance

louna13
 

Pièces jointes

  • Tableau activite ides.xls
    133 KB · Affichages: 150

Fred0o

XLDnaute Barbatruc
Re : valorisée des cellules colorées en minutes (15 min) puis...

Bonjour Louna13 et bienvenue sur le forum.

Voici une solution par fonction personnalisée dans le fichier ci-joint. La fonction NbCoul(CoulRef; Zone) compte le nombre de cellules contenant la couleur de la cellule de référence (CoulRef) dans la zone (Zone). Ensuite, on miltiplie par 1/4 d'heures et on obtient le résultat souhaité.

Pour voie le code : <ALT> + <F11>.

A+
 

Pièces jointes

  • Louna13_V1.xls
    151.5 KB · Affichages: 315

Vilain

XLDnaute Accro
Re : valorisée des cellules colorées en minutes (15 min) puis...

Bonjour louna, bonjour fred0o,

Je trouve cette solution très intéressante et cherche à la comprendre.

te serait il possible de rajouter des commentaires à ton code car je galère un peu à le comprendre (je ne vois notamment pas ou tu détermines que la couleur doit être rouge).

Merci d'avance
 

Dugenou

XLDnaute Barbatruc
Re : valorisée des cellules colorées en minutes (15 min) puis...

Bonjour,

2 solutions possibles :
soit tu écris 1 dans les cellules à colorier en rouge : avec une MFC telle que si valeur =1 fond rouge police rouge; ensuite il n'y a plus qu'à faire la somme et multiplier par 15 pour avoir des minutes
soit tu ne veux rien changer à ton tableau mais alors il faut créer une fonction personnalisée avec le code suivant dans un nouveau module du classeur :
VB:
Function ColorCountIf(ZoneDeRecherche As Object, Modele As Range) As Integer

Application.Volatile True
ColorCountIf = 0
Rem pour l'interieur : modele.interior.colorindex et cell.interior.colorindex
Rem pour police : modele.Font.colorindex et cell.Font.colorindex
MaCoul = Modele.Interior.ColorIndex
For Each cell In ZoneDeRecherche
If cell.Interior.ColorIndex = MaCoul Then ColorCountIf = ColorCountIf + 1
Next cell

End Function
 
Dernière édition:

louna13

XLDnaute Nouveau
Re : valorisée des cellules colorées en minutes (15 min) puis...

:)Je te remercie pour ta solution.
Dans le fond, j'ai compris la formule par contre comment fait tu pour que la couleur rouge corresponde à 15 min et pour le totaliser en heure stp?

Encore 2explications ou trouve la fonction nbcoul, Pour voie le code : <ALT> + <F11> ça veut dire quoi et ou le voir surtout.

encore merci

louna13
 
Dernière édition:

Dugenou

XLDnaute Barbatruc
Re : valorisée des cellules colorées en minutes (15 min) puis...

Bonjour,
Salut Fredoo
pour correspondre à 15 mn on multiplie le nb de cellules en rouge par 1/96 (nb de 1/4 d'heures dans 24 heures)
pour voir le code : quand tu es dans excel : appuyer simultanément sur alt et sur F11 pour voir le code qui se trouve dans un module.

Cordialement
 

louna13

XLDnaute Nouveau
Re : valorisée des cellules colorées en minutes (15 min) puis...

alt F11 ne donne rien desolé de pousser mais un module c'est quoi ?

merci

J'aurai préciser que j'utilise excel depuis peu et que ce j'ai appris je les fait grace à des livres ou sur internet
 

Dugenou

XLDnaute Barbatruc
Re : valorisée des cellules colorées en minutes (15 min) puis...

Re,

ça m'épate que alt + f11 ne donne rien !!

outils/macro/visual basic editor donne le même résultat en général

un module c'est un peu comme une feuille de plus dans le classeur mais on y met que du texte pour les macros et on ne la voit que dans le VB editor
 

louna13

XLDnaute Nouveau
Re : valorisée des cellules colorées en minutes (15 min) puis...

encore désolé mais je n'ai pas d'onglet outil et ca me parait bizarre je n'y avais même pas fait attention. C'est peut être du a une version pro ou je ne c'est quoi.

Je te remercie de des réponse je vais approfondir tout ca.

louna13
 

Fred0o

XLDnaute Barbatruc
Re : valorisée des cellules colorées en minutes (15 min) puis...

Bonsoir à tous,

Louna, tu n'as pas précisé la version d'EXCEL que tu utilises. Si c'est 2003, tu dois avoir le menu "Outils" Si c'est 2007 et au delà (Comme dirait Buzz l'éclair...), il te faut aller dans le ruban développeur, puis choisir "Visual basic". Si tu n'as pas le ruban développeur dans EXCEL >= 2007, tu cliques sur le bouton en haut à gauche "Bouton Office", puis "Options EXCEL" puis "Standard" et là, tu coches la 3° case : "Afficher l'onglet Développeur dans le ruban". Puis tu cliques sur OK.

Le plus simple restant : <ALT> + <F11>.

Lorsque tu es sous Visual Basic, tu cliques sur Module1 et là, tu verras apparaître ce code :
VB:
Function NbCoul(CR As Range, Zone As Range)
    Dim c, nb
    nb = 0
    For Each c In Zone
        If c.Interior.ColorIndex = CR.Interior.ColorIndex Then nb = nb + 1
    Next
    NbCoul = nb
End Function

Pour faire simple, cette fonction compare la couleur de chaque cellule de la zone à la couleur de la cellule de référence.

Dans l'exemple de ton fichier, la cellule de référence est la cellule "AX6" que j'ai coloré en rouge.

Maintenant, voici le code commenté :
VB:
' Fonction personnalisée NbCoul. Les paramètres sont :
'   CR (couleur de référence. En fait c'est la couleur contenue dans la cellule désignée ici).
'   Zone. C'est la plage de cellules dans laquelle ont veut compter les cellules contenant la couleur de référence.

Function NbCoul(CR As Range, Zone As Range)
'   Déclaration des variables c (pour cellule) et bn (pour nombre)
    Dim c, nb
'   on initialise nb à zéro
    nb = 0
'   Pour chaque cellule de la zone
    For Each c In Zone
        '   Si la couleur de la cellule est égale à la couleur de référence, alors on rajoute 1 à nb
        If c.Interior.ColorIndex = CR.Interior.ColorIndex Then nb = nb + 1
    '   Porchaine cellule
    Next
    '   Le résultat de la fonction = le nombre de cellue contenant la couleur de référence.
    NbCoul = nb
End Function

Ensuite, dans la feuille de calcul, on divise le nombre de cellules rouges par 96 pour obtenir le nombre d'heures souhaitées. En effet, dans EXCEL, au format heure ou date, la valeur 1 est égale à 1 jour. Donc, 1/4 d'heure = 1 jour divisé par 24 heures divisé par 4 1/4 d'heures, soit 1 jour divisé par 96 quarts d'heures.

A+
 

louna13

XLDnaute Nouveau
Re : valorisée des cellules colorées en minutes (15 min) puis...

je v approfondir ton explication je trouve cela tres interressant .
Je te remercie

Je v essayer de m'y mettre à ce code vba, ta fonction je l'ai comprise mais expliquer comme cela c plus compliquée et plus intéressant
merci et surement à très bientôt

je persiste alt f11 ne fonctionne pas
 

Discussions similaires