Userform - vérifier les intervalles de dates sur une table

Bonjour à tous,

Suite à de multiples recherches, je n'ai pas trouvé le Graal pour résoudre mon problème. De ce fait, je m'en remets à vous

J'ai fabriqué un fichier permettant aux collaborateurs de saisir leurs dates de congés via un userform -> onglet 1. Interface

Les données saisies sont inscrites dans un tableau -> onglet 2. Listingcongés

Ma problématique est de vérifier la cohérence des dates saisies rapport aux dates saisies de manière antérieure par le collaborateur dans le userform.

Via VBA et les forums, j'ai implémenté un code vérifiant si le collaborateur B a déjà saisi une date de début X ET une date de fin Y dans l'onglet 2. Listingcongés.

En gros, si pour toutes lignes contenant uniquement B, X ET Y sont déjà présents, alors le userform renvoie une MsgBox avec un message d'erreur invitant le collaborateur à vérifier sa saisie. Cela semble plutôt bien marcher

Par ailleurs, je veux empêcher le collaborateur B de saisir un congé qui entre en conflit avec un autre congé qu'il a déjà saisi par le passé. En d'autres mots, trouver un moyen de vérifier si le congé saisi est cohérent par rapport aux congés saisis précédemment par la même personne, notamment au niveau des intervalles de dates.

Exemple :

Saisie 1 : Collaborateur B saisit un congé Date de début : 4 février et Date de fin : 8 février.

Saisie 2 : Collaborateur B a la tête en l'air et pose un nouveau congé : Date de début : 6 février et Date de fin : 7 février

-> J'aimerai que le Userform bloque cette saisie car elle entre en conflit avec la saisie n°1. L'intervalle de dates sur la saisie n°2 rentre dans l'intervalle de dates de la saisie n°1 concernant le collaborateur B.

Saisie 3 : Collaborateur B saisi un congé Date de début : 1 février et Date de fin : 4 février

-> De même blocage, car la saisie n°3 entre dans l'intervalle de date de la saisie n°1.

Dans le userform le collaborateur correspond au champ "Listedemandeurs", date de début "TextBox3", date de fin "TextBox4".

J'espère avoir été clair

Par avance, je vous remercie pour votre aide précieuse.

Bien cordialement,

Bonsoir,

ci_jointe une proposition avec amélioration des fonctions et de votre code :

1- utilisation d'un objet tableau pour votre BDD Listingcongés

2- ajout modification/suppression via une ListBox (1 clic pour modifier, 1 double clic pour supprimer)

3- remplacement de vos formules sur le calendrier par une macro événementielle

Le recalcul des formules ralentissait considérablement la saisie des congés. La macro reste néanmoins relativement longue à exécuter. Pour optimiser, je pense qu'il serait mieux de faire un calendrier glissant sur 2 mois.

NB : ajout de mon contrôle calendrier et de mes fonctions de date pour les jours non ouvrés.

Merci beaucoup Thev ! C'est exactement ce que je voulais.

Vous avez même anticipé mon prochain besoin avec la Listbox permettant de modifier les congés je voulais d'abord que cette histoire de chevauchement soit résolu avant de faire cette demande ^^

Concernant la macro événementielle je vais décortiquer tout cela afin de comprendre comment c'est construit.

En effet, la macro met presque mon modeste ordinateur à genou quand je vais dans l'onglet 3, comment voyez-vous la mise en forme du calendrier glissant sur 2 mois ?

Merci encore pour l'aide !

J'ai fait plusieurs essais sur le nouveau fichier .

3- remplacement de vos formules sur le calendrier par une macro événementielle

-> je suis en train de me demander s'il vaut mieux pas réintégrer les formules sur le calendrier, certes la saisie prend du temps mais au global l'affichage des datas sur l'onglet 3 via la macro événementielle prend encore plus temps, mon ordinateur est proche du crash.

Qu'est-ce que vous en pensez ?

Par contre au niveau du userform il ne faut rien toucher c'est impeccable

Bonsoir,

Une proposition avec calendrier glissant sur 2 mois.

Après, il est possible d'optimiser le temps d'affichage en supprimant la mise en forme conditionnelle. Dans ce cas, il faut paramétrer vos couleurs dans la feuille types de congé et ajouter celle des jours non ouvrés (jour férié + week-end) dans le calendrier.

Ces couleurs seront alors stockées dans la BDD et reproduites par la macro événementielle.

Bonsoir,

ci-jointe exemple de version sans format conditionnel avec 2 mois et 6 mois glissants.

Le temps de réponse est bien meilleur.

Bonjour Thev,

Merci pour ce travail c'est vraiment top !

Pardon pour le retard de ma réponse, j'ai eu une absence prolongée.

Le calendrier marche très bien pour 2019. En revanche, il ne s'initialise pas pour 2020 ou 2021:/ je ne sais pas trop comment faire pour corriger ce problème ? Sinon j'ai quasiment ce que je souhaitais

Merci !

Bonsoir Valwhite,

En fait, j'ai amélioré le planning sur 1 an suite à un travail sur une autre application.

Je réintègre cette amélioration dans le vôtre avec en sus le report du tableau des collaborateurs pour simplification des manipulations.

ci-jointe nouvelle proposition

Parait, tout est bon pour moi. Merci encore pour toute l'aide.

Bonne journée

Rechercher des sujets similaires à "userform verifier intervalles dates table"