Rapport de message :*
 

Re: Contrôle sur plage de réservation

Titre du sujet : Re: Contrôle sur plage de réservation
par myDearFriend! le 22/01/2008 00:30:06

Bonsoir dss,

Je viens de vérifier, effectivement tu as raison, il y a bien une erreur de calcul.

Essaye de tester en modifiant le code de l'évènement Worksheet_Change de la feuille Reservation comme suit :
Select Case col
    
Case 3 To 6     'colonne C à F ==============
        '
Vérif si véhicule libre
        
If Application.CountA(Range(Cells(lig3), Cells(lig6))) = 4 Then
            
For 2 To UBound(tabtemp1)
                If 
<> lig Then
                    
'Si date et véhicule correspondent, vérif plage horaire...
                    If tabtemp(L, 3) = Cells(lig, 3) And tabtemp(L, 4) = Cells(lig, 4) Then
                        For T = Cells(lig, 5).Value To Cells(lig, 6).Value Step TimeValue("00:29:59")
                            Select Case T
                            Case tabtemp(L, 5) + TimeValue("00:00:01") To tabtemp(L, 6) - TimeValue("00:00:01") '
une seconde est ajouté au début et enlevé à la fin pour permettre l'égalité
                                Ko = True   '
plage horaire déjà utilisée
                                
Exit For
                            
End Select
                        Next T
                        
If Ko Then
                            
'Réservation impossible
                            MsgBox "Véhicule " & tabtemp(L, 4) & " déjà réservé le " & tabtemp(L, 3) & _
                                vbLf & "De " & Format(tabtemp(L, 5), "HH:NN") & " à " & Format(tabtemp(L, 6), "HH:NN"), , "Réservation impossible!"
                            Range(Cells(lig, 5), Cells(lig, 6)).ClearContents
                        End If
                    End If
                End If
            Next L
        End If

[list]
[*]Première modification apportée :
For L = 2 To UBound(tabtemp, 1)
J'avais mis 3, pourquoi ? Aucune idée, car ton tableau commence bien à la ligne 2 !

[*]Deuxième modification apportée :
For T = Cells(lig, 5).Value To Cells(lig, 6).Value Step TimeValue("00:29:59")
Si la plage de réservation ne fait qu'une demi-heure, le Step de 30 minutes ne permettait visiblement pas de tester la borne de fin de réservation à tort.
[/list]
Je n'ai pas pris le temps de tester à fond tout ça et je te laisse vérifier le bon fonctionnement.

[hr=50%]


Par ailleurs, même si le sujet précédent est marqué comme [résolu], tu as tout à fait le droit de revenir dans ce même sujet si la solution ne convient finalement pas. Dans ce cas, tu peux même redéfinir son préfixe à [non résolu], c'est fait pour ça et je le fais dans le cas présent. Je te laisse le redéfinir à [résolu] lorsque tu estimeras que le problème est clos.

Je me permets donc de fusionner le présent sujet avec l'ancien fil qui contient d'ailleurs les pièces jointes correspondant au problème...

Cordialement,