Offset avec VBA

Autant pour moi, j'ai un peu de trafic qui me prends la tête avec un maux de tête de passage.

Je m'excuse , ca m'a échappé cette partie.

Je m'en excuse...

D'ici la quand je serai un peu libre je vais travailler avec la comptabilisation des heures, je te ferai part de mon résultat d'ici demain ..

Merci!

Bonsoir,

J'ai reçu à calculer toutes les heures, mais j'ai un bug au niveau des dernières colonnes travaillés des tableaux ie le système ne prends pas en compte les heures travaillées les dimanches de 20h à 00h.

Heures travaillées par jour :

=SI(C$4<>"";SI(SOMMEPROD((C$4>=Leave[depart])*(C$4<Leave[retour])*(HEURES!$A8=Leave[Agents]));0;SOMMEPROD(--(DECALER('QUART PAR AGENT'!$B$6;(NO.SEMAINE(C$4;2)-NO.SEMAINE($AH$2;2))*13;EQUIV(HEURES!C$4;DECALER('QUART PAR AGENT'!$C$3;(NO.SEMAINE(C$4;2)-NO.SEMAINE($AH$2;2))*13;0;1;29);0);8;5)="X")*--(DECALER('QUART PAR AGENT'!$B$6;(NO.SEMAINE(C$4;2)-NO.SEMAINE($AH$2;2))*13;0;8;1)=HEURES!$A8)*((TOV!$A$4:$E$4)-(TOV!$A$2:$E$2))));"")

Heures de nuit :

=SI(C4<>"";SI(SOMMEPROD((C$4>=Leave[depart])*(C$4<=Leave[retour])*(HEURES!$A8=Leave[Agents]));0;SOMMEPROD(--(DECALER('QUART PAR AGENT'!$B$6;(NO.SEMAINE(C$4;2)-NO.SEMAINE($AH$2;2))*13;EQUIV(HEURES!C$4;DECALER('QUART PAR AGENT'!$C$3;(NO.SEMAINE(C$4;2)-NO.SEMAINE($AH$2;2))*13;0;1;35);0);9;5)="X")*--(DECALER('QUART PAR AGENT'!$B$6;(NO.SEMAINE(C$4;2)-NO.SEMAINE($AH$2;2))*13;0;9;1)=HEURES!$A8)*((TOV!$A$4:$E$4)-(TOV!$A$3:$E$3))*((HEURE(TOV!$A$4:$E$4)>20)+(HEURE(TOV!$A$4:$E$4)<14))));"")

Heure de jour fériées :

=SI(ESTERREUR(EQUIV(C$4;Days_off;0));0;C9)

Heures de nuit fériées :

=SI(ESTERREUR(EQUIV(C$4;Days_off;0));0;C10)

en copiant dans les premières cellules et tirant vers la droite, ça marche mais il prend pas en compte les dernières cellules et je ne sais pourquoi!

je pense que je vais ouvrir un post pour cela!

merci!!!

