Lissage des horaires sur une semaine

Bonjour a tous,
J’ai un nouveau sujet a vous soumettre concernant un planning d’effectifs sur lequel je souhaiterais pouvoir plus facilement détecter les anomalies.
Je souhaite pouvoir obtenir:
-le nombre de fois où un collaborateur change d’horaire de travail sur une semaine.
-l’ecart le plus important entre deux horaires sur la même semaine.
Ci joint le tableau avec un exemple et des explications.
Merci pour tout l’aide que vous pourrez m’apporter.
Bonnes vacances à ceux qui y sont encore et bonne journée aux autres.
Franck.
lissage horaires .xlsx (16,1 Ko)

Bonjour,
avec une version 365, vous pouvez mettre :
Sur G4

=MAX(CNUM(GAUCHE(TRANSPOSE(B4:F4);5)))-MIN(CNUM(GAUCHE(TRANSPOSE(B4:F4);5)))

Cordialement

Merci pour cette proposition qui fonctionne,pour le nombre de changement je pense partir sur un MFC qui colore les cellules si elles sont différentes de la précédente et faire la somme .
Merci ,
Franck.

1 « J'aime »

Re ,
Je bute sur le comptage des cellules en orange,j’ai peut-être loupé quelque choses,si vous pouviez jeter un petit coup d’œil.
J’ai également un problème lorsque certaines cellules ne contiennent pas d’horaires,ex:CP ou AM ,les formules ne fonctionnent plus .
Merci ,
Franck
lissage horaires .xlsm (27,2 Ko)

1 « J'aime »

Vous pouvez vous baser sur la mise en forme conditionnelle que vous avez fait pour les compter.

Oui bonne idée,c’est ce que j’ai fait ,merci .
Une idée pour les formules qui me donnent #valeurs lorsqu’il y a autre chose dans la cellule qu’un horaire ?
Merci.
Franck.

avec une fonction personallisé
lissage horaires .xlsm (32,1 Ko)

1 « J'aime »

Merci Cow18 pour cette proposition qui fonctionne parfaitement et merci a willfread pour le reste.
Bonne soirée messieurs.
Franck.

1 « J'aime »

Re,
Avec une nouvelle fonction LET on peut l’faire comme ceci :

LET(heure;CNUM(GAUCHE(TRANSPOSE(B4:F4);5));MAX(heure)-MIN(heure))

Cordialement

1 « J'aime »

Encore une fonction que je découvre !!
Merci .
Franck.

Re bonjour a tous ,
Je souhaiterais une petite amélioration a mon fichier en donnant le nombre de jours par semaine ou une personne n’est pas a son poste d’affection initiale .
Le détail avec exemple dans le fichier.
Merci d’avance,
Franck
Déjà posté sur un autre post mais pour un autre besoin sur le même tableau.
lissage horaires -1.xlsm (63,6 Ko)

1 « J'aime »
Sub DéfusionnerCellules()
     With Sheets("planning ppf")
          If StrComp(.Range("A2").Value, "effectif par horaire", 1) = 0 Then .Range("A1").Resize(3).EntireRow.Delete     'A2=Effectif ..." alors supprimer 3 lignes

          With .Range("A" & Rows.Count).End(xlUp)
               If IsDate(.Value) Then .EntireRow.Delete     'cellule A de la dernière ligne est une date = supprimer ligne
          End With

          .UsedRange.UnMerge                 'défusionner

          With .UsedRange
               .SpecialCells(xlConstants).EntireRow.Hidden = True     'cacher toutes les lignes avec une cellule qui n'est pas vide
               On Error Resume Next
               .SpecialCells(xlVisible).EntireRow.Delete     'supprimer toutes les lignes visible
               .EntireRow.Hidden = False     'montrer toutes le lignes

               .WrapText = False             'tout sur une ligne
               .EntireColumn.AutoFit         'ajuster largeur des colonnes
               .SpecialCells(xlConstants).EntireColumn.Hidden = True     'cacher toutes les colonnes des cellules avec un contenu
               .SpecialCells(xlVisible).EntireColumn.Delete     'supprimer les colonnes visible
               .EntireColumn.Hidden = False  'montrer toutes les colonnes
               On Error GoTo 0
          End With
     End With
End Sub

Merci Cow 18 ,
c’est exactement le travail que je souhaitais que la macro fasse !!
Que de connaissances !!
Je vais encore les mettre a contributions pour une dernière touche a mettre au fichier .
Pour avoir un travail complet sur ce fichier de vérification de planning (c’est un logiciel dédié qui le construit mais qui n’a pas la finesse que nous pouvons avoir manuellement,d’où cette sollicitation !),je souhaite pouvoir :
-Comme évoqué précédemment pouvoir comparer et comptabiliser les journée ou les collaborateur ne sont pas affectés a leurs poste de prédilection .
-Rechercher les non respect de coupure de 11h00 entre les fin de poste du jour J et le debut de poste de J+1 ,Arthur termine sa journée le lundi a 13H00 et reprend à 05h00 le lendemain :RAS ,il reprend a 23H00 :il manque 01h00 de repos ,donc alerte .

Merci pour toute l’aide et le partage de savoir !!
Bon week-end à vous .
Franck .

c’est une coupure de 11 heures ? Maintenant c’est 12, mais vous pouvez modifier cela dans la fonction « AF_291 », ligne
If Delta < TimeSerial(12, 0, 0) Then 'il faut une coupure de 11 heures entre fin hier et début aujourd’hui (changer ce 12 en 11 plus tard)
Et Jocelin avec ces 2 shifts ?
lissage horaires -1 (1).xlsm (80,6 Ko)

Génial !!
vraiment ce que je souhaitais …en mieux !!
Pour les personnes avec deux horaires ,c’est plus compliqué mais il faut prendre en compte (je ne sais pas si c’est faisable ) la fin du dernier horaire .
En tout cas merci !!
Si vous pouviez faire quelque chose pour me première requête ("-Comme évoqué précédemment pouvoir comparer et comptabiliser les journée ou les collaborateur ne sont pas affectés a leurs poste de prédilection ",le tableau serait terminé et super opérationnel ! (il l’est deja a 95 % !!)
Franck

[quote=« af291, post:15, topic:16735 »]
leurs poste de prédilection
[/quote]c’est quoi, c’est indiqué où ?
PS. la fonction AF_291 regarde les 8 jours, donc du lundi au lundi suivant (inclu!)
image
lissage horaires -1 (1).xlsm (79,1 Ko)

Oui ,je precise ,
la colonne « J » (Affectation) donne les deux premières lettres du poste et dans chaque cellules « horaire » on retrouve les heures et des postes ex:06:30 - 14:30 CU4 ou bien :10:00 - 15:00 REMP4 ,si dans l’affectation de la personne on trouve CU pour le premier exemple ou RE pour le second ca match sinon c’est une autre affectation et cela que je veux mettre en évidence .
Pour la formule c’est top sur la semaine car certaines affectations peuvent se faire le samedi/dimanche soir .
Merci ,
Franck .

lissage horaires -1 (1).xlsm (56,4 Ko)

Oui ,
ce sont les deux première lettres qu’il faut prendre en compte ,c’est comme RL ,on trouvera RLD1 ,RLE7 etc … mais le poste reste le meme ,c’est juste l’atelier qui change .
Franck .

j’avais juste changé le fichier ici dessus

1 « J'aime »