Je suis perdu

cs_Nulll Messages postés 27 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 20 février 2008 - 25 août 2005 à 23:02
cs_Nulll Messages postés 27 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 20 février 2008 - 26 août 2005 à 15:45
Je sais tout juste programmer pour développer 2, 3 trucs simples en VB6. Récemment j'ai développé une application qui fonctionne mais que je trouve trop lourde et trop fragile pour aller plus loin. J'utilise beaucoup de tableaux, de variables et de boucles. Vous allez comprendre.

Mon but est d'aller chercher les tâches non complétées et à venir dans Outlook pour les présenter sous une forme graphique. C'est assez documenté pour aller les chercher mais 1ere frustration, sauf erreur, on ne peut considérer MAPI comme une base de donnée avec les avantages qui vont avec(je ne comprends pas pourquoi). De plus je ne veux pas joindre à mon programme de feuille mdb ou xls. Dans une première version j'ai rempli un tableau et dans un autre j'ai cherché à le faire avec mhsflexgrid qui n'a rien apporté de plus simple. Recemment quelqu'un m'a proposé d'avoir une approche objet et collection d'objets. Après avoir lu dessus je suis convaincu que s'est la bonne approche mais je suis aussi complètement mêlé par tout ce que j'ai lu. Si quelqu'un pouvait m'aider à démarrer dans cette approche je lui serais éternellement reconnaissant.

Voilà les données de base (ça pas de pb je maitrise)
De chaque tâche récupérée dans un tableau servant d'interface avec Outlook il y a 3 données fondamentales que je récupère:
* La date d'échéance dont j'extrais un index Jour en soustrayant la date d'aujourd'hui (par DateDiff(Now...))
* La priorité (de 1 à 6) qui classe les tâches de la journée en fonction de l'urgence.
* La durée évaluée de la tâche.

Là où ca se complique (C'est là où je me retouve avec beaucoup de boucles et de tableaux):
* J'ai besoin d'isoler chaque niveau de priorité trouvé d'un jour pour:
+ en faire la somme des durée
+ Ensuite diviser chaque durée par cette somme

*J'ai besoin après d'ordonner (toujours pour un jour) les priorités. Exemple: Pour l'index de jour 2 on a comme priorités: 2, 6, 1, 4, 2. Il faut que j'ai: 1, 2, 4 , 6 (pas besoin d'appeler une deuxième fois le 2). Avec celà je veux entrer une propriété à la tache qui sera égale à la somme des durées du niveau inférieur de propriété. Pour être plus clair si on a les couples priorité / durée suivants: 2/4, 6/5, 1/3, 4/1, 2/3 on obtiendrait: 1/0, 2/3, 4/(4+3=7), , 6/1.

Évidemment il faut recommencer cet exercice pour chaque jour.

Au final, pour mon exploitation graphique, je devrais être capable en lancant mon application d'extraire chaque tâche contenant toutes les informations dont on vient de parler et aussi appeler les autres informations attachées à la tache Outlook (sujet, Objet, date de début etc)

Cela vous parait-il assez clair et être un défi intéressant??? Moi, en parfait béotien, je m'en fait une montagne là où n'y verez qu'une routine bien connue.

Question subsidiaire: Serait-il possible d'intégrer dans ma tache (son objet qui le représente) un bouton commande qui apparaitrait pour chaque tâche créée par New???

5 réponses

Zlub Messages postés 809 Date d'inscription mercredi 11 octobre 2000 Statut Membre Dernière intervention 29 septembre 2010 8
26 août 2005 à 01:32
Salut,

En ayant lu
rapidement, j'ai cru comprendre que le probleme est de trier les
données ... Je te conseil de définir un Type par exemple,




Public Type donnéeFondamentales

echéance As Date

prioritée As Integer

...

End Type




Ensuite tu fais un tableau genre




Dim tab() As donnéeFondamentales




que tu remplies avec tes données ... puis hop un coup de trie et c'est reglé... genre tri bulle (mais y'a mieux)




Public sub trierDonnees(T() as donnéeFondamentales)

Dim i As Integer

Dim j As Integer

Dim N As Integer



Dim tmp As donnéeFondamentales



N = Ubound(T)





For i = 0 To N - 1

For j = 0 To N - i - 1

' Trier par prioritée

If T(j).prioritée > T(j + 1).prioritée Then Temp T(j): T(j) T(j + 1): T(j + 1) = Temp

Next j

Next i

End Sub




Dans la procédure ci-dessus reste plus qu'à ajouter le critiere de date
pour trier par jour, puis par prioritée ... Sinon, tu fais une
recherches sur le site, il doit y avoir des sources pour trier de
tableau d'objets selon deux critéres...



J'eperes avoir répondu à ta question,


++

Zlub
0
Zlub Messages postés 809 Date d'inscription mercredi 11 octobre 2000 Statut Membre Dernière intervention 29 septembre 2010 8
26 août 2005 à 01:33
Salut,

oui, une précision, j'ai supposé que t'es en VB6 ...


++

Zlub
0
cs_Nulll Messages postés 27 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 20 février 2008
26 août 2005 à 15:34
Merci pour ton aide Zlub mais tu m'amènes d'une façon élégante au pied de là où cela se complique parce que je fais plein de boucles et de conditions récursives qui ne demandent pas mieux d'être remplacées par quelque chose de plus simple.
Puisque on peut joindre des images, voila un Grafcet dans lequel ton code la partie 3 et 4, puis un exemple en 3 tableaux et où là ton code m'amène au tableau du milieu. C'est un résultat que j'ai obtenu avec l'objet mhsflexgrid.
Si ces 2 pages peuvent t'aider à relever ce défi...
0
cs_Nulll Messages postés 27 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 20 février 2008
26 août 2005 à 15:35
Merci pour ton aide Zlub mais tu m'amènes d'une façon élégante au pied de là où cela se complique parce que je fais plein de boucles et de conditions récursives qui ne demandent pas mieux d'être remplacées par quelque chose de plus simple.
Puisque on peut joindre des images, voila un Grafcet dans lequel ton code la partie 3 et 4, puis un exemple en 3 tableaux et où là ton code m'amène au tableau du milieu. C'est un résultat que j'ai obtenu avec l'objet mhsflexgrid.
Si ces 2 pages peuvent t'aider à relever ce défi...
0

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

Posez votre question
cs_Nulll Messages postés 27 Date d'inscription jeudi 25 août 2005 Statut Membre Dernière intervention 20 février 2008
26 août 2005 à 15:45
Si si, les fichiers sont biens là, il faut les chercher. Je ne vois pas d'icone qui me permettrait de les mettre non pas en image mais juste en fichier joint. Désolé pour le trouble.
0
Rejoignez-nous