XL 2016 Alimenter un fichier de salarié (travail et chômage partiel)

eduraiss

XLDnaute Accro
Bonsoir le forum

Je reviens vers vous car, j'aurais besoin en VBA d'une automatisation me permettant de positionner des salaries soit en travail soit en chômage partiel suivant une liste et surtout suivant une dites semaine

Je joins un fichier avec toute les infos nécessaire a l’intérieur

merci de votre aide
 

Pièces jointes

  • Eric 16.xlsm
    50.5 KB · Affichages: 32

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonsoir @eduraiss

J'ai perdu la boule ? ou j'ai l'impression de voir ce fichier revenir dans plusieurs posts ?
J'avais travaillé dessus et aussi d'autres contributeurs, par formules aussi...

Mais là plus rien, comme si on avait rien proposé ?

Je me trompe ou pas ?
@+Thierry
 

eduraiss

XLDnaute Accro
Re
Bonsoir thierry
Non c'est excat vous ne perdez pas la boule ce fichier j'en ai fait un demande en effet au forum, mais il a été supprimer, je pense que j’avais laisser le noms des salariés, et il ne fallait pas
mais ma nouvelle demande n'est pas tout a fait identique
Dans la première demande je voulais mettre chômage partiel a un salaries tout les jours d'une certaine semaine en évitent les formules trop lourde pour le fichier
L'activité de mon entreprise redémarre un peu et on fait appel aux salaries certains jour de la semaine voir 5 jours voir 2 jours
C'est extrêmement compliqué a gérer, mais nous sommes dans l'agroalimentaire donc.....
Désolé thierry mais ce que l'on m a demandé hier n'est plus tout a fait ce que l'on me demande aujourd'hui
nous gérons plus de 300 personnes et l'à c'est n'est pas simple du tout
Avec toutes mes excuses, mais automatiser cette tache me rendrait un grand service
merci à vous
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re Bonsoir @eduraiss, le Forum

Ah oui je me souviens, j'avais tiqué aussi avec les noms propres des gens, oui il faut faire gaffe à ceci, surtout pour David car maintenant avec le "GDPR Compliance" il pourrait avoir des gros ennuis !

Petit Rappel :
Les gars SVP supprimez toutes les données confidentielles de vos classeurs de test !!!

Bon comme je me rappelle que ma proposition initiale était à l'envers, où veux tu écrire ?
Dans [Absence Jour] ?
On doit y construire la liste des personnes qui ne sont pas ni en congés, ni en chomage partiel, quand on a saisi le numéro de semaine en B18 ?

Où je suis encore à côté de la plaque ?

Bien à toi
@+Thierry
 

eduraiss

XLDnaute Accro
Re
Non dans "ABSENCE JOUR" j'ai la liste en colonne A avec les jours ou les salaries travaillent
Je veux écrire dans "CONGES A PRENDRE"
Qui a le nom du ou des salariés en colonne N
TITI T travaille le 28.29.30 de la semine 18 sur ses trois dates on écrit rien sur la feuille "CONGES A PRENDRE" car il est présent par contre le 27 et le 31 il faudrait écrire " CHOMAGE PARTIEL"
ça ne doit pas être simple a faire
sachant que je voudrais occulter certains salarié qui sont en mi-temps, la je ferais manuellement
 

_Thierry

XLDnaute Barbatruc
Repose en paix
Re..
J'ai vraiment du mal à suivre, avec toutes les infos de la Feuille [CONGES A PRENDRE] , je croyais que c'était la Matrice ! Et que la feuille [ABSENCE JOUR] n'était qu'un rapport pour savoir qui tu avais dispo...

Maintenant c'est à l'envers, je ne sais pas par où commencer du coup ! Arf

Ta Feuille [ABSENCE JOUR] est donc la matrice et c'est elle qui doit aller écrire dans l'autre, et tu auras la liste exhaustive de tout le staff dans [ABSENCE JOUR], et en plus chaque staff répété journée par journée... Bon courage pour remplir ça à la main !

Et donc tu voudrais qu'en fonction des dates que tu vas remplir dans [ABSENCE JOUR], le code aille trouver l'intersection entre le nom du staff et la date pour aller écrire dans [CONGES A PRENDRE] la mention "
CHOMAGE PARTIEL" en AT5 par exemple pour TITI T soit le Lundi 27 Avril, puisque cette date n'est pas mentionnée pour Titi T dans la liste de [ABSENCE JOUR] .......

On doit faire un déduction par absence, si pas de date, donc on doit trouver la semaine 18 dans , [CONGES A PRENDRE] et tester chaque Staff si ils ont une date dans [ABSENCE JOUR], si il n'en ont pas alor "CHOMAGE PARTIEL"

C'est tordu de chez tordu ce truc ! En plus je vois déjà la 'gueule' de l'algo, et vas-y que je loop et reloop et reloop... Ca va durer un bail !!!

Et en plus il faut ignorer certains comme Bibi AM... Mais comment on le sait qu'il ne faut pas le traiter celui-là ?

J'ai mal à la tête rien que d'essayer de comprendre LoL

Soit un peu plus clair ...

@+Thierry


EDIT ignorer
Et comment se fait-il que pour le vendredi 1er Mai, Titi est en "CHOMAGE PARTIEL" en AX5 Feuille [CONGES A PRENDRE] puisque pas indiqué dans [ABSENCE JOUR] ?
c'est toujour la semaine 18, donc 'ca colle'... Ouf !:cool:


 
Dernière édition:

