XL 2010 Calculer retard

nabilexcel2007

XLDnaute Occasionnel
S'il vous plait j'aimerai calculer les retards d'heures de chaque personnes avec leur Matricule.
dans une feuille appelée Cumule sachant que l'heure d'entrée est a 08:15 maximum s'il a dépasse la cellule devient Rouge
le calcule se fait quotidiennement avec un état chaque fin du Mois Merci.
 

CISCO

XLDnaute Barbatruc
Bonjour

Cf. une possibilité en pièce jointe, dans la colonne D. Cette formule peut être tirée (=copiée/collée) vers le bas sans problème. Les changements nécessaires seront automatiquement faits.

J'ai mis autant d'onglets que de jours dans le mois de février pour faciliter le travail, en commençant par 1Fev, 2Fev, 3Fev..., et pas par 01Fev, 02Fev, 03Fev...

Pour les autres mois, il faudra bien sûr changer, dans la formule, Fev par le "nom" du mois et 29 par le n° du dernier jour du mois.

@ plus

P.S: Pour trouver cette solution, je suis parti d'une proposition faite par J. Boisgontier.
 

Pièces jointes

  • Calcul Heure.xlsx
    33.2 KB · Affichages: 26
Dernière édition:

job75

XLDnaute Barbatruc
Bonjour nabilexcel2007, CISCO,

Une solution VBA classique avec cette macro dans le code de la feuille "Cumule" :
VB:
Private Sub Worksheet_Activate()
Dim limite, d As Object, w As Worksheet, c As Range, n&, a(), lig&, v
limite = TimeValue("8:15")
Set d = CreateObject("Scripting.Dictionary")
For Each w In Worksheets
    If w.Name <> "Cumule" Then
        For Each c In w.Columns(1).SpecialCells(xlCellTypeConstants)
            If IsNumeric(c) Then
                If Not d.exists(c.Value) Then
                    n = n + 1
                    d(c.Value) = n 'mémorise la ligne
                    ReDim Preserve a(1 To 3, 1 To n)
                    a(1, n) = c 'matricule
                    a(2, n) = c(1, 2) 'nom
                End If
                lig = d(c.Value)
                v = Val(Replace(c(1, 3), ",", ".")) - limite
                If v > 0 Then a(3, lig) = a(3, lig) + v 'cumul
            End If
        Next c
    End If
Next w
'---restitution---
If FilterMode Then ShowAllData 'si la feuille est filtrée
With [A3] '1ère cellule de destination, à adapter
    If n Then
        With .Resize(n, 3)
            .Value = Application.Transpose(a) 'Transpose est limitée à 65536 lignes
            .Borders.Weight = xlThin 'bordures
        End With
    End If
    .Offset(n).Resize(Rows.Count - n - .Row + 1, 3).Delete xlUp 'RAZ en dessous
End With
End Sub
Elle s'exécute quand on active la feuille.

PS : les matricules de la feuille 04Fev correspondent à des noms différents, c'est anormal !

A+
 

Pièces jointes

  • Calcule Heure(1).xlsm
    31.8 KB · Affichages: 30

nabilexcel2007

XLDnaute Occasionnel
Bonjour mais le problème je dois présenter l'état qui est la feuille CUMULE détaillé.
et pour la formule j'ai besoin d'une condition : sachant que l'heure d'entrée est a 08:15.
si heure entrée > 08:15 affiché le nombre d'heure .
si heure entrée > 08:15 affiché Retard sinon Rien.
Merci
 

CISCO

XLDnaute Barbatruc
Bonjour à tous

Pour adapter nos propositions à ta feuille, il te faut mettre les mains dans le "cambouis". Soit tu fais avec le code proposé par Job75, soit tu fais avec "ma" formule. Cherche un peu et pose des questions si tu n'y arrives pas, en fonction de ton choix.

@ plus
 

CISCO

XLDnaute Barbatruc
Bonjour

Je ne vois pas trop le rapport entre tes divers fichiers :
* Dans le premier, tu mettais une feuille par jour
* Dans le dernier, tu mets une feuille par mois.

Dans ces conditions, il est évident qu'il ne faut pas utiliser les mêmes formules, et qu'il s'agit, à la limite, d'un autre problème.

Questions : Que veux-tu faire dans ta feuille Cumul journalier Heure > 15 min ? Mettre autant de lignes qu'il y a de jours dans l'année ?

Au passage, deux remarques :
1) Ce n'est pas très pratique de mettre des noms de feuille très longs car ceux-ci se retrouvent souvent dans les formules et rendent celles-ci illisibles. C'est plus pratique d'avoir Cumul!C5 plutôt que Cumul journalier Heure > 15 min !C5.
2) Cumul ne prend pas de e final en français (mais il est vrai qu'on n'est absolument pas forcé de respecter l'orthographe pour nommer les feuilles dans Excel).

@ plus
 
Dernière édition:

CISCO

XLDnaute Barbatruc
Rebonjour

Il est toujours intéressant de regarder ce que fait une formule en la sélectionnnant, puis en cliquant sur Formule et sur Evaluation de formule. Dans ton fichier, avec la formule dans Cumul....!E4, cela donne
Cumul!E4.JPG

Autrement dit, ta formule compare des n° de mois (un nombre de 1 à 12 inclus) à 2020. Tu devines d'avance le résultat... Cela va forcément donner une série de FAUX.

@ plus
 
Dernière édition:

nabilexcel2007

XLDnaute Occasionnel
Je vais vous expliquez :
Oubliant l’état journalier vous avez raison.
tous les jour je saisie les noms du personnels avec leurs heures d'Entrées et Sorties sachant que l'heure d'entrée est a 08:15 si > a 00:15 Minutes alors retard jusque la c'est bon.
En fin du mois je dois présenter un état détaillé nombre de minutes dépassée de chaque personne je fait comment ? Merci.
 

Membres actuellement en ligne

Aucun membre en ligne actuellement.

Statistiques des forums

Discussions
312 105
Messages
2 085 350
Membres
102 870
dernier inscrit
Armisa