stocky69
Messages postés3Date d'inscriptionmardi 4 octobre 2005StatutMembreDernière intervention28 octobre 2005
-
11 oct. 2005 à 11:27
cpoulain
Messages postés2Date d'inscriptionjeudi 27 octobre 2005StatutMembreDernière intervention 7 novembre 2005
-
7 nov. 2005 à 11:03
bonjour a toutes et a tous,
je dois importer des valeurs contenues dans un fichier text(en fait c est un *.ASC mais c tout comme) sous excel.
J ai deja cree une macro qui fait tout le travail.
elle ouvre une fenetre explorer et je n ai plus qu a choisir le chemin du fichier.
cependant, il se trouve que j ai 50 fichier texte a ouvrir les uns a la suite des autres donc la perte de temps est enorme
je souhaiterai pouvoir tous les selectionner et que ma macro se repete autant de fois qu il y a de fichier a ouvrir!!!
avez vous une idee ou savez vous comment faire
bien cordialement
je met ci joint le code que j ai cree pour recuperer un fichier texte:
Dim file, fs
Dim i, j As Integer
Dim stBuffer As String
Dim stResult() As String
Private Sub CommandButton1_Click()
file = Application.GetOpenFilename("ASC Files (*.asc),*.asc")
If file <> False Then
Set fs = CreateObject("Scripting.FileSystemObject")
Set inputfile = fs.OpenTextFile(file, 1, False, 0)
Do While inputfile.AtEndOfStream <> True And Not (endread)
stBuffer = inputfile.ReadLine
i = i + 1
stResult() = Split(stBuffer, Chr(9))
For k = 10 To 20
If Worksheets("Feuil1").Cells(k, 1).Value = "" Then
For j = 1 To UBound(stResult()) + 1
Worksheets("Feuil1").Cells(k, j).Value = stResult(j - 1)
Next
Exit For
Else
End If
Next
Loop
'MsgBox (stBuffer)
'stResult() = Split(stBuffer, Chr(9))
' For j = 1 To UBound(stResult()) + 1
' Worksheets("Feuil1").Cells(k, j).Value = stResult(j - 1)
' Next
hebus16
Messages postés80Date d'inscriptionvendredi 14 mai 2004StatutMembreDernière intervention 2 octobre 20091 12 oct. 2005 à 10:24
bah tu as deja la solution sans la voir ^^
en effet tu utilises le FSO pour ouvrir ton fichier selectionné.Or ton
"Scripting.FileSystemObject" possede aussi des attributs au niveau
dossier. Je te conseille de demande la saisie du dossier et d'utiliser
ceci :
Set fso = CreateObject("Scripting.FileSystemObject")
set mainfolder=fso.GetFolder(<Chemin acces à tes fichiers>)
Set filecollection = mainfolder.Files
For Each file In filecollection
call CommandButton1_Click() ' <Que tu renommeras par une fonction normal ^^ >
cpoulain
Messages postés2Date d'inscriptionjeudi 27 octobre 2005StatutMembreDernière intervention 7 novembre 2005 27 oct. 2005 à 15:05
Bonjour,
Je suis super intéressé par ton prog, j'ai essayé de faire la modif finale pour le faire fonctionner mais cela ne marche pas.
Aurais tu un moment pour publier ton code complet?...
Merci beaucoup.
Clément
Vous n’avez pas trouvé la réponse que vous recherchez ?
stocky69
Messages postés3Date d'inscriptionmardi 4 octobre 2005StatutMembreDernière intervention28 octobre 2005 28 oct. 2005 à 10:38
pas de soucis
voila le code
Dim file(), fs
Dim i, j, iFile As Integer
Dim stBuffer As String
Dim stResult() As String
Private Sub CommandButton1_Click()
file() = Application.GetOpenFilename("ASC Files (*.asc),*.asc", , , , True)'car c un point asc
For iFile = 1 To UBound(file())
If file(iFile) <> False Then
Set fs = CreateObject("Scripting.FileSystemObject")
Set inputfile = fs.OpenTextFile(file(iFile), 1, False, 0)
Do While inputfile.AtEndOfStream <> True
stBuffer = inputfile.ReadLine
i = i + 1
Loop
MsgBox (stBuffer)
stResult() = Split(stBuffer, Chr(9))'permet de separer le ligne du fichier texte, le mien etait separer par des tablulations(charactere 9)
For j = 1 To UBound(stResult()) + 1
Worksheets("Feuil1").Cells(iFile, j).Value = stResult(j - 1)
Next
End If
Next
cpoulain
Messages postés2Date d'inscriptionjeudi 27 octobre 2005StatutMembreDernière intervention 7 novembre 2005 7 nov. 2005 à 11:03
Arf, je n'y arrive toujours pas... Je m'explique:
Avec cette SUB, j'arrive à ouvrir un fichier texte, à copier les données présentes, à revenir dans mon fichier de base, à ouvrir un nouvel onglet et à y copier les données.
Maintenant, je me suis dis, avec ton code stocky, je vais surement arriver à lier les deux pour autmatiser mon code et donc faire automatiquement l'opération ci dessus autant de fois que nécessaire. Sauf que j'ai un pépin lorsque je le réinjecte... (cf ci dessous). Je n'ai pas du bien comprendre ton systeme de "stbuffer" et la manière dont il va récupérer les données. Arrives tu à voir si je fais fausse route et si tu vois une stratégie plus adaptée?...
Merci bcp...
Clément
Sub Openall()
file() = Application.GetOpenFilename("ASC Files (*.txt),*.txt", , , , True) 'car c un point asc
For iFile = 1 To UBound(file())
If file(iFile) <> False Then
Set fs = CreateObject("Scripting.FileSystemObject")
Set inputfile = fs.OpenTextFile(file(iFile), 1, False, 0)