Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Transfert données Excel vers fichier texte

3 réponses
Avatar
Pat
Bonjour,
J'ai crée une petite appli. afin de récupérer des données d'un fichier Excel
d'environ 800 enreg. de 5 champs et les écrire dans un fichier texte.
Malgré un PC Pentium 4 dual core 1GO de mémoire je suis surpris de la
lenteur du process , 5 Minutes. Sous Excel l'ouverture est immédiate.
Je fais des essais sous VB2005 depuis quelques semaines merci de m'indiquer
sur la copie du code ci dessous si je suis à coté de la plaque ??? ?
Merci de mindiquer comment améliorer
Salutations.

' Déclaration
Dim ExcelApp As Object

Dim Excelcla As Object

Dim ExcelFeuille As Object

Dim ExcelPlage As Object

' CdeBouton_Click

Dim VarX As String

Dim VarLine As String

Dim i As Integer = 2

FileOpen(1, "c:\MonFichier.txt", OpenMode.Output)

ExcelApp = CreateObject("Excel.Application")

Excelcla = ExcelApp.WorkBooks.open("c:\MonFichier.xls")

Try

VarX = (Excelcla.Worksheets("Feuil1").cells.Item(i, 1).value)

Do While VarX <> ""

VarX = (Excelcla.Worksheets("Feuil1").cells.Item(i, 1).value)

If VarX = "" Then

Exit Do

End If

VarLine = ""

VarX = (Excelcla.Worksheets("Feuil1").cells.Item(i, 1).value)

VarLine = VarX & ","

VarX = (Excelcla.Worksheets("Feuil1").cells.Item(i, 2).value)

VarLine = VarLine & VarX & ","

VarX = (Excelcla.Worksheets("Feuil1").cells.Item(i, 4).value)

VarLine = VarLine & VarX & ","

VarX = (Excelcla.Worksheets("Feuil1").cells.Item(i, 5).value)

VarLine = VarLine & VarX

Mémo.Text = Mémo.Text + VarLine & Chr(13) & Chr(10)

i = i + 1

Loop

Print(1, Mémo.Text)

FileClose(1)

Catch ex As Exception

MsgBox("Erreur Boucle")

End Try

ExcelApp.Quit()

3 réponses

Avatar
Gilles TOURREAU
Le Tue, 21 Aug 2007 22:47:46 +0200, Pat <patricevay <@hotmail.com>> a
écrit:

Bonjour,
J'ai crée une petite appli. afin de récupérer des données d'un fichier
Excel
d'environ 800 enreg. de 5 champs et les écrire dans un fichier texte.
Malgré un PC Pentium 4 dual core 1GO de mémoire je suis surpris de la
lenteur du process , 5 Minutes. Sous Excel l'ouverture est immédiate.
Je fais des essais sous VB2005 depuis quelques semaines merci de
m'indiquer
sur la copie du code ci dessous si je suis à coté de la plaque ??? ?
Merci de mindiquer comment améliorer
Salutations.

' Déclaration
Dim ExcelApp As Object

Dim Excelcla As Object

Dim ExcelFeuille As Object

Dim ExcelPlage As Object

' CdeBouton_Click

Dim VarX As String

Dim VarLine As String

Dim i As Integer = 2

FileOpen(1, "c:MonFichier.txt", OpenMode.Output)

ExcelApp = CreateObject("Excel.Application")

Excelcla = ExcelApp.WorkBooks.open("c:MonFichier.xls")

Try

VarX = (Excelcla.Worksheets("Feuil1").cells.Item(i, 1).value)

Do While VarX <> ""

VarX = (Excelcla.Worksheets("Feuil1").cells.Item(i, 1).value)

If VarX = "" Then

Exit Do

End If

VarLine = ""

VarX = (Excelcla.Worksheets("Feuil1").cells.Item(i, 1).value)

VarLine = VarX & ","

VarX = (Excelcla.Worksheets("Feuil1").cells.Item(i, 2).value)

VarLine = VarLine & VarX & ","

VarX = (Excelcla.Worksheets("Feuil1").cells.Item(i, 4).value)

VarLine = VarLine & VarX & ","

VarX = (Excelcla.Worksheets("Feuil1").cells.Item(i, 5).value)

VarLine = VarLine & VarX

Mémo.Text = Mémo.Text + VarLine & Chr(13) & Chr(10)

i = i + 1

Loop

Print(1, Mémo.Text)

FileClose(1)

Catch ex As Exception

MsgBox("Erreur Boucle")

End Try

ExcelApp.Quit()





Dans votre cas passez plustôt par OleDB :
http://www.connectionstrings.com/?carrier=excel

Cela vous permettra d'executer des requêtes SQL et manipule le fichier
plus rapidement qu'un pilotage d'Excel...

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr
Avatar
Pat
Bonjour,
Merci de la réponse, je vais étudier cette possibilité.
S'il existe un site équivalent en Français, je suis preneur.
Cordialement;

"Gilles TOURREAU" a écrit dans le message de news:

Le Tue, 21 Aug 2007 22:47:46 +0200, Pat <patricevay <@hotmail.com>> a
écrit:

