Gestion de délai

Fermé
Renaud - 3 sept. 2014 à 15:25
Ren033 Messages postés 5 Date d'inscription vendredi 5 septembre 2014 Statut Membre Dernière intervention 10 septembre 2014 - 10 sept. 2014 à 09:03
Bonjour,

Je fais actuellement un travail concernant une gestion de demandes devant être traitées sous un certain temps.
Mon tableau se présente sous la forme suivante :
Col.A : Date de la demande
Col.B : Demande (liste déroulante selon données dans la feuille 2)
Col.C : Délai (en jour)
Col.D : Date de réalisation

J'aimerai que la colonne C se remplisse automatiquement en fonction de la colonne B (j'ai 7 choix dans ma liste déroulante). Par exemple : B1 : Retard alors C1 : 2jours
Les délais pouvant être : 2j, 7j, 15j et 30j
Je souhaiterai également qu'une message box (ou pop up, ou message d'alerte...) s'affiche si : aujourd'hui = [A1(date de la demande) + C1(délai)] - 2 (en gros je souhaite que le message s'affiche 2jours avant la fin du délai, calculé grâce à la date de la demande)

Je ne pense pas qu'une mise en forme conditionnelle suffise. Je ne suis pas un expert en VBA mais si les explications sont suffisamment claires je suis capable de reproduire et d'adapter à minima.

J'espère avoir été le plus clair possible et vous avoir donné le plus d'informations possible. Dans le cas contraire je ferai au mieux pour clarifier mon problème.
Merci d'avance à tous.
Bien cordialement,
Renaud

A voir également:

6 réponses

via55 Messages postés 14473 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 13 septembre 2024 2 728
9 sept. 2014 à 10:36
Bonjour

Qu'as tu dans la colonne délai ?
As tu bien un nombre seul (2, 7 ..) comme je l'indiquais dans mon premier message et non pas du texte car sinon Excel ne peut pas calculer la date prévue de réalisation

Cdlmnt
2
Bonjour,
Oui j'ai bien un nombre seul.
Ma colonne A "Date" est sous la forme 09/09/14 et ma colonne L "Délai" contient uniquement un nombre seul (parmi : 2,7,15 et 30)
Merci
0
via55 Messages postés 14473 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 13 septembre 2024 2 728
9 sept. 2014 à 11:31
Peux tu poster un exemple de ton fichier allégé et anonymé) avec sa macro sur cjoint.com et m'indiquer le lien fourni ?
0
Malheureusement je ne peux pas accéder au site cjoint.com depuis mon poste de travail. Comment faire autrement pour que je puisse vous aider au mieux ?
0
via55 Messages postés 14473 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 13 septembre 2024 2 728
3 sept. 2014 à 15:56
Bonjour

Pour le 1, il suffit dans la base de donnée de la feuille 2 d'avoir en regard de chaque choix possible le délai correspondant
Ensuite dans les cellules de la colonne C une RECHERCHEV à partir du choix fait permettra de renvoyer le bon délai (attention que le délai soit bien simplement numérique 2, 7 etc (et non pas 2j ..) pour pouvoir l'utiliser dans le calcul du 2

Pour le 2 il faudrait alors qu'à chaque ouverture de classeur toutes les lignes du tableau soient passées en revue, et que celles atteignant la limite de 2 jours (ou moins) soient relevées et affichées dans une boite de message ? Mais qu'afficher ? un n° de dossier ? la date de la demande ? ou autre
Celles ayant la colonne D complétée étant exclues comme réalisées ?

Le plus simple pour te guider dans la macro est d'avoir un exemple allégé et anonymé de ton fichier. Tu le postes sur cjoint.com et tu reviens ici indiquer le lien fourni

Dans l'attente

Cdlmnt
1
Bonjour,
Je ne peux malheureusement pas accéder au site cjoint.com mais effectivement il faudrait qu'à l'ouverture du classement, un message affichant le nom du client (en colonne E par ex) ainsi que la ligne concernée apparaisse.
Pouvez vous également détailler la recherchev s'il vous plait ?
Encore désolé de ne pouvoir joindre un fichier et merci du temps que vous m'accordez.
Cordialement,
0
Re bonjour,
Après plusieurs essais, j'ai toujours le même problème concernant ma recherchev à savoir que les lignes de la table matrice se décale lorsque je glisse ma formule sur plusieurs ligne dans la feuille 1, ce qui fausse totalement les délais écris en feuille 2. Même en saisissant à la main plusieurs cellules pour en sélectionner plusieurs afin qu'excel comprenne que seul la ligne de la valeur recherchée varie je n'obtiens toujours pas le résultat souhaité.
J'en profite pour rajouter un oubli dans la réponse précédente : effectivement lorsque la colonne D est remplie, on considère la demande résolue et elle n'a plus besoin d'apparaitre dans la message box.
Merci encore pour tout
0
via55 Messages postés 14473 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 13 septembre 2024 2 728
5 sept. 2014 à 16:39
Bonjour,

1) La formule de recherchev doit contenir une référence relative (sans$) pour la valeur à rechercher et une référence absolue pour la matrice de recherche (avec $) du style :
= RECHERCHEV(B2;Feuil2!$A$2:$B$10;2;0)
2)" Un message à l'ouverture du classeur indiquant le(s) nom(s) clients(s) concerné(s)", Ok mais où soit être récupéré le nom client ?
En fait si c'est pour visualiser les lignes arrivant à date une macro n'est peut être pas nécessaire, une mise en forme conditionnelle mettant en couleur les lignes sans date de réalisation et dont la fin du délai est dans les 2 jours peut être suffisante; dans ce cas selectionner toute la plage concernée dans les colonnes de A à D, Mise en forme condittionnelle Nouvelle régle Appliquer formule et entrer la formule suivante :
=ET($D2="";($A2+$C2)-AUJOURDHUI()<=2;($A2+$C2)-AUJOURDHUI()>=0)
si la 1ere cellule de la plage est la cellule A2; sinon adapter les références 2 avec un autre n° de ligne - bien respecter les $ aux bons endroits pour que la MFC fonctionne correctement sur la ligne

