Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Condition et Boucle

boudha74

XLDnaute Nouveau
Bonjour à tous,

je calcule dans la feuille excel la différence entre une heure debut et de fin afin de verifier que cela ne depasse pas 11 heures soit 0.46. Si c'est le cas, je lance une MSGBOX.

Mais malgrès que la condition soit vrai ou fausse, il lance la MsgBox.

Merci de votre aide

Code:
Private Sub Worksheet_Calculate()
 
' Verifie si le nombre d'heures légales de repos entre deux jours de travail est respecté ....
 
Dim L As Long, C As Long, val As Integer
 
For L = 4 To 6
    For C = 8 To 16 Step 8

 val = Cells(L, C).Value
 
 If val > 0.46 Then MsgBox "L'employé(e) " & " " & Cells(L, 1) _
          & " ne peut pas légalement commencer sa journée avant " & heure _
          & " ce jour !!!" & Chr(13) & Chr(10) & Chr(10) & "Veuillez vérifier l'heure de fin d'hier et l'heure de début d'aujourd'hui !!", vbOKOnly + vbInformation, "Avertissement !!!"
          
       Next C
    Next L
 End Sub
 
Dernière édition:

Papou-net

XLDnaute Barbatruc
Re : Condition et Boucle


Bonsoir boudha74,

Sans pouvoir tester ton code, je relève déjà que tu utilises un mot-clé Visual Basic comme nom de variable.

Essaies donc de renommer la variable "val", en tout cas je pense que ça ne peut pas nuire à ton programme.

Espérant avoir répondu.

Cordialement.
 

Fred0o

XLDnaute Barbatruc
Re : Condition et Boucle

Bonsoir boudha74,

En fait ta variable val est de type integer et tu la compare à un réel (0.46). Donc, comme tu dois compter des heures, la valeur est toujours supérieure à 1. Je ne sais pas comment est construit ton tableau mais tu as 2 solutions : soit tu compares à 11 dans la macro, soit tu transformes tes 11 heures en 0.46 dans la feuille de calcul.

A+

Edit : Bonsoir papou
 

Papou-net

XLDnaute Barbatruc
Re : Condition et Boucle


Bonsoir boudha74, Fred0o,

RE Fred0o : bien vu concernant le type de la variable.

Après plus ample réflexion, je tenterais de la manière suivante :

Code:
Private Sub Worksheet_Calculate()
 
' Verifie si le nombre d'heures légales de repos entre deux jours de travail est respecté ....
 
Dim L As Long, C As Long
 
For L = 4 To 6
    For C = 8 To 16 Step 8

 If Hour(Cells(L, C).Value) > "11:00" Then MsgBox "L'employé(e) " & " " & Cells(L, 1) _
          & " ne peut pas légalement commencer sa journée avant " & heure _
          & " ce jour !!!" & Chr(13) & Chr(10) & Chr(10) & "Veuillez vérifier l'heure de fin d'hier et l'heure de début d'aujourd'hui !!", vbOKOnly + vbInformation, "Avertissement !!!"
         
       Next C
    Next L
 End Sub

Cordialement.
 

boudha74

XLDnaute Nouveau
Re : Condition et Boucle

Merci de votre aide à tous, mais malheureusement ca ne fonctionne pas.

Je vous joints suivre le fichier avec mardi en exemple.
 

Pièces jointes

  • Excel Download.xls
    66.5 KB · Affichages: 41
  • Excel Download.xls
    66.5 KB · Affichages: 38
  • Excel Download.xls
    66.5 KB · Affichages: 41

Fred0o

XLDnaute Barbatruc
Re : Condition et Boucle

Bonjour boudha74,

Voici le code corrigé qui fonctionne chez moi. J'ai corrigé la dernière formule de Papou-net en enlevant les guillemets sur les 11 heures et surtout en testant si la durée est inférieure à 11h00 et pas supérieure.

VB:
Private Sub Worksheet_Calculate()
    Dim L As Long, C As Long
    For L = 5 To 6
        For C = 16 To 16
            heure = Format(Cells(L, 17).Value, "hh:mm")
            If Hour(Cells(L, C).Value) < 11 Then MsgBox "L'employé(e) " & " " & Cells(L, 1) _
                      & " ne peut pas légalement commencer sa journée avant " & heure _
                      & " ce jour !!!" & Chr(13) & Chr(10) & Chr(10) & "Veuillez vérifier l'heure de fin d'hier et l'heure de début d'aujourd'hui !!", vbOKOnly + vbInformation, "Avertissement !!!"
                     
       Next C
    Next L
End Sub

A+
 

Discussions similaires

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…