eduraiss

XLDnaute Accro
Je reconnais que ma demande est pas très clair et pas évident a programmer

Je revoie un fichier ou la on fait la recup des jours sur la même feuille
Regardez j'ai mis les explications
Pour info le 1/05 est un exemple il n'y a pas de chômage partiel j'aurais pu prendre une autre semaine peut importe
 

Pièces jointes

  • Eric 16 V1.xlsm
    51.2 KB · Affichages: 10

_Thierry

XLDnaute Barbatruc
Repose en paix
Je me perds dans les loops ......... rien que sur Titi


Capture.JPG


Capture.JPG


C'est très très tordu, de loop en loop Il me décale... Je n'ai pas envie de faire une tableau séquentiel pour faire une collection pour remettre tout en ordre à cette heure-ci !!!

La façon dont les données et la demande sont présentées, c'est le genre de trucs illogique qui me fait perdre mon latin arf !

Bonne nuit
@+Thierry
 

eriiic

XLDnaute Barbatruc
Bonjour,

J'ai travaillé sur ton 1er fichier
Je ne me suis pas embêté avec les prénoms composés, donc BIBI AM n'existe pas, tu as une alerte.
Soit tu complètes la macro, soit tu ne mets qu'une seule initiale du prénom.

Si une cellule contient déjà qq chose, c'est préservé.
eric
 

Pièces jointes

  • Eric 16.xlsm
    55.2 KB · Affichages: 15

eduraiss

XLDnaute Accro
Bonjour le forum
Bonjour Thierry@ et eric et merci beaucoup
La solution de eric est la bonne, mais je n'arrive pas a l'adapter a mon fichier
La solution la plus simple pour moi serait de garnir la feuille "ABSENCE JOUR" sur le fichier de mon post 7

Merci à vous
 

eriiic

XLDnaute Barbatruc
Bonjour,

que je colle le résultat sur une feuille ou sur une autre le résultat sera le même et tu risques q'avoir le même pb.
Change la destination du collage tout à la fin :
VB:
Sheets ("ABSENCE JOUR").[D2].Resize(UBound(sem), 5) = sem
eric
 

eduraiss

XLDnaute Accro
Re bonjour
Bonjour eric
Et merci beaucoup pour votre aide
oui cela fonctionne en partie
Mais juste une chose si on occulte la feuille" CONGES A PRENDRE"
et que l'on travaille uniquement sur la feuille "ABSENCE JOUR"
la colonne E de cette feuille est égal a la colonne N de la feuille "CONGES A PRENDRE"

Cela ne serait pas plus simple, enfin pour moi je crois

Je renvoie un fichier avec les modif
Merci a vous
 

Pièces jointes

  • Eric 16 V2.xlsm
    54.7 KB · Affichages: 6

_Thierry

XLDnaute Barbatruc
Repose en paix
Bonjour @eduraiss @eriiiic , le Forum

Bon moi j'ai tordu le cou à cet aldo récalcitrant à 1h du mat !

Ca va mieux :

CHOMAGE_PARTIEL_v01.gif

J'ai trouvé sur le net une Function pour trouver les jours/dates du numéro de semaine qui vont donc se raffraichir aussi automatiquement en fonction de ce qui a été rensignée en B1 & C1.

Voici le classeur (sur l'exemple d'Eduraiss du post #9 ) , pas regardé le dernier !

Bien à toi, à vous
@+Thierry
 

Pièces jointes

  • XLD_eduraiss_CHOMAGE_PARTIEL_Tracker_v01.xlsm
    65.1 KB · Affichages: 6

eriiic

XLDnaute Barbatruc
Bonjour à tous,

comme tu veux, restitution sur la même feuille :
VB:
Sub chomPartiel()
    Const motif As String = "CHOMAGE PARTIEL"
    Dim nom, dict, sem, k
    Dim lig As Long, lig2 As Long, col As Long, col2 As Long
    Set dict = CreateObject("Scripting.Dictionary")

    With Sheets("ABSENCE JOUR")
        nom = .[A1].CurrentRegion
        .[E2].CurrentRegion.Offset(1).ClearContents
  
        For lig = 3 To UBound(nom)
            If Not dict.exists(nom(lig, 1)) Then dict(nom(lig, 1)) = dict.Count + 1
        Next lig
        ReDim sem(1 To dict.Count, 1 To 6)
        lig = 0
        For Each k In dict
            lig = lig + 1
            sem(lig, 1) = k
            For col = 2 To 6
                sem(lig, col) = motif
            Next col
        Next k
        For lig = 3 To UBound(nom)
                ' lig-col dans sem
                lig2 = dict(nom(lig, 1))
                col2 = Weekday(nom(lig, 2), vbMonday) + 1
                If sem(lig2, col2) = motif Then sem(lig2, col2) = vbNullString
        Next lig
        .[D3].Resize(UBound(sem), 6) = sem
    End With
    Set dict = Nothing
End Sub
Je n'ai pas jugé utile de refabriquer les dates, tu as les résultats du lundi au vendredi.
eric
 

eduraiss

XLDnaute Accro
Re le forum

Merci thierry@ c'est presque super
juste ne pas afficher dipo, n'y staff inconu s'il il ne trouve pas le salarié il occulte les colonnes de ce salarié il n'efface rien si il y a quelques chose
et me pas mettre de couleur (trés sympa d'ailleurs)


A part cela c'est trés trés bien
Merci beaucoup
 

Discussions similaires