Voilà les agents rattrapés... Finalement cela a eu du bon de les avoir oubliés J'ai juste eu à ajouter une colonne au tableau de paramètres et cela m'a permis de les introduire avec une seule ligne de code ajoutée (ce que je prévoyais à l'origine était un peu plus long).

Tout le code concernant la constitution de la feuille QUART PAR AGENT est en Module2 (mais peut utiliser éventuellement des procédures figurant en Module1...). Il comporte une procédure principale et deux Function (qui sont plus une façon d'excentrer la réinitialisation et la préparation de la feuille, elles renvoient True quand elles ont fini : la première peut renvoyer False si la conformité de la feuille a été altérée et qu'elle ne s'y retrouve plus, cela interromprait la procédure, mais la seconde n'a pas de raison si la première a fonctionné, je l'ai laissée en Function par souci d'homogénéité...)

Si tu as besoin d'explications, plus tard, car là je fatigue un peu...

Bonne fin de soirée.

Bonne nuit!

Je viens juste de commencer ma vacation et cela jusqu'à 13h00 GMT.

Je pense te laisser tranquille toute la journée , soucis de souffler....

Demain, je reviendrai vous emmerder de nouveau, cette fois ci pour la comptabilisation des heures....

D'ici là , bon repos et passez une excellente journée !

Merci encore une fois de plus!!!!

Voilà les agents rattrapés... Finalement cela a eu du bon de les avoir oubliés J'ai juste eu à ajouter une colonne au tableau de paramètres et cela m'a permis de les introduire avec une seule ligne de code ajoutée (ce que je prévoyais à l'origine était un peu plus long).

Tout le code concernant la constitution de la feuille QUART PAR AGENT est en Module2 (mais peut utiliser éventuellement des procédures figurant en Module1...). Il comporte une procédure principale et deux Function (qui sont plus une façon d'excentrer la réinitialisation et la préparation de la feuille, elles renvoient True quand elles ont fini : la première peut renvoyer False si la conformité de la feuille a été altérée et qu'elle ne s'y retrouve plus, cela interromprait la procédure, mais la seconde n'a pas de raison si la première a fonctionné, je l'ai laissée en Function par souci d'homogénéité...)

Si tu as besoin d'explications, plus tard, car là je fatigue un peu...

Bonne fin de soirée.

Bonjour,

Finalement j'ai décidé de recommencer le tout à partir de ce fichier... Car ça marchait bien jusque là et la lenteur persiste toujours avec mon dernier fichier même en changeant de machine , ça me mets Calcul avec le pourcentage d'exécution si j'execute les macros lies au bouton.

Donc, je vais commencer à partir de ce fichier , peut être j'arrive à trouver qui ralenti l'exécution des macros..

Par ailleurs, dans la feuille QUART PAR AGENT, il reste toujours une ligne vierge après la mise a jour .. Est il possible de ne pas mettre cette ligne après le nom du dernier agent de la dernière équipe...

Sinon,j'ai un peu de soucis avec mon copier decaller vers la feuille HEURES pour le calcul, car il le copie aussi...

Jusque là je n'ai trouvé la solution de copie de tableau pour chaque agent mais avec le copie décaler des agents ça calcul bien avec copier coller manuel du tableau de comptabilisation des heures.

Merci et bonne début de journée !!!?

il reste toujours une ligne vierge après la mise a jour

C'est ce que tu avais fait au départ, mais c'est très bien ! Ça garantit que la liste n'a pas été coupée avant la fin, et cette ligne sert à la mise en forme...

il reste toujours une ligne vierge après la mise a jour

C'est ce que tu avais fait au départ, mais c'est très bien ! Ça garantit que la liste n'a pas été coupée avant la fin, et cette ligne sert à la mise en forme...

C'est bien compris... Je trouverai un moyen pour ne pas le copier ...

J'ai toujours envie de voir votre dernière version Mr MFerrand....

Ca me permet une mise à jour d'expert avant ma présentation public....

J'ai vraiment envie de voir les dernières modifications que vous avez portés...

Merci pour l'aide et bonne journée !

Merci!

Bonjour,

Comme je l'ai dit hier au détour d'une réflexion :

Mais au fond je me demande si on ne pourrait pas simplifier l'ensemble pour ne pas avoir à le recalculer à chaque fois tant qu'on ne modifie pas...

A force de remettre des questions sur le tapis, tu as réussi à faire germer une idée, qui me paraît plutôt géniale, j'aurais dû y penser plus tôt mais il n'est jamais trop tard, on va donc la tester...

Pour ça, le code déjà remplacé à moitié, je l'efface et et on recommence !

Ça devrait être plus rapide !

Cordialement.

Bonjour,

Comme je l'ai dit hier au détour d'une réflexion :

Mais au fond je me demande si on ne pourrait pas simplifier l'ensemble pour ne pas avoir à le recalculer à chaque fois tant qu'on ne modifie pas...

A force de remettre des questions sur le tapis, tu as réussi à faire germer une idée, qui me paraît plutôt géniale, j'aurais dû y penser plus tôt mais il n'est jamais trop tard, on va donc la tester...

Pour ça, le code déjà remplacé à moitié, je l'efface et et on recommence !

Ça devrait être plus rapide !

Cordialement.

Merci infiniment !

Si ça finit avant ma présentation , je vais l'utiliser sinon.. On pourra toujours remplacer... C'est ça la souplesse avec Excel!

Merci!

Bonsoir,

J'ai finalement pu savoir la cause de la lenteur, c'est le macro de calcul des heures....

Je vais suspendre tous les macros et ne les exécuter qu'au moment ou je clic sur les boutons et je liérai chaque module à un bouton.. Je pense que comme ça la lenteur sera consommé...

Merci et bonne nuit!

Bonsoir,

Première séance de débogage terminée... On en est avec le nouveau programme à l'initialisation du mois, pour poursuivre les tests il faut maintenant ajouter la procédure de modification (car une bonne partie du code n'entre jamais en action tant qu'il n'y a pas de modifications introduites dans le roulement.

Une fois les cycles entièrement automatisé, on reverra le raccordement avec le Quart Agents...

Puis dans la foulée, si on maintient bien la prise en compte des heures en deux volets : décompte théorique à partir du quart et vérification pour prendre en compte les fériés et les absences... le décompte théorique pourrait être rapidement produit.

Bonsoir,

Première séance de débogage terminée... On en est avec le nouveau programme à l'initialisation du mois, pour poursuivre les tests il faut maintenant ajouter la procédure de modification (car une bonne partie du code n'entre jamais en action tant qu'il n'y a pas de modifications introduites dans le roulement.

Une fois les cycles entièrement automatisé, on reverra le raccordement avec le Quart Agents...

Puis dans la foulée, si on maintient bien la prise en compte des heures en deux volets : décompte théorique à partir du quart et vérification pour prendre en compte les fériés et les absences... le décompte théorique pourrait être rapidement produit.

Bonjour,

Merci, je vois que ça avance bien donc je pourrais toujours l'utiliser à la place du tableau actuel...

Ca me va, j'ai encore quelques jours avant la présentation.

Merci et bonne journée !

MFerrand a écrit :

pour poursuivre les tests il faut maintenant ajouter la procédure de modification (car une bonne partie du code n'entre jamais en action tant qu'il n'y a pas de modifications introduites dans le roulement.

Bonsoir,

Pour la gestion des modifications, il faut pas tenir compte des cas d'absences qui ne nécessitent pas de changement d'equipe car rien n'a changé au fait , c'est juste que l'agent a été absent quelques jours et reprend avec son équipe ( on pourra prendre ça en compte avec une MFC qui met les X des jours non travaillés en couleur blanche donc non visible ou on met un remplissage en couleur des cellules avec la même police que les X de cette période).

A mon avis, le problème c'est quand l'agent au retour doit changer d'équipe : le changement d'équipe se fait quand une équipe a deux agents de plus qu'une autre .. Donc il faut déplacer un agent pour avoir le même nombre d'agent par équipe ou maintenir l'écart de un seul agent de différence si l'égalité ne peut pas être obtenu.

En réalité même si les équipes n'ont pas le meme nombre d'agents la différence entre équipe n'intervient que quand le nombre d'agent n'est plus divisible par le nombre d'équipe donc certaines équipes peut avoir un agent et seulement un agent de plus que d'autres.

Merci!

Bonsoir,

J'avais bien enregistré que tu gérais les absences séparément...

Je viens de terminer le code du Cycle ! Ouf ! On verra à tester demain si je peux...

Le calcul du cycle va fonctionner indépendamment du reste, une fois lancé. Tant que l'on poursuit, il peut se continuer automatiquement. S'il y a lieu, au premier démarrage, un roulement est demandé, c'est tout !

Pour générer une modif. on fournit un nouveau roulement et une date d'effet, pas plus. C'est le programme qui choisit qui sort ou qui rentre selon les positions à la date d'effet... (On peut influer sur qui sort [qui rentre, ce sera toujours le premier disponible...] selon la date d'effet...)

Sur chaque unité de roulement du cycle, tu affectes une équipe, et par ailleurs à chaque équipe tu affectes des agents... ce qui te laisse toujours une marge de manoeuvre dans l'affectation des agents à une équipe d'une part, et également dans l'affectation des équipes à une position de roulement.

La feuille de cycle n'est qu'une matrice qui va servir à partir des correspondances définies à bâtir la feuille QUART AGENT... qui est celle qui te sert, mais ne comporte pas les absences, à moins que tu ne les introduises manuellement par ailleurs.

A ce stade, la feuille QUART AGENT étant montée, on peut pratiquement dans la foulée fournir le canevas théorique des heures, ce qui me paraît être une bonne solution car cela ne demandera pas beaucoup de code et pourra être rapide (on prélève la fraction du cycle correspondant au mois [le cycle annuel est désormais enregistré] et on remplace les positions par les heures qui y correspondent...)

A la suite, où dès que les éléments sont disponibles une autre procédure (ou deux si on dissocie fériés et absences) aportera les rectifications : introduction des fériés (il faudra une liste de référence dans laquelle aller piocher), et rectifications en fonction des absences (état des absences et possibilité de réviser à chaque modification de cet état).

Cordialement.

Bonjour,

J'avais bien enregistré que tu gérais les absences séparément...

qui est celle qui te sert, mais ne comporte pas les absences, à moins que tu ne les introduises manuellement par ailleurs.

Ne vous faites pas de soucis pour ça , j'ai déjà une idée derrière la tête.. J'étais entrain de l'implémenter quand vous m'avez parlé d'une révision du fichier...: je ferai une mise en forme conditionnelle ....

[Quote]

A ce stade, la feuille QUART AGENT étant montée, on peut pratiquement dans la foulée fournir le canevas théorique des heures, ce qui me paraît être une bonne solution car cela ne demandera pas beaucoup de code et pourra être rapide[/quote]

Enfin une solution pour la vitesse d'exécution. Je peux Bye au macro qui ralentit ma feuille. Et un grand Merci à vous !!! Sinon 1000000000000000000000000000000000000000000000000000000000000000000000000000000000000000000.... Merci!

[Quote]

A la suite, où dès que les éléments sont disponibles une autre procédure (ou deux si on dissocie fériés et absences) aportera les rectifications : introduction des fériés (il faudra une liste de référence dans laquelle aller piocher), et rectifications en fonction des absences (état des absences et possibilité de réviser à chaque modification de cet état)..

[/quote]

Pour faire simple ici on pourra se contenter d'une saisi manuelle dans un tableau où on pourra piocher pour utiliser dans le calcul des heures

Bien de chose à vous également !!!!

Bonjour à toi !

Première séance de débogage... une bonne petite dizaine de bogues ! Pas des gros cependant... J'essaie d'opérer de façon que les procédures n'entrent en jeu que successivement au cours des tests, mais le compilateur n'entend pas les choses de la même façon, ce qui m'a fait passer du temps sur une proc. qui n'avait rien à exécuter sur ce premier test ! En principe je ne retrouverais donc pas ces bogues au test suivant...

On était parti avec une initialisation de janvier en roulement 4 (réalisée avec succès, avant mise en place du programme de modif.). Le premier test après mise en place programme était simple : modification du roulement à 3 à la date du 29/01 (un lundi).

Après correction des bogues, la feuille QUART2018-01 est bien modifiée à la date du 29/01 : le roulement passe à 3.

Les indications de la feuille CYCLE sont mises à jour : 3 unités listées comme actives à la date du 29/01, le roulement indiqué sous l'année et le mois a été modifié en 3, dans le tableau des semaines, en regard des semaines 5 et 6 le roulement est passé à 3, en regard de la semaine 5 les 2 colonnes relatives au changement indiquent bien 3 et 29-janv, et les indications destinées à lancer la modif ont été effacées après exécution.

Le cycle annuel (conservé dans une zone masquée) a bien été mis à jour à partir de la ligne 29 (correspondant au 29/01 puisque 2018 démarre au lundi 01/01).

Test suivant : on poursuit la simulation en initialisant février (ce qui devrait se faire sans souci puisque cela fonctionnait auparavant... mais !), puis on introduira un changement dans la 3e ou 4e semaine de février (sans incidence sur le Quart du mois préc, on réserve ça pour un test ultérieur...), en faisant passer de 3 à 5, et un autre jour que le lundi... (en cumulant les deux on gagnera du temps sur les tests, si ça marche assez vite, ou on en perdra si on cumule trop de bogues affectant ces deux aspects... )

Mais comme il faut partager les plaisirs, tests mis en attente car j'ai d'autres affaires en stand-by dont il faut que je m'occupe aussi...

A+

[NB- Lorsque j'aurais bouclé une série suffisante de simulations-tests, je te ferai passer d'une part les résultats de la simulation, pour que tu puisses examiner les feuilles de QUART sorties successivement, et d'autre part un fichier à l'état "vierge" pour que tu puisses démarrer des tests dans des conditions normales de démarrage, à partir de rien qui précède... (ce qui n'est pas si simple car une fois amorcé, même avec erreur, si le programme trouve des traces antérieures, il va les utiliser... )

Ouf!

Enfin les modifications entrent en jeu. Je savais que vous allez y arriver.... Seul le temps pourra vous faire de faut!

Je pense que pour Février devra marcher car il n'y a pas de raison que ce soit le contraire car c'est le même code que Janvier a utilisé.... Merci!

D'accord j'attends de partager les plaisirs et je ferais les essais de mon côté des la réception du fichier...

Merci et bonne course....

Apparemment j'ai une chance de pouvoir l'utiliser pour ma présentation !

En tout cas j'ai tout l'espoir que je vais utiliser notre nouveau fichier...

Merci pour tout !

Attends qu'on soit au bout avant de remercier ! Et ne lâche pas toutes tes billes d'un coup... un élément à la fois, en disant toujours que tu travailles à l'améliorer !

Attends qu'on soit au bout avant de remercier ! Et ne lâche pas toutes tes billes d'un coup... un élément à la fois, en disant toujours que tu travailles à l'améliorer !

Bien reçu... J'en tiendrai compte à coup sûr..

Merci pour le conseil.

Je n'ai pas besoin que vous terminez , je vous remercie pour le temps que vous avez déjà consacré, c'est un sacrifice que vous avez fait jusqu'ici donc je dois être reconnaissant...

Je vous remercierai pour ce que vous ferez après mais d'ici là merci pour tout ce que vous avez fait.. Malheureusement je n'ai que ça à offrir...

Cordialement !

Rechercher des sujets similaires à "offset vba"