Regroupement de plusieurs lignes dans une seule ligne

Bonjour,

J'ai un fichier d'absences de salariés par jour, donc j'ai parfois beaucoup de lignes pour le même salarié avec le même motif d'absences...

Est ce quelqu'un peut m'aider comment regrouper les lignes qui concernent le même salariés dans une seule ligne (dans une nouvelle feuille Excel) avec la date de début d'absence (la plus ancienne) et la date de fin d'absence (la plus récente)?

Actuellement, je le fais manuellement via des filtres mais c très fatiguant, en plus c risqué

Veuillez trouver ci-joint un exemple de mon fichier Excel

Je serais très reconnaissant si quelqu'un me donner des pistes :Formules , Macro....

Merci d'avance

Bonjour,

A tester

502morino.xlsm (69.47 Ko)

A+

Bonsoir,

une proposition à tester


Bonsoir Frangy !

Bonjour,

Une version avec TCD sans VBA.

L'actualisation est automatique à chaque modification de la feuille "Données".

A tester

Cdlt

Bonsoir,

Merci Frangy, Jean-eric et h2S04

Je suis entrain de tester vos propositions

A+

Bonjour Frangy,

je me permets de revenir vers toi concernant ta Macro de regroupement :En fait, je viens de découvrir une anomalie de regroupement à savoir que la Macro regroupe les absences non consécutifs, or que j'ai besoin qu'elle regroupe uniquement les absences continus ou séparés par un jour férié ou weekend (par exemple 1ère absence du 01/09 au 03/09 et 2ème absence du 04/09 au 23/10 seront regroupés dans une seule absence du 01/09 au 23/10)

Ci-joint le fichier excel qui contient les exemples erronées (lignes surlignés en rouge)

Peux-tu stp corriger la Macro afin qu'elle ne regroupe que les absences de même motif et successives (ou séparés par un weekend ou jour férié) ?

D'avance, merci pour ton aide précieux

A+

Bonjour,

Je te propose un autre type de solution.

Les cellules de la feuille 1 sont copiées dans la feuille 2 puis triées suivant le numéro de matricule et la date de début d’absence.

Ensuite, on compare les dates de début / fin d’absence et on effectue un regroupement si nécessaire.

C’est un peu long (environ 15 s) ... M’enfin !

Pour déterminer si le regroupement peut être réalisé, j’ai utilisé la fonction NetworkDays (équivalent de NB.JOURS.OUVRES dans Excel) qui permet de calculer le nombre de jours ouvrés compris entre 2 absences. Pour cela, j’ai ajouté une feuille pour déclarer les jours fériés.

Pour lancer la macro, tu peux utiliser le raccourci CTRL + q.

189morino-2.xlsm (67.80 Ko)

A+

Merci beaucoup Monsieur

je suis entrain de tester ta proposition et ça l'aire de bien fonctionner

Encore merci et bonne soirée

A+

Bonsoir,

Je reviens vers vous de nouveau concernant la macro de regroupement des absences : en fait, je viens de découvrir que le résultat n'est pas conforme à mes attentes

Je rappelle de mon besoin : Pour une même matricule (colonne A), il faut contrôler si elle a le même motif d'absence (colonne G), ensuite s'il s'agit d'un même motif, il faut contrôler si la date fin (colonne k) de la ligne en question suit directement ou séparés par un weekend de la date début (colonne J) de la ligne suivante, si c'est le cas, il faut rassembler les 2 lignes en une seule en modifiant la date

fin de la 1 ère par la date fin de la dernière

Actuellement la macro en PJ, regroupe les lignes mais sans contrôler si ils ont le même motif d'absence (Colonne G) ou non, en plus qu'elle regroupe des lignes qui ne sont pas consécutifs (date fin 10/11 et date début 13/11) !

Veuillez trouver ci-joint un exemple dans la feuille "Modele", le résultat de la macro est dans la feuille "Résultat", par contre ce que j'attend comme résultat est dans la feuille "Resultat attendu"

Pouvez vous svp m'aider à améliorer cette macro ?

Merci d'avance

Bonjour,

Pour une même matricule (colonne A), il faut contrôler si elle a le même motif d'absence (colonne G), ensuite s'il s'agit d'un même motif

Effectivement, entre 2 versions j’avais fait sauter le contrôle du motif.

Il faut contrôler si la date fin (colonne k) de la ligne en question suit directement ou séparés par un weekend de la date début (colonne J) de la ligne suivante, si c'est le cas, il faut rassembler les 2 lignes en une seule en modifiant la date fin de la 1 ère par la date fin de la dernière.

Initialement, je contrôlais simplement qu’entre la fin d’une session et le début d’une autre il n’y avait pas plus de 2 jours ouvrés inclus. Or, si on déclare qu’une session se termine un jour non ouvré, ce qui est le cas du 10/11/2013 qui est un dimanche, le programme compte 2 jours ouvrés entre le 10/11 et le 13/11 et autorise le regroupement.

Avec le nouveau code, je compare le nombre de jours ouvrés de la période qui couvre les 2 sessions avec la somme des jours ouvrés des 2 périodes. S’il y a égalité, j’autorise le regroupement.

Ce que j’attends comme résultat est dans la feuille "Resultat attendu"

Je n’obtiens pas le même résultat que toi pour le matricule 1106185. J’autorise le regroupement de la session 21/11/2013 au 24/11/2013 avec la session 25/11/2013 au 30/11/2013.

A+

Bonjour Frangy,

Oui tu as totalement raison pour la matricule 1106185 :il faut regrouper les deux absences puisqu'elles ont le même motif et successives

Merci beaucoup beaucoup pour cette nouvelle version de la macro

Je te souhaite une excellente journée

A+

Bonjour Frangy,

Excuse moi de t'embêter de nouveau

malheureusement, je viens de découvrir un petit problème qui empêche la bonne exécution de ta Macro à savoir :le feuille "modele" est le résultat de la feuille 1 (via des formules simples de recherchev ou de copier), du coup lorsque j’exécute la macro, j'ai des anomalies dues (à mon avis) que la macro attend des valeurs et non pas des formules

je te joint de nouveau mon fichier complet, peux-tu stp me donner la solution pour que je puisse copier mes données dans la feuille 1, ensuite ils seront mis dans le bon format (feuille modele) pour que je puisse exécuter la macro qui contrôle les absences ?

Je suis vraiment désolé pour ce contre temps (j'aurais du te préciser ça dès le début)

Merci d'avance,

A+

Bonjour,

A tester

A+

Bonjour Frangy,

Je me permets de revenir vers toi encore une fois puisque je viens de découvrir une anomalie qui concerne le regroupement des absences à savoir : Lorsque la date début d'absence = date fin d'absence, cette ligne n'est pas prise en compte dans le regroupement (voir exemple ci-joint la ligne 12 de la feuille "modèle" : comme la date fin de l'absence précédente est le 27/11 et la date début de cette ligne est le 28/11, la macro doit regrouper ces 2 absences en une seule (continuité), ce qui n'est pas le cas actuellement

Peux-tu revoir ce point ?

De même serait-il possible d'avoir des valeurs dans la feuille "Résultat" au lieu des formules ?

D'avance, merci pour ton aide assez précieux

A+

Bonjour,

A re-tester

A+

Rechercher des sujets similaires à "regroupement lignes seule ligne"