[VB6] Simplification et optimisation code

Simplification et optimisation code [VB6] - Divers - Programmation

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 : http://img15.hostingpics.net/thumbs/mini_823925siaet.jpg
 
 
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 :

Code :
  1. For aa = 1 To a
  2.         AjoutLigneSIAET = ""
  3.         IsVehicule = 0
  4.         If Controls("AjoutAgent" & aa).Value = 1 Then
  5.             AjoutLigneSIAET = Text1.Text & ";" & Controls("AjoutAgent" & aa).Caption
  6.             Controls("AjoutAgent" & aa).Value = 0
  7.             For tt = 1 To t
  8.                 If Controls("AjoutTache" & tt).Value = True Then
  9.                 AjoutLigneSIAET = AjoutLigneSIAET & ";" & Controls("AjoutTache" & tt).Caption
  10.                 End If
  11.             Next tt
  12.                 For ll = 1 To l
  13.                     If Controls("AjoutLocalis" & ll).Value = 1 Then
  14.                         AjoutLigneSIAET = AjoutLigneSIAET & ";" & Controls("AjoutLocalis" & l).Caption& & ";" & Controls("AjoutQteLocalis" & ll).Text
  15.                     End If
  16.                 Next ll
  17.                     For vv = 1 To v
  18.                         If Controls("AjoutVehicule" & vv).Value = 1 Then
  19.                            IsVehicule = 1
  20.                             AjoutLigneSIAET = AjoutLigneSIAET & ";" & Controls("AjoutVehicule" & vv).Caption & ";" & Controls("AjoutKMVehicule" & vv).Text
  21.                             Controls("AjoutVehicule" & vv).Value = 0
  22.                         End If
  23.                      Next vv
  24.                         If IsVehicule = 0 Then
  25.                             AjoutLigneSIAET = AjoutLigneSIAET & ";" & ";"
  26.                         End If
  27.         End If
  28.         If AjoutLigneSIAET <> "" Then
  29.         MsgBox AjoutLigneSIAET
  30.         End If
  31.         Next aa


 
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 :
  1. Fichier_Agents = App.Path & "Liste_Agents.csv"
  2. Open Fichier_Agents For Input As #1
  3. a = 0
  4. Dim LigneAgent As String
  5. Do While Not EOF(1)
  6. a = a + 1
  7. Line Input #1, LigneAgent
  8. Dim Nom As String
  9. Nom = Split(LigneAgent, ";" )(0)
  10. Set AjoutAgent = Controls.Add("vb.checkbox", "AjoutAgent" & a, Frame_agents)
  11. 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
 :pt1cable:  
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  
  :pt1cable:  :pt1cable:  :pt1cable:  
 
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 !

Reply

Marsh Posté le 12-08-2013 à 09:46:24   

Reply

Sujets relatifs:

Leave a Replay

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