Test logique

Bonjour,

Il y a des jours comme ça ou la logique n'est pas au rdv.

J'ai un tableau où je dois faire une analyse de données.

Lorsque les plages se chevauchent, un message informe l'utilisateur.

img1

le code utilisé est

Dim DerLi%

Private Sub Worksheet_Change(ByVal Target As Range)
   DerLi = Range("D" & Rows.Count).End(xlUp).Row

If Not Intersect(Target, Range("B4:L" & DerLi)) Is Nothing And Cells(Target.Row, "B") <> "" Then
   Dim Salarié$, Jour As Long, HD As Double, HF As Double
   'contrôle des plages se chevauchant
   a = Range("B4:L" & DerLi).Value2 '..............................................................Tableau des données pour plus de rapidité
   Salarié = Cells(Target.Row, "B") '..............................................................Nom du salarié
   Jour = Cells(Target.Row, "J").Value2 '..........................................................Jour del'intervention
   HD = Cells(Target.Row, "K") '...................................................................Heure de Début de l'interventino
   HF = Cells(Target.Row, "L") '...................................................................Heure de Fin d'intervention
   For i = 1 To UBound(a, 1) '.....................................................................Boucle sur les données
      If a(i, 10) < HD < a(i, 11) Or a(i, 10) < HF < a(i, 11) Then
         If Salarié = a(i, 1) And Jour = a(i, 9) And i + 3 <> Target.Row Then 
            MsgBox Salarié & " est occupé sur ce créneau.", vbCritical, "Erreur de planification"
            Cells(Target.Row, "B").ClearContents '....................................................Efface le nom du salarié
            Cells(Target.Row, "B").Select '............................................................selectionne la cellule nom
            Exit Sub
         End If
      End If
   Next i
End If
End Sub

ce sont les deux lignes if .. then du code qui me bloquent.

Merci pour vos lumières.

Cordialement

bonjour

cette syntaxe n'est pas correcte pour tester si la valeur de HD est comprise entre celles de a(i,10) et a(i,11) etc ..

If a(i, 10) < HD < a(i, 11) Or a(i, 10) < HF < a(i, 11) Then

voici une correction

If (a(i, 10) < HD and HD < a(i, 11)) Or (a(i, 10) < HF and HF < a(i, 11)) Then

je n'ai pas regardé la logique du code, juste cette syntaxe.

Bonjour h2so4,

Ca marche, merciiiii

Bonne soirée

Rechercher des sujets similaires à "test logique"