XL 2010 Détecter les périodes de <44 h. libres pendant 7 jours

Aloha

XLDnaute Accro
Bonsoir,
Merci beaucoup pour tout ce travail. Je testerai demain.
Bonne nuit
Aloha
 

Aloha

XLDnaute Accro
Bonjour,

Tes macros semblent fonctionner sans faille! Chapeau! Et toi qui prétendais ne pas être très familier avec VBA!
Cependant, sans vouloir paraître difficile ou prétentieux -comment pourrais-je?- il y a 2 bémols que j'ai remarqués:
* la lenteur: l'opération de copie est déjà très lente (80 min.); s'y ajoute le temps que mettent les macros. Je crains que les utilisateurs ne voudront pas utiliser ces fichiers annuels mais préféreront continuer leur méthode provisoire actuelle: le manuel
* toute la feuille est calculée à chaque fois. Au mois de décembre toute l'année est recalculée; il suffirait de calculer les données nouvellement copiées; désavantage: s'il y avait une erreur dans une saisie déjà présente, il n'en serait pas tenu compte.

Il faudrait trouver un moyen pour accélérer le tout, la copie et le calcul de ces 2 colonnes.

A+
Aloha
 

CISCO

XLDnaute Barbatruc
Bonsoir

Bonjour,
- il y a 2 bémols que j'ai remarqués:
* la lenteur: l'opération de copie est déjà très lente (80 min.); s'y ajoute le temps que mettent les macros.
J'avais remarqué cette lenteur. Je vais essayé de trouver plus rapide.

Je crains que les utilisateurs ne voudront pas utiliser ces fichiers annuels mais préféreront continuer leur méthode provisoire actuelle: le manuel.
Combien de temps leur faut-il pour traiter tous les fichiers, à la main ?

* toute la feuille est calculée à chaque fois. Au mois de décembre toute l'année est recalculée; il suffirait de calculer les données nouvellement copiées; désavantage: s'il y avait une erreur dans une saisie déjà présente, il n'en serait pas tenu compte.
...
A+
Aloha
J'y avais pensé. Là aussi j'essayerai de trouver une astuce pour que la macro ne recommence pas les calculs à la ligne 16 à chaque fois.

@ plus

P.S : En fait, les colonnes AE et AF ne sont pas indispensables. Donc, on peut gagner un peu de temps en les supprimant.
 

Aloha

XLDnaute Accro
Bonjour,

une astuce pour que la macro ne recommence pas les calculs à la ligne 16 à chaque fois
Comme j'ai dit auparavant la situation peut se présenter -et se présentera- oùune modification est faite à la saisie existant. Il faut donc garder la possibilité de tout recalculer, ou alors d'indiquer deux dates entre lesquelles il faut recalculer.

Combien de temps leur faut-il pour traiter tous les fichiers, à la main ?
Aucune idée pour les 44 heures. Je leur demanderai lorsque je les verrai (le jeudi après les vacances). Pour les P cela doit être rapide: dans la base de données où les résultats mensuels sont collectés (les totaux) on peut ispoler les personnes qui ont des P (pas très nombreux) et regarder leurs fiches mensuelles.

A+
Aloha
 

CISCO

XLDnaute Barbatruc
Bonjour

J'ai apporté quelques modifications à la macro, trouvé quelques simplifications (On n'a plus besoin d'aller lire le contenu de la dernière cellule de la ligne précédente dans la colonne 24), évité quelques tests avec un If.... Then .....Else..... End If (Dans la version précédente, je n'avais pas pensé au Else..., donc, on faisait des If test1 then...., If test2 then..., If test3 then... alors que seul le premier If doit être utilisé, alors que seul le test1 est intéressant quand les cellules ne correspondent pas à du travail).
Cela tourne plus vite (2 ou 3 secondes), mais cela n'est pas encore très rapide pour le peu qu'il y a à faire. Je ne comprend pas trop pourquoi c'est si "lent". On doit certainement pouvoir procéder autrement, sans aller lire dans chaque cellule, les unes après les autres, autrement qu'avec deux boucles imbriquées l'une dans l'autre, For lig = 1 To UBound(tablo), For col = 1 to 24...

Mais vu mon niveau en VBA, je ne sais comment faire. Cette petite macro ressemble plus à du basic qu'à un code rédigé en VBA.

Tu peux faire quelques essais en cliquant sur le bouton GoAG.

En l'état actuel, la macro recommence les calculs à la fin de la dernière période de 7 jours déjà renseignée en colonne AG. Donc, si tu rajoutes des données, cela ne reprend les calculs qu'un peu au-dessus de ces nouvelles dates.
Si on veut recommencer sur une ligne particulière, suite à une modification, il faudra rajouter un userform à faire renseigner par l'utilisateur, avec une question du style : "A partir de quelle date faut-il faire les calculs ?".

@ plus

P.S : Deux "/" ou "XP" ou plus successifs ne sont pas correctement pris en compte par la macro.
 

Fichiers joints

Dernière édition:

CISCO

XLDnaute Barbatruc
Bonjour