Cdlmnt
0
Bonjour,
Tout d'abord je vous remercie encore du temps que vous passez à m'aider ! Toutefois, après avoir essayé votre formule de MFC, cela ne convient pas tout à fait à ce que je souhaite. En effet, toute la ligne se colore en rouge or j'ai déjà des codes couleurs sur d'autres colonnes et cela fausse et mélange un peu les couleurs.
J'ai voulu simplifier l'aspect de mon tableau pour vous le "présenter" mais peut être que cela vous aiderait plus si je vous le détaillai mieux :
Col. A = date de la prise de la demande
Col. C = Client
Col. D = N°Client
Col. G = Demande
Col. K = Etat
Col. L = Délai
Col. N = Date de réalisation
Cette liste présente les colonnes qui apparaissent dans les formules/macros, les autres étant des renseignements qui n'importe pas dans la gestion du délai à proprement parler.
Je souhaiterai donc qu'il y ait une fenetre qui s'ouvre en précisant le nom du client (C) et son n° (D) si le délai (L) arrive à échéance (2js après aujourd'hui). Et si possible, une fois la colonne état (K) remplie sur : "cloturée" la ligne disparait de la fenetre d'alerte.
J'espère avoir été plus précis et je vous remercie une fois de plus de votre aide très appréciée !
Bien à vous,
Renaud
0
via55 Messages postés 14473 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 13 septembre 2024 2 728
8 sept. 2014 à 19:23
Bonjour

Essaie alors cette macro à mettre dans This Worbook de l'éditeur VBA puis fermer et rouvrir le classeur

Private Sub Workbook_Open()
alert = ""
depass = ""
Dim DernLigne As Long
DernLigne = Sheets(1).Range("A" & Rows.Count).End(xlUp).Row ' derniere ligne non vide
For n = 2 To DernLigne
real = CDate(Sheets(1).Range("A" & n) + Sheets(1).Range("L" & n)) ' date réalisation prévue
del = real - Date
If Sheets(1).Range("K" & n) <> "cloturée" Then
If del >= 0 And del < 3 Then alert = alert & Sheets(1).Range("C" & n) & " n° " & Sheets(1).Range("D" & n) & " " & real & Chr(10)
ElseIf del < 0 Then depass = depass & Sheets(1).Range("C" & n) & " n° " & Sheets(1).Range("D" & n) & " " & real & Chr(10)
End If
Next
MsgBox ("A ECHEANCE LE :" & Chr(10) & alert & Chr(10) & Chr(10) & "DELAI DEPASSE :" & Chr(10) & depass)
End Sub

Sheets(1) fait référence à la 1ere feuille du classeur quelque soit son nom, à modifier si nécessaire

A chaque ouverture du classeur la macro affiche la fenêtre d'alerte

Cdlmnt
1
Bonjour,
Merci pour votre réponse.
J'ai entré la macro que vous m'avez soumise hier soir. J'ai également renseigné quelques lignes pour avoir des données à afficher mais à l'ouverture du fichier j'ai une fenêtre " Erreur d'exécution type "13" " : incompatibilité de type.
Lorsque je clique sur débogage, la ligne : "real = CDate(Sheets(1).Range("A" & n) + Sheets(1).Range("L" & n)) ' date réalisation prévue" est surlignée en jaune.
Merci de votre aide.
Cordialement,
Renaud
0
via55 Messages postés 14473 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 13 septembre 2024 2 728
9 sept. 2014 à 15:51
Là encore ça marche chez moi et sans ton fichier pas moyen de savoir où est le bug
la variable del est le résultat de la différence entre la date de realisation (calculée) et la date du jour et donne donc un nombre négatif si le délai est dépassé d'où la ligne ElseIf del < 0 Then depass = depass & Sheets(1).Range("C" & n) & " n° " &
mais avant on a exclu les lignes avec la mention cloturée :
If Sheets(1).Range("K" & n) <> "cloturée" Then
Seules sont affichées les lignes non cloturées avec délai dépassé
1
Ren033 Messages postés 5 Date d'inscription vendredi 5 septembre 2014 Statut Membre Dernière intervention 10 septembre 2014
9 sept. 2014 à 16:01
J'ai réussi a afficher les délais dépassés en mettant If a la place de ElseIf.
Pour être plus perfectionniste, on me demande maintenant d'ajouter un bouton sur la feuille qui permet de remontrer le message sans avoir a rouvrir/fermer le fichier... Que d'exigences !
Merci encore pour tout !
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
via55 Messages postés 14473 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 13 septembre 2024 2 728
Modifié par via55 le 9/09/2014 à 16:37
Pour que la macro soit accessible nimporte où

1) l'enlever de workbook Open (mais laisser le titre sub WB OPen et le end sub)et la mettre dans un module en lui donnant un nom par ex Sub alerte

