Réservation véhicules - recherche des doublons
Bonjour à toutes et à tous,
J'essaie dans mon tableau joint, de trouver les lignes qui sont en doublon
J'ai un véhicule, une date, une période (Matin , A-Midi, Journée) et des heures de début et de fin
Je n'arrive pas à trouver la bonne formule et suis en train de m'arracher les cheveux
Est-ce que ce que je souhaite est réalisable ?
Peut-être en VBA ?
Par avance merci
Bonjour,
Pourquoi ne faites-vous pas simplement une Mise en forme conditionnelle
- Sélectionnez A3 à A9
- cliquez sur l"icone "Mettre en forme conditionnelle"
- choisir "Nouvelle règle" --> "Utiliser une formule ...."
- dans la rubrique en dessous mettez cette formule --> =EQUIV($A3;($A$3:$A9);0)<>LIGNE()-2
- cliquez sur "Appliquer"
Si cela ne fonctionne pas, vérifiez que vous avez bien cette formule sans des éventuelles guillemets devant et derrière. Si oui, supprimez les puis cliquez sur OK
Si ok -->
Cordialement
Bonjour Dan et merci pour la réponse
En fait mon fichier est "un peu plus" complexe
Dans le fichier original, j'ai un USF de saisie des réservations et je voulais faire en sorte qu'il n'y est pas de doublon.
Je pensais le faire avec une simple formule, mais du coup non.
Du coup, je me suis fait une petite fonction VBA qui vérifie les données avant enregistrement
Il a fallu que je gère également le "chevauchement" si on utilise la voiture de 08:00 à 10:00, puis de 10:00 à 12:00
Je joins ci-dessous mon code, s'il peut servir à quelqu'un d'autre
Function VérifRésa(LeVéhicule As String, LaDate As Date, Hdeb, Hfin)
Dim Lig As Long, NbLig As Long
Dim Lo As ListObject
Dim Min As Date, Max As Date
' Initialisation
VérifRésa = True
Hdeb = Hdeb + TimeValue("00:01:00")
Hfin = Hfin - TimeValue("00:01:00")
' Définir le TS
Set Lo = ThisWorkbook.Sheets("Base").ListObjects("TsBase")
' Nombre de ligne
NbLig = Lo.ListRows.Count
' Parcourir chaque ligne
For Lig = 1 To NbLig
' Si le véhicule est le même
If Lo.DataBodyRange.Range("B" & Lig) = LeVéhicule Then
' Si la date est la même
If Lo.DataBodyRange.Range("D" & Lig) = LaDate Then
' Heure inférieure et supérieures de la ligne
Min = Lo.DataBodyRange.Range("F" & Lig)
Max = Lo.DataBodyRange.Range("G" & Lig)
' Vérifier si la plage inférieure est dedans
If Hdeb >= Min And Hdeb <= Max Then
VérifRésa = False ' Réservation impossible
Exit Function
End If
' Vérifier si la plage supérieure est dedans
If Hfin >= Min And Hfin <= Max Then
VérifRésa = False ' Réservatino impossible
Exit Function
End If
End If
End If
Next Lig
End Function
Je ne sais pas si il est bien optimisé, mais il me convient
Sujet résolu mais avec mon code
A+
Bonjour Fallout45, Dan
Effectivement, pour ce genre de sujet, on on y arrive souvent mieux avec une fonction VBA
Le code me semble tout à fait correcte, je mets vos dernier poste en résolu
Au plaisir