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.
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