recaler Date selon conditions [VBA]

recaler Date selon conditions [VBA] - VB/VBA/VBS - Programmation

Marsh Posté le 23-12-2008 à 15:57:58    

bonjour à tous !
 
dans le cadre de mon boulot je voudrais faire une petite macro(VBA) qui puisse me facilité
la tâche au quotidien! mais le probleme c'est que je ne suis pas programmeur :(
je viens a vous car j'ai un petit probleme d'algo qui m'empéche d'avancer dans mon boulot
 
 
je travaille sur un sorte de nomenclature dont j'ai entré les données dans un tableau
 
 
Option Explicit
 
Type Tableau
    niveau As Integer
    dateD As Date
    dateF As Date
End Type
 
je pense pas que le plus dure soit de le faire me de l'éxpliquer
 
je vais prendre un exemple limité  
imaginons dans mon tableau:
niveau------------dateD------------dateF
0...............10/08/08........20/08/08
..1.............03/07/08........09/08/08
....2...........26/06/08........02/07/08
..1.............23/06/08........10/08/08
....2...........22/06/08........26/06/08
......3.........14/06/08........30/06/08
........4.......12/06/08........13/06/08  
 
imaginons que mon niveau 0 soit une tour d'ordinateur
pour que mon niveau 0 soit construit entierement il faut que les  
niveau inférieur soit construit avant!
par exemple :mon deuxieme niveau 1 est la carte mére pour quelle soit fabriquée
il me faut les composant 2,3,4 soit fabriqué avant
 
Pour que mon niveau 3 puisse étre construit mon niveau inférieur ici 4 devras étre finis
la date de début du niveau 3 soit :
si la date de fin du niveau 4 < date de debut niveau 3 : c'est ok  
parcontre dans le cas de mon niveau 1 en rouge :
ma date de debut de fabriquation débute le 23/06/08 alors que le niveau 2 inférieur  
ne se termine que le 26/06/08
alors ma date de fabrication du niveau 1 devras étre recalé au 26/06/08 et sa date de fin serra égale au 26/06/08 + (12/08/08- 23/06/08)
ce qui aurras pour conséquence de modifier la date de début de construction de mon niveau 0
 
en gros mon tableau doit devenir
 
niveau------------dateD------------dateF
0...............15/08/08........25/08/08 'mon niveau 0 peut commancer la fabriquation lorsque que mon niveau 1 est fini c-a-d le 15/08/08 au lieu du 10/08/08
..1.............03/07/08........09/08/08
....2...........26/06/08........02/07/08
..1.............26/06/08........15/08/08 '23/06/08 de vient 26/06/08 et 10/08/08 devient 15/08/08  
....2...........22/06/08........26/06/08 'mon délais de fabrication reste le mm mais commence plus tard
......3.........14/06/08........30/06/08
........4.......12/06/08........13/06/08  
 
en gros a cause du retard pris dans la fabrication de ma carte mére mon pc serra fabriqué 5 jours plutard de ma date de prévision
 
 
j'ai commencé avec Dim datereal As Date
 
For T = T - 1 To 1 Step -1
 
datereal = tab1(T).dateF
 
If tab1(T).niveau < tab1(J + 1).niveau Then
 
If tab1(T).dateF > tab1(T + 1).dateD Then
datereal = tab1(T).dateF + (tab1(T + 1).dateF - tab1(T + 1).dateD)
 
End If: End If
 
Next T
 
et la je suis perdus dans mes boucle et mes controle si mon niveau et bien inférieure
si quelqu'un pouvait m'aider ! mm si mes explications sont plus ou moin bien réussis je peus  
trouver des exemples plus clair
je suis en vancance que le 24 et j'aurrais bien voulus faire tourné ma macro avant xD

Reply

Marsh Posté le 23-12-2008 à 15:57:58   

Reply

Marsh Posté le 23-12-2008 à 23:52:47    

essaye de poser l'algorithme en français parce que ton explication est véritablement pas très claire, grosso modo on voit que tu veux reporter les retard sur les taches suivante, un genre de gestion de diagramme de gant mais bon, je comprend pas trop comment tu veux gérer tes retards
 
et donne aussi la finalité, pourquoi tu veux faire ça, si c'est pour trouver ta date de fin en reportant les retards, il suffit d'ajouter ton retard a la date de fin ... enfin bref je trouve pas ça très clair


Message édité par satirik le 23-12-2008 à 23:52:59
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed