VBA : recherche et boucle entre 2 dates

Bonjour à tous, Forum,

Je suis obligé d'automatiser un maximum la gestion d'un planning par service. Certains d'entre vous m'ont déjà beaucoup aidé sur mon ancienne version dans laquelle j'intervenais seul. Maintenant, les chefs de service souhaitent saisir eux-mêmes les informations concernant leurs collaborateurs.

J'ai donc imaginé une saisie via des Userforms en cliquant sur les boutons de l'onglet "Accueil" (pour l'instant, le seul fonctionnel est "Créer un collaborateur").

Pas de problème pour la création du Nom, prénom mais je voudrais que la macro m'alimente les cases du planning (en mettant un "P" comme présent dans la bonne colonne...), en fonction des 2 dates saisies (Date d'arrivée et Date de départ) et de la période de travail.

Je pense qu'un petit coup d'oeil dans le fichier joint vous parlera plus car je m'aperçois, au fil de mon laïus, de la difficulté à expliquer mon souci...

La macro me dit systématiquement qu'elle ne trouve pas la date d'arrivée...

Quelqu'un peut-il me venir en aide, SVP !

Merci d'avance.

Bonsoir

Ton lien n'est pas bon.

Ne peux-tu placer ton fichier directement sur notre site ?

Amicalement

Nad

Bonjour à tous, Forum,

Le fichier fait 228 Ko... Même zippé, j'arrive à 155 Ko...

J'espère que ce lien sera opérationnel.

Merci d'avance.

Amicalement.

Bonjour,

Euh, es-tu obligé d'utiliser le calendrier depuis 1904, dans tes options?

Parce que dans ce cas, tu auras du mal, à trouver une date, par le VBA....

@ te relire...

Re-, Salut cousinhub,

Je ne comprends pas ! L'option "Calendrier depuis 1904" n'est pas cochée sur mon PC...

Est-ce possible de prendre cette option par défaut dans VBA ? Auquel cas, je ne sais pas comment j'ai pu faire et je ne sais pas l'enlever surtout...

Merci de ton aide.

Amicalement.

Re-,

Que ce soit le premier ou le deuxième fichier, avec 2003 ou 2007, j'ai l'option "1904" de cochée...

Sous 2007, clique sur le bouton Office, en haut à gauche

Puis sur "Options Excel"

Rubrique "Options Avancées", pratiquement en bas de tout, dans l'option :

"Lors du calcul de ce classeur"

Vérifie que "Utiliser le calendrier depuis 1904" n'est pas coché...

Quand tu décoches, tes dates, dans l'onglet "Planning", perdent 4 ans....

Re-,

Tu as parfaitement raison cousinhub... J'ai ouvert à nouveau mon fichier et l'option était cochée. Je ne comprends pas car à la création d'un fichier, l'option semble décochée par défaut.

En tous cas, mes dates ont effectivement perdu 4 ans mais j'ai fait un test en remettant 2011 sur janvier et la macro ne fonctionne pas mieux... Elle ne me trouve toujours pas la date.

Merci de ton aide.

Re-,

Pour chercher une date en VBA, il vaut mieux passer par sa valeur numérique...

Pour ce faire, on convertit la date en "Long"

Modifie dans tes déclarations :

Dim Arriv As Long

Tu peux supprimer Trouv, on ne va plus s'en servir...

Et en fin de code, modifie ainsi :

....
....
Arriv = CLng(CDate(TextBox3.Value))
Range("Planning!BK2").Value = CDate(TextBox4.Value)
Sheets("Planning").Select
If Not IsError(Application.Match(Arriv, Columns(2), 0)) Then
Cells(Application.Match(Arriv, Columns(2), 0), 2).Select
Unload Me
End If
Sheets("Accueil").Select
End Sub

Bon courage

Re-,

Merci cousinhub !!! Ca marche impeccable...

Maintenant, si j'osais, saurais-tu m'orienter sur la boucle entre les 2 dates ? C'est à dire, une fois que la macro a trouvé la date d'arrivée, me positionner la lettre "P" dans les cases de la colonne du dernier nom créé jusqu'à la date de départ.

Merci encore pour ton aide.

Amicalement.

-- Jeu Sep 02, 2010 8:00 am --

