Simplification et optimisation code [VB6] - Divers - Programmation
MarshPosté le 12-08-2013 à 09:46:24
Bonjour à tous !
J'avance petit à petit dans le développement (en VB6) de mon petit programme de suivit des activités des équipes pour une grosse collectivité locale. [Voici une petite capture d'écran :
Quand l'utilisateur clique sur le bouton "valider et enregistrer", le programme doit "compiler" les renseignements cochés et saisis par l'utilisateur pour les inscrire dans un fichier csv (pour l'instant uniquement inscrit dans un msgbox). Voici une partie du code que j'ai essayé de réaliser à cet effet :
Petites explications sur les valeurs des variables : a est le nombre total d'agents (comme défini dans l'exemple ci-après), t est le nombre total de tâches l ________________ de localisation v________________ de véhicules
Les checkbox et optionbutton sont créés de façon "dynamique" en fonction du contenu de fichiers csv. Par exemple :
Code :
Fichier_Agents = App.Path & "Liste_Agents.csv"
Open Fichier_Agents For Input As #1
a = 0
Dim LigneAgent As String
Do While Not EOF(1)
a = a + 1
Line Input #1, LigneAgent
Dim Nom As String
Nom = Split(LigneAgent, ";" )(0)
Set AjoutAgent = Controls.Add("vb.checkbox", "AjoutAgent" & a, Frame_agents)
Controls("AjoutAgent" & a).Caption = Nom
A des fins de simplifications, je n'ai pas copié ici les définitions des caractéristiques width, , left, visible etc ...
Comme vous l'aurez compris, j'aimerai optimiser et simplifier le 1er code : celui qui lit l'état des objets et qui "construit" la variable AjoutLigneSIAET Comme c'est bien le cas actuellement, cette variable doit être construite comme suit : date ; nom de l'agent ; tache effectuée ; localisation ; durée ; véhicule ; kilométres J'ai prévu d'ajouter ensuite les matériaux et leurs quantité
Ca serait simple s'il n'y avait qu'un élément à chaque fois ! Mais là où le code se complexifie, c'est dans l'exemple bidon suivant : Messieurs Durand et Martin ont fait de l'enrobé dans la rue de l'église pendant 2h, place de la mairie 1h et place des orangers 3h. Ils ont utilisés le véhicule 721 ATL 51 pour 8km et ils ont utilisé 3tonnes de mélange béton
Pour que les données qui seront enregistrées dans le fichier csv soit exploitables, il conviendrait de répercuter les km des véhicules et la quantité des matériaux avec une fameuse réglé de 3 : dans l'exemple ça donnerait : 06/08/2013;DURAND Michel;enrobé;rue de l'église;2;721atl51;((8/2)/(2+1+3))*2=1.33;mélange béton;((3/2)/(2+1+3))*2=0.5 06/08/2013;MARTIN Jean;enrobé;rue de l'église;2;721atl51;((8/2)/(2+1+3))*2=1.33;mélange béton;((3/2)/(2+1+3))*2=0.5 Avec cette méthode, chaque agent aura une saisie identique.
En pratique il pourrait également être possible de grouper les km de véhicule utilisés sur une localisation sur un seul agent. De même que pour les matériaux et leur quantité. Dans l'exemple ça donnerait : 06/08/2013;DURAND Michel;enrobé;rue de l'église;2;721atl51;(8/(2+1+3))*2=2.67;mélange béton;(3/(2+1+3))*2=1 06/08/2013;MARTIN Jean;enrobé;rue de l'église;2;;;; Le choix de l'une ou l'autre méthode sera en fonction de la faisabilité du code ! lol
Par contre là où ça se complexifie vraiment, c'est si pour une même tache, 2 agents ont utilisés 5 véhicules sur 3 localisations et ont consommé 4 matériaux différents ! J'ose même pas imaginer un code pour "compiler" un tel bordel ! mdr
Est-ce que quelqu'un qui aurait un bon sens logique et une certaine passion pour les casses-tete aurait une idée de code plus simple et plus optimisé que celui que j'ai créé ?
Marsh Posté le 12-08-2013 à 09:46:24
Bonjour à tous !
J'avance petit à petit dans le développement (en VB6) de mon petit programme de suivit des activités des équipes pour une grosse collectivité locale.
[Voici une petite capture d'écran :
Quand l'utilisateur clique sur le bouton "valider et enregistrer", le programme doit "compiler" les renseignements cochés et saisis par l'utilisateur pour les inscrire dans un fichier csv (pour l'instant uniquement inscrit dans un msgbox).
Voici une partie du code que j'ai essayé de réaliser à cet effet :
Petites explications sur les valeurs des variables :
a est le nombre total d'agents (comme défini dans l'exemple ci-après),
t est le nombre total de tâches
l ________________ de localisation
v________________ de véhicules
Les checkbox et optionbutton sont créés de façon "dynamique" en fonction du contenu de fichiers csv.
Par exemple :
A des fins de simplifications, je n'ai pas copié ici les définitions des caractéristiques width, , left, visible etc ...
Comme vous l'aurez compris, j'aimerai optimiser et simplifier le 1er code : celui qui lit l'état des objets et qui "construit" la variable AjoutLigneSIAET
Comme c'est bien le cas actuellement, cette variable doit être construite comme suit :
date ; nom de l'agent ; tache effectuée ; localisation ; durée ; véhicule ; kilométres
J'ai prévu d'ajouter ensuite les matériaux et leurs quantité
Ca serait simple s'il n'y avait qu'un élément à chaque fois !
Mais là où le code se complexifie, c'est dans l'exemple bidon suivant :
Messieurs Durand et Martin ont fait de l'enrobé dans la rue de l'église pendant 2h, place de la mairie 1h et place des orangers 3h. Ils ont utilisés le véhicule 721 ATL 51 pour 8km et ils ont utilisé 3tonnes de mélange béton
Pour que les données qui seront enregistrées dans le fichier csv soit exploitables, il conviendrait de répercuter les km des véhicules et la quantité des matériaux avec une fameuse réglé de 3 : dans l'exemple ça donnerait :
06/08/2013;DURAND Michel;enrobé;rue de l'église;2;721atl51;((8/2)/(2+1+3))*2=1.33;mélange béton;((3/2)/(2+1+3))*2=0.5
06/08/2013;MARTIN Jean;enrobé;rue de l'église;2;721atl51;((8/2)/(2+1+3))*2=1.33;mélange béton;((3/2)/(2+1+3))*2=0.5
Avec cette méthode, chaque agent aura une saisie identique.
En pratique il pourrait également être possible de grouper les km de véhicule utilisés sur une localisation sur un seul agent. De même que pour les matériaux et leur quantité. Dans l'exemple ça donnerait :
06/08/2013;DURAND Michel;enrobé;rue de l'église;2;721atl51;(8/(2+1+3))*2=2.67;mélange béton;(3/(2+1+3))*2=1
06/08/2013;MARTIN Jean;enrobé;rue de l'église;2;;;;
Le choix de l'une ou l'autre méthode sera en fonction de la faisabilité du code ! lol
Par contre là où ça se complexifie vraiment, c'est si pour une même tache, 2 agents ont utilisés 5 véhicules sur 3 localisations et ont consommé 4 matériaux différents ! J'ose même pas imaginer un code pour "compiler" un tel bordel ! mdr
Est-ce que quelqu'un qui aurait un bon sens logique et une certaine passion pour les casses-tete aurait une idée de code plus simple et plus optimisé que celui que j'ai créé ?
Merci beaucoup par avance pour votre aide !