Erreur dans code VBA

Bonjour,

J'ai créé une feuille de temps ou s'affiche automatiquement le nombre de pauses dues dès lors que les champs nb d'heures composant la journée normale de travail (choix entre 0h = journée variable, 8h ou 10h) et nb d'heures effectivement travaillées ont été remplis.

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.

J'ai opté pour une solution en VBA.

Mon pb est que j'ai une erreur quelque part qui fait que lorsque le choix de la journée normale de travail est 0h le fichier n'affiche pas ce qu'il devrait.

Lorsque le temps de travail pour une telle journée est de 2h, il devrait afficher 0 selon le tableau et au lieu de ça il m'affiche 1 ou 2.

Ci-joint mon fichier de travail pour illustrer ça.

Merci au bon samaritain qui pourra m'aider à trouver l'erreur.

18book.xlsm (27.46 Ko)

Bonsoir

Un Option explicit t'aurait permis de trouver l'erreur : Tu avais un "debut" à la place d'un "deb"

A tester (je n'ai pas vérifier tous les cas)

Option Explicit

Function pauses(JNT, TT)
Dim C As Range
Dim Z
Dim Deb As Double, Fin As Double
Dim N As Long

  Application.Volatile
  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), "<=", ""))
      If TT > Deb And TT <= Fin Then
       pauses = Sheets("Data").Cells(N, C.Column + 1)
       Exit Function
      End If
    Next
  End If
End Function

Merci bcp pour la proposition. Malheureusement, le bogue persiste avec celle-ci.

Le code ci-dessous l'a résolu :

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

Rechercher des sujets similaires à "erreur code vba"