Controle avec condition sur plusieurs lignes

Bonjour,

J'ai un fichier Excel qui contient des lignes indiquant les absences de mes salariés : je dois faire des contrôles pour détecter quels sont les lignes qui représentent la continuité du même arret de travail : Même matricule, même motif d'absence, des dates en continuités (date début d'un arret suit directement (+1) la date de fin d'un autre arret)

Pour ces arrets, je dois les regrouper dans la même ligne (qui représente le 1er arret) en modifiant la date fin par la dernière date et supprimer les autres lignes...

jusqu'au là, je fais ce travail manuellement...ce qui me prend beaucoup de temps et de concentration avec un risque d'erreur

Est-ce quelqu'un peut m'aider à automatiser cette tâche ou au moins une partie ??

veuillez trouver ci-joint un exemple de mon fichier qui contient une feuille de données et une feuille pour mieux expliquer les différents contrôles à faire

D'avance, merci pour votre précieux aide

A+

Bonjour,

A tester

A+

Bonjour Frangy,

Bravo, mon premier test est concluant

je continu donc à le tester sur plus de données

Merci beaucoup

A+


Juste une autre question : J'ai trois MACRO, chacune dans un classeur Excel différent, comment je puisse les mettre tous dans un seul fichier Excel pour simplifier le travail qui sera fait par une tierce personne ???

D'avance, merci pour vos éclaircissements

A+

Bonjour Morino,

Difficile de répondre sans plus d’explications.

A quoi servent les procédures ? Quel est le lien entre les 3 classeurs ? Etc.

A+

Bonjour Frangy,

effectivement, je sais que c'est difficile de comprendre mon besoin avec un message...

mais le problème que je n'arrive pas à joindre mon fichier puisqu'il dépasse la taille autorisée (même avec zip)

donc j'essai d'éclaircir un peu plus ma demande :en fait, j'ai 3 macros qui fonctionnent bien séparément (dont 2 faites par toi ), mais lorsque j'ai voulu les regrouper dans un seul même classeur Excel (puisqu'elles font des traitement consécutifs liés les uns aux autres), j'ai des messages d'erreur lors de leurs exécutions : en fait la seule qui fonctionne est celle dont je l'ai pas déplacé, les 2 autres remontent des anomalies !!!

Y a t-il en général une procédure de regroupement de Macro dans un même fichier Excel ?

Merci d'avance

Bonjour Morino,

Je ne peux pas te répondre précisément.

Si tes macros agissent sur les mêmes données, il faut vérifier les interactions.

Pour un classeur exemple, tu n’as pas besoin de joindre l’intégralité des données. Un fichier allégé peut suffire.

A+

Frangy,

Bonne idée, je viens de garder uniquement quelques données dans mon fichier, ensuite le zipper pour que je puisse le joindre

Ci-joint donc mon fichier

Pour précision, l'ordre d’exécution de mes macros est très important et comme suit :

1-Synthèse des congès

2-Controler

3-Dispatcher

D'avance, merci pour ton temps

Mouais !

J’ai trouvé une incohérence dans la procédure "Dispatche".

La base prise en compte par le filtre avancé était celle de la feuille "Donnees" alors que la feuille concernée est "regle de gestion".

Gare ! Tu ne peux pas espérer obtenir un résultat correct si tu aboutes des codes sans t’assurer de la cohérence globale du projet.

A+

Ok, je tiens compte de tes remarques

mais la procédure "Dispatch" doit fonctionner avec la feuille "donnees" et non pas regle de gestion...

Merci en tout cas

je pense que je dois travailler avec les macro séparément sans regroupement

A+

La procédure Dispatche permet de répartir les données de la feuille "regle de gestion" dans de nouvelles feuilles.

Pour cela, elle réalise les opérations suivantes :

  • élaboration d'une liste des codes établissement associés à chaque nom de feuille en utilisant un dictionnaire
  • création des feuilles
  • copie des données avec un filtre avancé.

Si tu souhaites réaliser ces mêmes opérations avec la feuille "Données", il faut à minima que cette feuille contienne les éléments utiles pour la liste, la création des feuilles et le filtrage, à savoir les 2 colonnes "CODE ETABLISSEMENT" et "Nom de la feuille".

Actuellement, la feuille "Données" contient bien une colonne "Code ETAB" mais pas de colonne "Nom de la feuille".

Il faut donc que tu modifies ta feuille "Données" pour permettre la répartition des données à partir de cette feuille.

A+

Frangy,

La macro "Dispatch" réparti le contenu de la feuille "données" suivant la colonne G en se basant sur la feuille "regle de gestion"

Pour info, ci-joint le fichier initial qui fonctionne bien et donne un résultat fiable !

A+

Ca y est, j'y suis !

Modifie la ligne suivante dans

.Range("A1").CurrentRegion.AdvancedFilter Action:=xlFilterCopy, criteriarange:=.Range("AC1").Resize(Mondico.Count + 1, 1), copytorange:=Sheets(FeuilleEnCours).Range("A1:Z1")

A+

Bonjour Frangy,

En travaillant avec la Macro "Contrôle des absences" ci-jointe sur mon fichier cumulé qui contient plus que 5000 lignes, je remarque qu'elle est très lente (elle dure plus que 10 minutes) et durant ce temps, ma session est figée, donc je ne peux rien faire

Serait-il possible de l'alléger un peu, de même peux-tu rajouter la condition des jours fériés et weekend dans le regroupement des absences :ç.à.d regrouper les absences pour la même matricule, même motif d'absence à condition qu'elles se suivent (date fin de la 1ère avec date début de la 2ème) ou séparés par un weekend ou jour férié

D'avance, merci pour ta générosité

A+

Bonjour,

J'ai repris le principe de regroupement après tri des données (j'ai ajouté une feuille pour les jours fériés).

Reste à voir le gain de temps obtenu.

A+

Frangy,

Génial, rapide et pertinent, merci beaucoup pour ta réactivité

je viens de faire un 1er test sur 4000 lignes, et je suis très satisfait coté rapidité

je continu à tester le contrôle

1000 merci

A+

Le temps de traitement va dépendre essentiellement du nombre de regroupements à réaliser.

Si ce nombre est important, il faudra envisager de passer par des variables tableaux.

A+

Rechercher des sujets similaires à "controle condition lignes"