Bonjour,
Je viens vers vous car j'ai un problème avec un traitement qui est extrêmement long.
Je demande à l'utilisateur de renseigner des champs qui seront ensuite utilisés pour changer des champs d'un fichier ReportMan. Puis d'imprimer le dit fichier.
Le fichier est crée avec des valeurs par défauts, l'application le copie et lui donne les valeurs saisies par l'utilisateur.
Voici la procédure qui me permet de faire la modification de la chaine correspondante :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25 Sub ReplaceString(ByVal strFichier, ByVal strOldString, ByVal strNewString) On Error Resume Next Dim strTemp = Application.StartupPath & "\File.tmp" Dim nIn = FreeFile() FileOpen(nIn, strFichier, OpenMode.Input) Dim nOut = FreeFile() FileOpen(nOut, strTemp, OpenMode.Output) Do While Not EOF(nIn) Dim strLigne = LineInput(nIn) strLigne = Replace(strLigne, strOldString, strNewString) PrintLine(nOut, strLigne) Loop FileClose(nOut) FileClose(nIn) FileCopy(strTemp, strFichier) Kill(strTemp) End Sub
elle est appelé comme ceci :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7 ReplaceString(Application.StartupPath & "\Output\" & nomfic & ".rep", "<%item_01%>", MaskedTextBox1.Text) ReplaceString(Application.StartupPath & "\Output\" & nomfic & ".rep", "<%prix_01%>", MaskedTextBox2.Text) If MaskedTextBox3.Text <> "" Then ReplaceString(Application.StartupPath & "\Output\" & nomfic & ".rep", "<%cent_01%>", "." & MaskedTextBox3.Text & "") Else ReplaceString(Application.StartupPath & "\Output\" & nomfic & ".rep", "<%cent_01%>", "") End If
Ceci est le traitement sur 1 produit, il le fait en tout sur 16 produits.
Dans cet exemple <%item_01%> est le champ par défaut du fichier qui doit être remplacer par la valeur du MaskedTextBox1.Text.
Le temps de traitement pour modifier les 16 produits (nom, euro, centime) correspond à 48 appelle de la procédure (48 champs à changer).
Cette étape prend environ 13 minutes. C'est beaucoup trop pour l'utilisateur qui veux seulement imprimer son fichier.
Avez vous une idée pour réduire le temps d'attente ?
Merci
Partager