En pièce jointe, deux fichiers avec deux macros chacun :
* l'une calculant la durée max de repos de chaque période de 7 jours (semblable à la version précédente, si ce n'est quelques déclarations de variables différentes)
* l'autre calculant les congés supplémentaires à accorder à cause des permanences marquées d'un P (Si je me souviens bien de la règle, c'était "Toute période de permanence <= 24 h donne droit à 0:30 de congé supplémentaire". Exemple : 28 h de permanence sans interruption --> 0:30 +0:30. Autre exemple, 12 h --> 0:30 de congé)

Dans le fichier 29 03 2018, ces macros affichent les résultats dans les colonnes AG et AO.
Dans le fichier 29 03 2018 bis, idem dans les colonnes AB et AE. J'y ai supprimé certaines colonnes qui me paraissent maintenant inutiles, ainsi que certains noms dans le gestionnaire de noms. On peut aussi supprimer la colonne AA si cela te va mieux.

Il faut tester tout cela et revoir la partie L13:Y13 qui affiche #NA.

@ plus
 

Fichiers joints

Dernière édition:

Aloha

XLDnaute Accro
Bonjour,
Merci beaucoup pour tout ce travail.
La procédure est ultrarapide à présent!
J'ai ajouté une saisie dans une cellule et ai redémarré la macro. Le chiffre dans AB n'est pas mis à jour. Pour qu'il le soit il faut d'abord effacer tous les chiffres de cette colonne. En réalité il suffirait d'ajouter cette opération au début de la macro.
A partir de dimanche je serai parti pendant 2 semaines.
A+
Aloha
 
Dernière édition:

Aloha

XLDnaute Accro
Re,
C'est dans la plage de saisies existantes, donc où il y a une date en A, que j'avais ajouté un symbole.
A+
Aloha
 

CISCO

XLDnaute Barbatruc
Rebonjour

Pour le moment, la macro démarre en dessous des dernières valeurs des colonnes AB et AE et va jusque la dernière date de la colonne A. Donc si tu changes une valeur dans les lignes déjà existantes, cela ne fonctionne pas, comme déjà écrit dans mon post #285. C'est une amélioration à faire...

@ plus
 

Aloha

XLDnaute Accro
Re,
ok
Pour l'instant, si cette situation se présentait où il faudrait apporter une modification aux saisies copiées il suffirait d'effacer toutes les données en AB.
Cependant, je ne comprends pas comment la macro recalcule dans ce cas puisqu'elle s'oriente d'après la colonne A.
A+
Aloha
 
Dernière édition:

CISCO

XLDnaute Barbatruc
Bonjour

La macro utilise les données entre les lignes :
* premlig, n° de ligne donnée par le min des dernières lignes contenant quelque chose dans les colonnes AB et AE
* et dernlig, la n° de la dernière ligne de la colonne A (les dates) contenant quelque chose

Pour le moment, si tu rajoutes quelque chose en dessous de ce qui existe déjà, premlig correspond au bas des colonnes AB et AE, donc aux dernières valeurs dans ces colonnes, et dernlig à la date la plus basse écrite en colonne A.

Si tu dois modifier des données dans ce qui existe déja, on peut très bien demander à la macro d'ouvrir une fenêtre où l'utilisateur indiquera à partir de quelle date il faut recommencer les calculs (ce qui modifiera premlig). Le code à écrire n'est pas très compliqué. la macro d'importation des données peut aussi donner cette information.

On peut aussi faire le nécessaire pour que la macro constate que de nouvelles données ont été écrites dans le tableau, et qu'elle recalcule premlig en fonction de la position de celles-ci.

@ plus
 
Dernière édition:

Aloha

XLDnaute Accro
Re,
Et toi qui affirme ne pas être très familier avec VBA!
D'ailleurs, le code est très rapide à présent.
A+
Aloha
 

Aloha

XLDnaute Accro
Bonsoir,
Etant donné que toutes les vacances se terminent un jour, je suis de retour et je dois me remettre au travail.
Bon dimanche
Aloha
 

CISCO

XLDnaute Barbatruc
Bonjour

Bonjour
...
Si tu dois modifier des données dans ce qui existe déja, on peut très bien demander à la macro d'ouvrir une fenêtre où l'utilisateur indiquera à partir de quelle date il faut recommencer les calculs (ce qui modifiera premlig). Le code à écrire n'est pas très compliqué.
...

@ plus
Si on adopte cette solution, il faudra faire le nécessaire pour que cette fenêtre ne s'ouvre que si une ou des lignes ont été changées dans l'ancienne partie. Si toutes les nouvelles données sont en dessous des anciennes, il ne faudra pas que la fenêtre s'ouvre. Sinon, si on ne prend pas cette précaution, elle s'ouvrirait pour chaque nouveau fichier, 180 fois si j'ai bien compris !!!

@ plus
 

Aloha

XLDnaute Accro
Bonjour,

Je suis tout à fait d'accord avec toi.
J'ai abandonné d'automatiser les opérations à 100%, puisque c'est trop lent.
Le jour où "notre" fichier (point de vue boulot c'est clairement le tien!) sera vraiment au point, il pourra servir à récolter les informations (j'avais pensé ajouter une feuille contenant les infos concernant les 44 h et la permanence de tous les salariés). Les gens qui s'en occupent n'auront plus qu'à saisir manuellement les données (il n'y en aura pas des tonnes) en vue de la production des fiches mensuelles vides.
Ce sera toujours un gain, parce que maintenant ils doivent tout vérifier manuellement.

A+
Aloha
 
Dernière édition:

CISCO

XLDnaute Barbatruc
Bonjour

Je ne t'ai pas oublié, mais je n'ai pas le temps de me concentrer sur ce sujet en ce moment... La semaine prochaine peut être...

@plus
 

Discussions similaires


Haut Bas