Gestion de délai
Renaud
-
Ren033 Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
Ren033 Messages postés 5 Date d'inscription Statut Membre Dernière intervention -
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
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:
- Gestion de délai
- Logiciel gestion locative gratuit excel - Télécharger - Comptabilité & Facturation
- Gestion de fichiers - Télécharger - Gestion de fichiers
- Logiciel gestion photo gratuit - Guide
- Gestion autorisation application android - Guide
- Logiciel gestion cabinet médical gratuit - Télécharger - Organisation
6 réponses
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
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
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
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
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,
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,
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
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
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
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
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
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
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
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
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
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
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é
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é
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
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) 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
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
Cdlmnt
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
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
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
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
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