Code de contrôle date et heure

Bonjour à tous,

J'ai conçu une application pour gérer des rendez vous. J'aurai voulu pouvoir contrôler si je n'ai pas déjà un rendez vous à la date et heure choisie . j'ai mis un code mais cela ne fonctionne pas sur une combobox contenant des données numérique (Les heures dans mon application sont des nombres entier pour éviter les problèmes liés au format heure). Lorsque je pose un rendez vous à une date et une heure déjà existante, pas d'alerte ni de blocage... Je n'arrive pas à trouver mon erreur. Y a t-il une âme charitable ? Merci d'avance

version excel 2007

Bonjour,

modif à apporter :

    For i = 1 To [T_RDV].Rows.Count
      If CDate([T_RDV].Item(i, 2)) = CDate(Me.CbDaterdvFrmRDV.Value) And [T_RDV].Item(i, 3) = Val(Me.CbHeurerdvFrmRDV) Then

Bonjour

@thev
Ta solution ne gère pas les cas de chevauchement de RDV. Par exemple : s'il y a un rendez-vous à domicile à 8h. Il dure jusqu'à 10h donc impossible de prendre un rendez-vous à 9h.

La mienne gère ce cas mais ça implique que les durées sont codées en décimal (1h30 = 1,5)

Bonjour,

Merci à tous les deux pour votre implication dans mon projet. YAL, cela fonctionne désormais, merci. Thev, ta solution est en effet plus complète, mais cela ne fonctionne pas lors de la modification d'un rendez-vous. Dois-je modifier le code du bouton modifier ?

Thev, ta solution est en effet plus complète

La solution de Thev serait la plus complète?

Dans la mienne juste quelques lignes à copier d'une procédure dans l'autre. Du bouton "AJOUTER" vers le bouton "MODIFIER"

RE

Avec toutes mes excuses, j'ai inversé les noms désolé

Pas de souci, c'est juste que je ne comprenais pas.

re

Merci beaucoup Yal ta solution est super et tout fonctionne, je n'avais pas pensé aux deux heures domicile. Du coup maintenant, j'ai un petit souci sur l'affichage dans le tableau de bord pour les 2 heures. Mon code (pour lequel j'ai énormément galéré) n'est plus très bien adpté ?

@Yal_Excel

Ta solution ne gère pas les cas de chevauchement de RDV.

Je n'ai pas proposé de solution mais une simple correction du code existant qui effectivement ne gérait pas les chevauchements.

.

Merci thev, c'était ce que je voulais au départ mais si on peu faire mieux, je suis preneur.

c'était ce que je voulais au départ mais si on peu faire mieux, je suis preneur.
Bien évidemment.
J'ai trouvé votre code bien soigné. C'est dommage que vous n'utilisiez pas la classe associée aux tableaux structurés : ListObject qui simplifie le code et le rend plus invariant en cas d'ajout ou de déplacement de colonne.

Thev je suis débutant en vba, je me limite à ce que j'apprends grace à votre aide et à celle de tous les membres du forum. j'aime bien comprendre les codes pour pouvoir progresser. si je ne comprends pas, je suis perdu.

RE

Yal peux tu m'expliquer pour que je comprenne ce qui est en gras dans le code ?

If MsgBox("Confirmez vous la modification des données de ce rendez-vous ?", vbYesNo, "demande confirmation de modification") = vbYes Then
tbRDV = [T_RDV].Value2 Pourquoi value 2 ?
For i = 1 To UBound(tbRDV)
If CDate(CbDaterdvFrmRDV) = CDate(tbRDV(i, 2)) Then
If CDbl(CbHeurerdvFrmRDV) >= CDbl(tbRDV(i, 3)) And CDbl(CbHeurerdvFrmRDV) < CDbl(tbRDV(i, 3)) + CDbl(tbRDV(i, 8)) Then CDbl est ce une variable ?
MsgBox "Ce créneau n'est pas disponible"
Exit Sub
End If
End If
Next i

tbRDV = [T_RDV].Value2 Pourquoi value 2 ?

La propriété Value2 est presque identique à la propriété Value, sauf que la propriété Value2 n’utilise pas les types de données Currency et Date. Selon la façon dont une cellule est mise en forme (par exemple, avec la date, la devise ou d’autres formats), les deux propriétés peuvent renvoyer des valeurs différentes pour la même cellule. Quand on manipule des dates mieux vaut utiliser value2

CDbl(CbHeurerdvFrmRDV)

CDbl converti la valeur de CbHeurerdvFrmRDV qui est chaine de caractères en valeur décimale ce qui assure que la comparaison se fait bien sur de données de même type et cela permet d'autre part de faire des calculs. (CDbl(tbRDV(i, 3)) + CDbl(tbRDV(i, 8))). On ajoute la duréée du rendez-vous à l'heure de début.

Bonjour,

ci-jointe version améliorant ton tableau de bord avec intégration de la durée

NB: L'identifiant RDV de ton tableau T_RDV peut être défini par formule. Cet dernière se recopie automatiquement à chaque ajout de ligne.

Merci THEV pour ton investissement je te dirai si tout fonctionne chez moi et je vais essayé de comprendre les codes

Merci yal pour tes explications

re

Bonsoir THEV

Pourrais tu me rajouter des commentaires sur le code pour les agendas afin de me permettre de les comprendre, j'ai vraiment du mal (si ce n'est pas trop long pour toi). Est-il possible de rajouter le prénom ? Merci pour ton aide plus que précieuse

Pourrais tu me rajouter des commentaires sur le code pour les agendas afin de me permettre de les comprendre, j'ai vraiment du mal (si ce n'est pas trop long pour toi). Est-il possible de rajouter le prénom ?
Commentaires et prénoms ajoutés. Pour les incompréhensions, le plus simple est de me renvoyer le fichier avec les points d'interrogations sur une ligne ou un élément de code.

Bonjour,

Dans le tableau RDV, pour l'identifiant RDV, la date ne s'affiche plus sous format date, cela pose problème lors de la recherche d'un rendez-vous dans la partie modification annulation.

Autre petit problème Si je déplace un rendez-vous domicile de 2h, il ne vérifie pas la durée.

exemple testé :

non RDV cabinet à 8 h

Soleil RDV domicile à 9 h

Lune RDV cabinet à 11 h

Si je déplace le RDV soleil à 10 h pas de blocage alors qu'il y a un RDV à 11 h

Je ne sais pas si c'est possible de rajouter ce contrôle. Si c'est trop compliqué, je supprime le bouton modification et il faudra passer par une annulation et une re-création.

Rechercher des sujets similaires à "code controle date heure"