Bonjour,
J'ai crée une petite appli. afin de récupérer des données d'un fichier
Excel
d'environ 800 enreg. de 5 champs et les écrire dans un fichier texte.
Malgré un PC Pentium 4 dual core 1GO de mémoire je suis surpris de la
lenteur du process , 5 Minutes. Sous Excel l'ouverture est immédiate.
Je fais des essais sous VB2005 depuis quelques semaines merci de
m'indiquer
sur la copie du code ci dessous si je suis à coté de la plaque ??? ?
Merci de mindiquer comment améliorer
Salutations.

' Déclaration
Dim ExcelApp As Object

Dim Excelcla As Object

Dim ExcelFeuille As Object

Dim ExcelPlage As Object

' CdeBouton_Click

Dim VarX As String

Dim VarLine As String

Dim i As Integer = 2

FileOpen(1, "c:MonFichier.txt", OpenMode.Output)

ExcelApp = CreateObject("Excel.Application")

Excelcla = ExcelApp.WorkBooks.open("c:MonFichier.xls")

Try

VarX = (Excelcla.Worksheets("Feuil1").cells.Item(i, 1).value)

Do While VarX <> ""

VarX = (Excelcla.Worksheets("Feuil1").cells.Item(i, 1).value)

If VarX = "" Then

Exit Do

End If

VarLine = ""

VarX = (Excelcla.Worksheets("Feuil1").cells.Item(i, 1).value)

VarLine = VarX & ","

VarX = (Excelcla.Worksheets("Feuil1").cells.Item(i, 2).value)

VarLine = VarLine & VarX & ","

VarX = (Excelcla.Worksheets("Feuil1").cells.Item(i, 4).value)

VarLine = VarLine & VarX & ","

VarX = (Excelcla.Worksheets("Feuil1").cells.Item(i, 5).value)

VarLine = VarLine & VarX

Mémo.Text = Mémo.Text + VarLine & Chr(13) & Chr(10)

i = i + 1

Loop

Print(1, Mémo.Text)

FileClose(1)

Catch ex As Exception

MsgBox("Erreur Boucle")

End Try

ExcelApp.Quit()





Dans votre cas passez plustôt par OleDB :
http://www.connectionstrings.com/?carrier=excel

Cela vous permettra d'executer des requêtes SQL et manipule le fichier
plus rapidement qu'un pilotage d'Excel...

Cordialement

--
Gilles TOURREAU


S.A.R.L. P.O.S
Le spécialiste en motoculture depuis + de 30 ans !
http://www.pos.fr


Avatar
Patrick BREIL
Bonjour,

J'ai rencontré le même problème.
Il existe une solution,

Il faut conserver la partie de code pour ouvrir le fichier XLS
Il faut ensuite sauver chaque onglet (si il y en plusieurs) au format CSV
(pour la syntaxe effecutuer la manip sous Excel en enregistrant la macro)

le fichier CSV peut être lu en une seule de façon trés rapide en utilisant
Dim FichierCSV() as string = file.ReadAllLines(NomduFichier CSV)
Une boucle for Each permet de redécomposer les chaines

For each ligne as string in FichierCSV
Dim DecompLigne() as string = split(ligne, ";")
' les valeurs sont alors contenus dans le tableau DecompLigne(xx) ou xx
indique le nombre d'élément (à partir de 0)
Next

Pour info, en utilisant la lecture des cellules depuis Excel mon appli
tournait pendant 1h30 en CSV moins de 2 minutes


" Pat" <patricevay(Enlever)@hotmail.com> a écrit dans le message de
news:uRV$
Bonjour,
J'ai crée une petite appli. afin de récupérer des données d'un fichier


Excel
d'environ 800 enreg. de 5 champs et les écrire dans un fichier texte.
Malgré un PC Pentium 4 dual core 1GO de mémoire je suis surpris de la
lenteur du process , 5 Minutes. Sous Excel l'ouverture est immédiate.
Je fais des essais sous VB2005 depuis quelques semaines merci de


m'indiquer
sur la copie du code ci dessous si je suis à coté de la plaque ??? ?
Merci de mindiquer comment améliorer
Salutations.

' Déclaration
Dim ExcelApp As Object

Dim Excelcla As Object

Dim ExcelFeuille As Object

Dim ExcelPlage As Object

' CdeBouton_Click

Dim VarX As String

Dim VarLine As String

Dim i As Integer = 2

FileOpen(1, "c:MonFichier.txt", OpenMode.Output)

ExcelApp = CreateObject("Excel.Application")

Excelcla = ExcelApp.WorkBooks.open("c:MonFichier.xls")

Try

VarX = (Excelcla.Worksheets("Feuil1").cells.Item(i, 1).value)

Do While VarX <> ""

VarX = (Excelcla.Worksheets("Feuil1").cells.Item(i, 1).value)

If VarX = "" Then

Exit Do

End If

VarLine = ""

VarX = (Excelcla.Worksheets("Feuil1").cells.Item(i, 1).value)

VarLine = VarX & ","

VarX = (Excelcla.Worksheets("Feuil1").cells.Item(i, 2).value)

VarLine = VarLine & VarX & ","

VarX = (Excelcla.Worksheets("Feuil1").cells.Item(i, 4).value)

VarLine = VarLine & VarX & ","

VarX = (Excelcla.Worksheets("Feuil1").cells.Item(i, 5).value)

VarLine = VarLine & VarX

Mémo.Text = Mémo.Text + VarLine & Chr(13) & Chr(10)

i = i + 1

Loop

Print(1, Mémo.Text)

FileClose(1)

Catch ex As Exception

MsgBox("Erreur Boucle")

End Try

ExcelApp.Quit()