Affichage texte en fonction de plusieurs conditions

Caribou

XLDnaute Nouveau
Bonjour,

Je suis en train de créer une feuille de temps pour laquelle j'ai besoin que s'affiche automatiquement le nombre de pauses dues qui est fonction de 2 paramètres : la définition du nb d'heures composant la journée normale de travail (pour certaines personnes c'est 5h, pour d'autres 8 ou encore 10) et le nb d'heures effectivement travaillées.

Par exemple, si la personne est sous le régime de la journée de 8h et qu'elle a travaillé 8h, elle a droit a 2 pauses mais si elle a travaillé 9h, elle a droit à 3 pauses.

Les liens entre ces 3 éléments : nb d'heures composant la journée normale de travail / nb d'heures effectivement travaillées / nb de pauses dues, figurent dans des tableaux.

Ci-joint mon fichier de travail pour éclairer tout ça.

Je souhaiterais donc automatiser l'affichage du nombre de pauses dues dans la colonne correspondante dès lors que les champs nb d'heures composant la journée normale de travail et nb d'heures effectivement travaillées ont été remplis.

Avec une condition c'est facile mais là je n'arrive pas à combiner les différentes conditions.

Merci beaucoup pour votre aide.
 

Pièces jointes

  • Feuille de temps.xlsm
    15.5 KB · Affichages: 35
  • Feuille de temps.xlsm
    15.5 KB · Affichages: 36
  • Feuille de temps.xlsm
    15.5 KB · Affichages: 34

titiborregan5

XLDnaute Accro
Re : Affichage texte en fonction de plusieurs conditions

Bonjour Caribou,
regarde si le fichier ci-joint te convient.
J'ai utilisé un si et un recherchev avec correspondance approximative. J'ai remplacé en feuille data les critères "littéraires" par le maximun (>5 mais =<7 donne 7)...
enfin tu comprendras mieux dans l'exemple!
 

Pièces jointes

  • Feuille de temps.xlsm
    15.7 KB · Affichages: 32
  • Feuille de temps.xlsm
    15.7 KB · Affichages: 35
  • Feuille de temps.xlsm
    15.7 KB · Affichages: 32

Caribou

XLDnaute Nouveau
Re : Affichage texte en fonction de plusieurs conditions

Merci bcp. C'est exactement ce genre de solution que je cherchais. Par contre, le fait d'avoir mis des maximums fausse les résultats.

Par exemple, si la journée normale de travail est de 5h et que la personne a travaillé 5h15 le nombre de pause devrait être de 2 et non de 1. Ou encore si la personne n'a travaillé que 4h, il faudrait tout de même afficher 1 (là ça m'affiche #N/A).

C'est clair que mes contraintes genre >5 mais =<7 compliquent la tâche...

Je ne crois pas que l'on puisse adapter ta proposition à ces contraintes.

Une autre piste ?
encore merci
 

titiborregan5

XLDnaute Accro
Re : Affichage texte en fonction de plusieurs conditions

Pour les fainéants : :cool:
Code:
 =SI(B6<$C$1;1;SI($C$1=5;RECHERCHEV(B6;JNT5h;2;VRAI);SI($C$1=8;RECHERCHEV(B6;JNT8h;2;VRAI);SI($C$1=10;RECHERCHEV(B6;JNT10h;2;VRAI);""))))
Pour ce qui est de toute heure commencée entraîne une pause, je réfléchis...
Peut-être faudrait-il rebatir le tableau data.
Je reviens vers toi si j'ai une idée!
 

pierrejean

XLDnaute Barbatruc
Re : Affichage texte en fonction de plusieurs conditions

Bonjour à tous


Un essai avec une fonction personnalisée (et de petites modifs en feuille Data)
 

Pièces jointes

  • Feuille de temps.xlsm
    21.2 KB · Affichages: 30
  • Feuille de temps.xlsm
    21.2 KB · Affichages: 27
  • Feuille de temps.xlsm
    21.2 KB · Affichages: 29

Caribou

XLDnaute Nouveau
Re : Affichage texte en fonction de plusieurs conditions

Merci titiborregan5 et merci pierrejean.

La solution de pierrejean qui passe par du VBA répond parfaitement à ma problématique. Celle de titiborregan5 y répond presque mais présente l'intérêt pour ceux que ça rebute de ne pas passer par le VBA.

Même si je vais utiliser la solution de pierrejean, celle de titiborregan5 va m'aider à parfaire ma très lente initiation aux énormes possibilités d'Excel. Donc vraiment merci à vous deux pour le coup de main.
 

Modeste geedee

XLDnaute Barbatruc
Re : Affichage texte en fonction de plusieurs conditions

Bonsour®
un peu tard peut-etre ...
autre proposition sans VBA

- utilisation de cellules au format heure
- Table de références remaniées
- selon le type JNT, table Ref prise en compte dynamiquement

petit souci cependant concernant l'horaire maximum par type JNT (x fois l'horaire type ???)
 

Pièces jointes

  • Feuille de temps.xlsm
    22.2 KB · Affichages: 35
  • Feuille de temps.xlsm
    22.2 KB · Affichages: 34
  • Feuille de temps.xlsm
    22.2 KB · Affichages: 38

Caribou

XLDnaute Nouveau
Re : Affichage texte en fonction de plusieurs conditions

Bonjour Pierrejean,

j'espère que vous verrez mon message ou que quelqu'un ayant vos connaissances voudra bien éclaircir le problème.

J'ai utilisé la solution en VBA proposée mais il y a un drôle de bogue qui se produit.

Lorsque la journée normal de travail est de 0 (j'ai mis 0 pour toutes les journées de travail non standards, càd autre que de 8 ou 10h) et que la personne travaille 2h ou moins elle ne devrait pas avoir de pauses selon le tableau de données associé et là cela m'affiche 1 ou 2.

Je ne comprends pas pourquoi. Tout semble identique et le code marche très bien avec les journées normales de travail de 8 ou 10h.

Je joins mon fichier de travail pour vous montrer le bogue.

Merci
 

Pièces jointes

  • Book.xlsm
    27.5 KB · Affichages: 28
  • Book.xlsm
    27.5 KB · Affichages: 27

pierrejean

XLDnaute Barbatruc
Re : Affichage texte en fonction de plusieurs conditions

Re

Ce problème est du au fait que la valeur en jour pour 2h est un nombre décimal dont on n'a jamais le dernier chiffre et Excel a du mal avec ceci
Avec cette modification de la fonction cela devrait aller mieux
Code:
Function pauses(JNT, TT)
pause = ""
TT = TT * 24
Set c = Sheets("Data").Rows(1).Find("JNT " & JNT & "h", LookIn:=xlValues, lookat:=xlWhole)
If Not c Is Nothing Then
  For n = 3 To Sheets("Data").Cells(65536, c.Column).End(xlUp).Row
    Z = Sheets("Data").Cells(n, c.Column)
    Z = Split(Replace(Z, "mais ", ""))
    deb = CDbl(Replace(Z(0), ">", ""))
    fin = CDbl(Replace(Z(1), "<=", "")) + 0.000001
    If TT > debut And TT <= fin Then
     pauses = Sheets("Data").Cells(n, c.Column + 1)
     Exit Function
    End If
  Next
End If
End Function
 

Pièces jointes

  • Book (1).xlsm
    24.8 KB · Affichages: 43

Discussions similaires

Statistiques des forums

Discussions
312 231
Messages
2 086 457
Membres
103 217
dernier inscrit
LoshR7