2) dans this woorkbok entre sub WB OPen et end sub mettre simplement le nom de la macro : alerte

3) Crée le bouton controla ACtive X sur la feuille pusi clic droit sur Bouton visualiser le code et là aussi simplement mettre le nom de la macro à executer : alerte


Cdlmnt

"L'imagination est plus importante que le savoir." A. Einstein
1
Ren033 Messages postés 5 Date d'inscription vendredi 5 septembre 2014 Statut Membre Dernière intervention 10 septembre 2014
10 sept. 2014 à 09:03
Bonjour,
C'est parfait merci beaucoup !
Je vous remercie vraiment du temps que vous m'avez consacré !
A bientôt
Cordialement,
Renaud
0
via55 Messages postés 14473 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 13 septembre 2024 2 728
9 sept. 2014 à 12:13
Essaie de trouver un autre site de partage de fichier comme transfertnow auquel tu puisses accéder car sans voir ton fichier je ne peux pas deviner ce qui cloche, la macro marche chez moi

Cdlmnt
0
Ren033 Messages postés 5 Date d'inscription vendredi 5 septembre 2014 Statut Membre Dernière intervention 10 septembre 2014
9 sept. 2014 à 14:04
J'ai trouvé le problème, j'avais une ligne figée, ce qui fait que dans la macro on avait n=2 alors que sur le fichier, n=3 ! Petite erreur d'inattention de ma part !
Tout marche très bien, c'est exactement ce que je souhaitais ! Encore mille merci pour votre aide plus que précieuse !
A bientôt.
Très cordialement,
Renaud
0
Ren033 Messages postés 5 Date d'inscription vendredi 5 septembre 2014 Statut Membre Dernière intervention 10 septembre 2014 > Ren033 Messages postés 5 Date d'inscription vendredi 5 septembre 2014 Statut Membre Dernière intervention 10 septembre 2014
9 sept. 2014 à 14:16
Désolé pour le double post. J'ai peut être parlé un peu vite. La message box n'affiche pas les lignes dont les délais sont dépassés...
0
Ren033 Messages postés 5 Date d'inscription vendredi 5 septembre 2014 Statut Membre Dernière intervention 10 septembre 2014
9 sept. 2014 à 14:04
J'ai trouvé le problème, j'avais une ligne figée, ce qui fait que dans la macro on avait n=2 alors que sur le fichier, n=3 ! Petite erreur d'inattention de ma part !
Tout marche très bien, c'est exactement ce que je souhaitais ! Encore mille merci pour votre aide plus que précieuse !
A bientôt.
Très cordialement,
Renaud
0