Erreur sommeprod

J'ai corrigé les 2 lignes en jaune

dis moi si ok

Ca ne marche toujours pas. normalement sous le 04 on doit avoir 11 heures travaillées et 11 heures travaillés pour le 28.

les heures de nuit du 04 et 28 doivent être de 3.

Merci!

je suis quand même tenace ... tu as mis que l'agent1 était en vacances le 4 !

cela n'explique pas encore le 28 !!

regarde en jaune

j'ai mis un retour de l'agent1 le 4 (fin de congé le 3)

j'ai aussi modifié l'appel à TOV

regarde en jaune

j'ai mis un retour de l'agent1 le 4 (fin de congé le 3)

j'ai aussi modifié l'appel à TOV

Merci!

Je constate que les heures travaillées sont correctes mais les absences ne sont plus prises en compte dans le comptabilisation des heures travaillées("J'avais merdé à ce niveau , j'avais oublié qu'il était en vacance le 04).. Maintenant que vous l'avez mis en vacances le 2 et le 3,normalement la formule devra le prendre en compte , mais ce n'est pas le cas.

Par ailleurs le 28 n'affiche plus les heures de nuit travaillées ce jour...

Comme vous avez dit tantôt, la solution macro est la meilleure, moi je ne connais que dal au macro, tout le boulot que tu vois, si c'est macro c'est que c'est MFerrand.....

J'avais promis de le laisser tranquille aujourd'hui...

Si vous avez une idée je suis preneur sinon , je vais commencer à l'emmerder demain!!!! j'espère que vous aurez la solution d'ici là!

En tout cas , Merci pour tout!

je n'ai pas vraiment corrigé la formule des heures de nuit qui repose toujours sur TOV

je vais voir

est-ce que pour le jour c'est ok ?

Je constate que les heures travaillées sont correctes mais les absences ne sont plus prises en compte dans le comptabilisation des heures travaillées("J'avais merdé à ce niveau , j'avais oublié qu'il était en vacance le 04).. Maintenant que vous l'avez mis en vacances le 2 et le 3,normalement la formule devra le prendre en compte , mais ce n'est pas le cas.

à quel niveau ?

je vais voir aussi pour la macro si j'ai un peu d etemps libre encore

je n'ai pas vraiment corrigé la formule des heures de nuit qui repose toujours sur TOV

je vais voir

est-ce que pour le jour c'est ok ?

Je constate que les heures travaillées sont correctes mais les absences ne sont plus prises en compte dans le comptabilisation des heures travaillées("J'avais merdé à ce niveau , j'avais oublié qu'il était en vacance le 04).. Maintenant que vous l'avez mis en vacances le 2 et le 3,normalement la formule devra le prendre en compte , mais ce n'est pas le cas.

à quel niveau ?

Au niveau de la feuille ABSENCES il y'a le nom de l'agent , sa date de départ et sa date de retour....

Si j'arrive à gerer ça , ca me fera plaisir...

Merci infiniment!

Salut!

Je pense que je me suis planté!!!!

Je n'arrive même plus à faire fonctionner les formules , .. je pense que je suis fatigué!!

Je vais peut être me reposer un peu pour voir claire..

D'ici là je joins le bon fichier peut être que vous aurez une solution d'ici là!!

Merci!

Pas d'inquiétude,

voici une version vba, c'est plus simple à faire

Function calculjour(qui As Range, quand As Range) As Variant

Dim valjour(1 To 4)
valjour(1) = 7 / 24
valjour(2) = 7 / 24
valjour(3) = 6 / 24
valjour(4) = 4 / 24

calculjour = 0

With Sheets("QUART PAR AGENT")
    ref = .Range("C3").Value
    ligne = Int((quand.Value - ref) / 7) * 13
    colonne = ((quand.Value - ref) Mod 7) * 4
    For i = ligne + 6 To ligne + 6 + 7
        For j = colonne + 3 To colonne + 3 + 3
            If .Cells(i, 2) = qui.Value Then
                If .Cells(i, j) = "X" Then calculjour = calculjour + valjour(j - colonne - 2)
            End If
        Next
    Next
End With

End Function

je vais la généraliser pour prendre en compte la nuit ... demain matin !! ... et quand on sera sûr du résultat !

en tous cas c'est plus facile à corriger.

Merci!

Donc à demain!

Function nbHeures(qui As Range, quand As Range, code As Integer) As Variant
' code = 1 Jour, 2 Nuit
Dim durees(1 To 4, 1 To 2) As Variant
durees(1, 1) = 7 / 24
durees(2, 1) = 7 / 24
durees(3, 1) = 6 / 24
durees(4, 1) = 4 / 24
durees(1, 2) = 6 / 24
durees(2, 2) = 0 / 24
durees(3, 2) = 0 / 24
durees(4, 2) = 3 / 24

nbHeures = 0

With Sheets("QUART PAR AGENT")
    ref = .Range("C3").Value
    ligne = Int((quand.Value - ref) / 7) * 13 + 6
    colonne = ((quand.Value - ref) Mod 7) * 4 + 3
    For i = ligne To ligne + 7
        For j = colonne To colonne + 3
            If .Cells(i, 2) = qui.Value Then
                If .Cells(i, j) = "X" Then nbHeures = nbHeures + durees(j - colonne + 1, code)
            End If
        Next
    Next
End With

End Function
3test2.xlsm (116.50 Ko)

Bonjour Steelson,

Je vois que ça marche bien!

Merci beaucoup, par ailleurs je n'arrive pas à l'inserer sur ma feuille réelle si je le mets(je crée module 3 et je copie dedans) ça ne marche pas. Je joins le bon fichier. pouvez vous le configurer sur le fichier joint à ce messsage s'il vous plait.

Par ailleurs, a quel condition ce macro s’exécute ? l'avez vous lié à un bouton ou juste quand on ouvre le classeur...

Je me démandais si ce serait pas mieux de mettre un boulon calculer au niveau de la feuille HEURES pour actionner la comptabilisation de heures.

J'ai aussi remarqué un bug dans le code VBA, l'agent 3 n'est pas dans le tableau de QUART PAR AGENT et pourtant le code a calculer ses heures travaillées, ce qui m'inquiète un peu car je ne sais pas où il a puis sortir ses heures.

peux t'on supprimer directement le tableau pour les agents qui ne figurent pas sur la feuille QUART PAR AGENT pour juste afficher les heures réellement effectuées par les agents qui ont fait le quart et afficher seulement les agents dont le nom figure sur la feuille QUART PAR AGENT.

donc agent9 et agent3 ne doivent pas figurer sur la feuille QUART PAR AGENT.

Merci!

Par ailleurs est ce qu'on devra supprimer la feuille TOV, avec le macro je ne vois plus son utilité.

Merci!

Je joins le bon fichier. pouvez vous le configurer sur le fichier joint à ce messsage s'il vous plait.

Par ailleurs, a quel condition ce macro s’exécute ? l'avez vous lié à un bouton ou juste quand on ouvre le classeur...

OK je vais l'intégrer

J'ai ajouté Application.Volatile, il n'y aura rien à faire, c'est une fonction qui s'exécute comme une autre dès qu'excel détecte une modification dans les données.

Il se peut que cela corrige justement Agent3 ...

Quelle feuille faut-il prendre ? QUART PAR AGENT ou QUART2018-01 ??

Par ailleurs est ce qu'on devra supprimer la feuille TOV, avec le macro je ne vois plus son utilité.

Merci!

je ne sais pas, cela sert peut-être à autre chose ? je vais regarder

Je joins le bon fichier. pouvez vous le configurer sur le fichier joint à ce messsage s'il vous plait.

Par ailleurs, a quel condition ce macro s’exécute ? l'avez vous lié à un bouton ou juste quand on ouvre le classeur...

OK je vais l'intégrer

J'ai ajouté Application.Volatile, il n'y aura rien à faire, c'est une fonction qui s'exécute comme une autre dès qu'excel détecte une modification dans les données.

Il se peut que cela corrige justement Agent3 ...

Quelle feuille faut-il prendre ? QUART PAR AGENT ou QUART2018-01 ??

Salut!

TOV est utilisé uniquement pour le calcul des heures.

C'est la feuille QUART PAR AGENT qui sera utilisé ... Je suis entrain de voir si je peux mettre QUART2018-01 en execution en background.

Merci beaucoup, par ailleurs je n'arrive pas à l'inserer sur ma feuille réelle si je le mets(je crée module 3 et je copie dedans) ça ne marche pas. Je joins le bon fichier. pouvez vous le configurer sur le fichier joint à ce messsage s'il vous plait.

parce que d'un côté c'est Agent1 et de l'autre agent1 sans majuscule !

voici

il faut refaire la recap

Salut!

C'est une erreur de ma part. Au fait, on doit recuperer la liste des agents soit dans la feuille équipe soit dans la feuille QUART PAR AGENT.

Merci!

et je m'excuse pour les erreurs.

si cela fonctionne c'est parfait,

sinon ... on repart sur des bonnes bases

Personnellement, je trouve la présentation de la rotation des équipes "jolie" mais je ferais plutôt une base de données plus simple sur laquelle j'appuyerai ce calcul complexe mais aussi la présentation de la rotation des équipes. Et là tout deviendrai plus simple et plus maintenable !

Salut Steelson,

Ca devient très lent.. Si je clique sur l'étoile ça prend beaucoup de temps(1 à 2 minutes)avant de mettre à jour la feuille QUART PAR AGENT.

Venons en à la feuille HEURES :

J'ai essayé de modifier la constitution des équipes : ça ne prend pas en compte les nouvelles agents introduites ie si je change le nom des agents des équipes, la feuille heure ne modifie le nom des agents pour le calcul des heures et les heures travaillées restent vides.

Si je mets à jour manuellement la liste des agents, il affiche la 1ère semaine travaillés pour le 1er agent, la 1ère et 2ème semaines pour le second, 1ère, 2ème et 3ème pour le 3ème agent...

Pour le recap, je voudrais que ça soit automatique aussi si possible, HTT = le total des heures travaillées, HNN=total des heures de nuit travaillées, JFHDJ=total des heures de jours fériées travaillées et JFDN=le total des heures de nuit travaillées.

A mon avis, le problème est la mise à jour de la liste des agents.... une fois qu'on arrive à le faire .............. ça doit aller vite pour le reste. Merci!

Ca devient très lent.. Si je clique sur l'étoile ça prend beaucoup de temps(1 à 2 minutes)avant de mettre à jour la feuille QUART PAR AGENT.

je ne sais pas à quoi sert l'étoile ! vois avec celui qui a fait la macro

il faut ajouter une instruction demandant de suspendre le calcul ! ou au moins l'affichage !


la feuille heure ne modifie le nom des agents

en effet le fichier fourni ne donne aucune liaison !! je ne peux pas les deviner ... remets les liaisons comme à l'origine que je n'ai pas


Venons en à la feuille HEURES :

J'ai essayé de modifier la constitution des équipes : ça ne prend pas en compte les nouvelles agents introduites

la structure de la feuille a été modifiée !! les dates sont en lignes 3, 16, 29 ...

alors que le fichier précédent c'était 3, 17, 31 ...

donc patatrac (le pas était aussi figé dans la formule d'origine)

ne plus supprimer de lignes !! merci

Function nbHeures(qui As Range, quand As Range, code As Integer) As Variant
' code = 1 Jour, 2 Nuit

Application.Volatile
Dim l%, c%, i%, j%
Dim durees(1 To 4, 1 To 2) As Variant
durees(1, 1) = 7 / 24
durees(2, 1) = 7 / 24
durees(3, 1) = 6 / 24
durees(4, 1) = 4 / 24
durees(1, 2) = 6 / 24
durees(2, 2) = 0 / 24
durees(3, 2) = 0 / 24
durees(4, 2) = 3 / 24
nbHeures = 0

With Sheets("QUART PAR AGENT")
    ref = .Range("C3").Value ' date de début des quarts
    l = Int((quand.Value - ref) / 7) * 13 + 6 ' ligne de départ de la matrice = 6, pas de 13
    c = ((quand.Value - ref) Mod 7) * 4 + 3 ' colonne de départ de la matrice = 3, pas de 4
    For i = l To l + 9 ' 10 agents
        For j = c To c + 3 ' 4 horaires
            If .Cells(i, 2) = qui.Value Then
                If .Cells(i, j) = "X" Then nbHeures = nbHeures + durees(j - c + 1, code)
            End If
        Next
    Next
End With

End Function
Rechercher des sujets similaires à "erreur sommeprod"