Problème macro pour rechercher une valeur dans un intervalle

Bonjour à tous !

Voilà je suis toute nouvelle sur le forum, j'ai consulté quelques postes qui pourrait m'aider à résoudre mon problème mais c'est assez particulier et je bloque vraiment dessus alors je me tourne vers vous.

Je suis actuellement stagiaire en entreprise et je dois réaliser des développements en VBA et étant novice sur le sujet, j'ai besoin d'aide pour finaliser mon projet.

Je cherche le moyen de pouvoir rechercher une valeur dans un intervalle et afficher cette valeur si elle est dans cette intervalle.

Comme mon problème est assez particulier et long à expliquer, j'ai fourni des explications et un mode d'emploi sur mon fichier que je vais envoyer en pièce jointe.

Je vous remercie d'avance d'avoir prêté attention à ma demande et aussi pour votre aide.

68medical.zip (75.70 Ko)

Bonjour

Suis en train d'étudier ton programme mais je bute sur quelques os

Dans la feuille "Planning agents" dans la colonne L (Vac) quand je vois 1230-2121 cela correspond à quoi ?

Surtout qu'il y aussi 0520-1371

Les heures dans la page "Programmation médecin" ce sont les heures des rendez vous ou les heures de prise de service et peuvent avoir plusieurs rendez-vous, un toute les x (minutes, heures)

Pas sur que je trouve une solution mais le sujet est intéressant

A suivre

Bonjour Banzai64,

Merci de ton aide.

1230-2121 dans la colonne vacation correspond aux horaires de vacation de l'agent (12h30-21h21).

Sinon dans la feuille programmation médecin, les horaires correspondent aux horaires de rendez vous possible prévus par le médecin.

Pour un horaire, je dois programmer un unique agent et non plusieurs. Et il faut que cet agent travaille ce jour là car il ne peut pas aller à un rendez vous en dehors de ses horaires de vacation.

C'est vrai que c'est un sujet intéressant, ravie qu'il te plaise mais pas évident à réaliser.

Penses tu que c'est possible ?

@+

Bonjour

Essai numéro 1

A toi de me dire ce qui ne vas pas car avec toutes ces heures,noms etc... j'ai les yeux qui se mélangent

Bonjour Banzai64,

C'est génial ! ça fonctionne à merveille. Merci beaucoup pour ton aide, seule, je n'aurai pas pu m'en sortir c'est un travail énorme je t'en remercie.

J'ai juste encore une petite question: le fichier que je t'avais envoyé était une copie du fichier réel que je ne peux pas envoyer (confidentialité au sein de l'entreprise). Dans ma colonne vacation, les horaires sont affichés comme au départ (1200-2024), j'ai alors créé une formule de ce type: =TEXTE(GAUCHE(L6;2)&":"&STXT(L6;3;2);"hh:mm")

pour pouvoir convertir le texte en heure. Donc j'ai bien l'horaire de début et de fin correspondant aux colonnes O et P qui sont au format heure.

Seul souci, c'est que maintenant, lorsque je lance la macro, elle ne reconnaît plus le format (en fait je dois faire le changement sur plus de 21000 lignes alors à la main c'est long d'où la formule) donc je n'ai plus de résultats en sortie.

Comment dois-je procéder à présent pour que la macro reconnaisse la formule que j'ai ajouté pour avoir un résultat ?

Merci encore

Bonsoir

Avec ta formule tu es en format texte

Soit tu multiplies tes colonnes par 1

Procédure (si tu ne la connais pas)

tu écris 1 dans une cellule vide

Copier de cette cellule

Sélectionnes tes colonnes contenant les heures

Clic droit dans une cellule sélectionnée

collage spécial ---> Choisir Multiplication

Sinon j'ai utilisé cette formule

Attention au parenthèses

Les vacations sont en colonne L

pour la colonne O

=(GAUCHE(L2;2)&":"&STXT(L2;3;2))*1

pour la colonne P

=(STXT(L2;6;2)&":"&DROITE(L2;2))*1

Ensuite sélection des deux colonnes -> Format de cellule ---> Heure

Bonne soirée

Ps: Je n'ai pas trop testé le programme, vérifies bien

Bonjour banzai64,

Ta formule fonctionne parfaitement ! J'ai adapté ton code à mon fichier d'origine et c'est exactement ce que je recherchais. Tu m'as été d'un grand soutien et ton aide m'a beaucoup apporté ! Je t'en remercie encore.

Encore quelques questions: il m'a été apporté qu'une visite médicale reste valable 1 an jour pour jour après la date de la dernière visite; par exemple, si l'agent a effectué sa visite le 20/06/2010, même si c'est l'année précédente, sa visite reste valable et il n'est pas à reprogrammer.

Comment modifier le code pour ne pas reprogrammer les agents qui sont dans le cas ?

Autre question: est il possible de transférer des données d'Excel vers Word ? Je pense que c'est possible mais je ne suis pas sûre alors dans le doute, je te demande.

@+

Bonjour

Dans le Module1 Procédure Sub AgentAProgrammer()

remplaces la ligne suivante

If Tablo(N, 9) = "" And Tablo(N, 11) <> "OUI" And Tablo(N, 5) <> "INACTIF" And Year(Tablo(N, 7)) <> Year(Now) Then

par celle-ci

If Tablo(N, 9) = "" And Tablo(N, 11) <> "OUI" And Tablo(N, 5) <> "INACTIF" And DateAdd("yyyy", 1, Tablo(N, 7)) < Date Then

Cela devrait faire l'affaire

Bonne journée

Bonjour Banzai64,

La formule que tu m'as donné fonctionne très bien ! C'est parfait !

Merci beaucoup de ton aide, seule je ne pense pas que j'y serai arrivée. J'ai beaucoup appris grâce à toi.

A plus

Rechercher des sujets similaires à "probleme macro rechercher valeur intervalle"