Bonjour à tous, Forum,

Personne pour au moins m'orienter sur de bons rails ?

Merci d'avance.

Amicalement.

Bonjour Forum,

Vraiment personne n'est inspiré par mon souci ?

Merci d'avance.

Bonjour à tous, Forum,

Vraiment personne pour me sortir de mon impasse ?

Merci d'avance.

Bonjour à tous, Forum,

Désolé d'insister... Je n'ose croire que personne ne puisse m'aider sur ce coup...

Encore merci d'avance.

Bonjour Fabrice, forum,

Tes liens ne sont plus valides,

Tu devrais alléger ton fichier de sorte à pouvoir le joindre

sans utiliser CiJoint...

Tu auras surement davantage de réponses

Amicalement

Claude

Bonjour à tous, Forum,

Je me disais aussi... Merci Claude pour l'info.

J'ai donc réduit au maximum mon fichier (je n'ai laissé que 3 mois).

Pour rappel, je souhaite que quand, dans l'USF, les dates sont renseignées, la macro m'inscrive des "P" (comme Présent) dans les cases du planning en fonction de sa période de travail et de son nom.

Exemple : je créé Mr Fabrice DURAND, entré le 05/01/2011 en "Int" et qui partira le 15/02/2011, à plein temps travaillant du Mardi au Samedi.

Dans le planning ---> Cellule H2 = FDU, Cellule H3 = Int, cellule H4 = 1 (ça, normalement, cela fonctionne...) puis il faut des "P" dans la période du 05/01/2011 au 15/02/2011 (toujours dans la colonne H).

J'espère avoir été relativement clair...

Votre aide sera appréciée à sa juste mesure...

Merci d'avance.

Amicalement.

Bonjour à tous, Forum,

Toujours besoin d'un petit coup de pouce...

Merci d'avance.

Bonsoir à tous,

Fabrice,

Désolé, je ne pourrais pas t'aider sur ce coup là,

1) je ne connais pas suffisamment les procédures avec UserForm

2) je suis plombé ailleurs (Pétanque oblige !)

Amicalement

Claude

Bonjour à tous, Forum,

Pas de problème Claude... Je ne t'en voudrais pas... Tu m'as déjà sorti de beaucoup d'impasses...

Par contre, si un spécialiste VBA pouvait prendre le relais, ce serait vraiment super.

ps : Claude, ce week-end, mon club a organisé les championnats du Rhône de pétanque en triplette mixte. Il y avait 166 équipes et tout s'est fait avec un papier crayon...

Amicalement.

Bonjour à tous, Forum,

Bon... Je ne rencontre vraiment pas un franc succès avec ma demande... Tant pis... Dernière tentative...

Merci pour votre éventuelle aide.

Amicalement.

Bonjour à tous, Forum,

Petit up !!!

Merci d'avance.

Bonjour à tous, Forum,

Devant le franc succès de mon post, je me permets de joindre un autre fichier, modifié et apuré, dans lequel je suis allé malheureusement au bout de mes compétences en VBA.

Le fichier ne comporte qu'une seule macro (Création_Collaborateur) qui lance un USF dont je veux me servir comme un formulaire de saisie.

Toutes mes procédures fonctionnent, exceptée la procédure "But_Valider_Click()" qui commence à me faire des misères à partir de la ligne "NoLigne = 6" et des "If" qui suivent.

Je souhaite qu'en fonction des données saisies dans le USF, la macro m'inscrive des "P" dans les petites cases de l'onglet "Planning". J'ai rentré 3 collaborateurs dans le planning pour vous indiquer à quoi je veux arriver...

La difficulté : si un collègue travaille du mardi au samedi, les plages à remplir vont du mardi matin au samedi matin et s'il travaille du lundi au vendredi, les plages commencent le lundi après-midi jusqu'au vendredi après-midi.

Voilà, j'espère ne pas m'égarer dans des explications trop complexes et vous verrez que je suis presque arrivé à mes fins mais je me perd dans toutes ces conditions... J'espère qu'un spécialiste VBA prendra pitié de moi pour m'aider à finaliser mon projet.

Merci d'avance.

Amicalement.

Rechercher des sujets similaires à "vba recherche boucle entre dates"