trollakuir
Messages postés1Date d'inscriptionlundi 4 juillet 2005StatutMembreDernière intervention29 juin 2006
-
29 juin 2006 à 12:27
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 2012
-
29 juin 2006 à 13:56
Bonjour à tous,
Je fais appel à vous pour un problème qui me bloque depuis deux jours.
Je vous explique :
j'ai un lot de n fichiers texte qui se trouvent dans un répertoire.
Je veux les ouvrir dans excel, faire dessus quelques manipulations (pour ça je me débrouille) puis les refermer.
J'ai bricolé le code suivant. Le problème c'est que je n'arrive qu'à ouvrir qu'un fichier à la fois (et j'ai 385 fichiers à modifier...). il me manque en fait une variable qui dirait "ouvre chaque fichier du répertoire" au lieu de ouvre tel fichier.
'macro pour importer dans excel des fichiers text et enregistrer le fichier xls dans le même repertoire
Sub OuvrirfichierTxt()
Dim FSO: Set FSO = CreateObject("Scripting.FileSystemObject")
Dim waExcel: Set waExcel = CreateObject("Excel.Application") 'Ouverture d'Excel
StrPath = "M:\ETUDES EN COURS\2006\06E023 Fédération Collectivités de l'eau SDA SeineMaritime\Donnees technique\test excel" 'Chemin d'accès du fichier
If Right(StrPath, 1) <> "" Then StrPath = StrPath & "" 'Ajoute \ à la fin s'il y en a pas
StrFich = "AMBRUMESNIL-20-10-05" 'Nom du fichier
If FSO.FileExists(StrPath & StrFich) Then 'Existance du fichier
waExcel.Visible = False 'Rendre invisible Excel
'Importe le fichier texte vers une feuille Excel de façon Largeur fixe avec délimiteur : Tabulation et Space
waExcel.Workbooks.OpenText StrPath & StrFich, Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier _
:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:= _
False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 1) _
, TrailingMinusNumbers:=True
'Sauvegarde la feuiller importer vers le chemin d'accès de départ en motifiant l'extension et en mode partagé pour éviter des erreurs
waExcel.Workbooks(StrFich).SaveAs StrPath & Left(StrFich, Len(StrFich) - 4) & ".xls", , , , , , 2
End If
'Fermeture d'Excel
waExcel.Application.Quit
End Sub
J'ai mis en rouge le nom du fichier que j'ai utilisé pour tester mon code.
Il m'a bien créer un fichier xls dans le même répertoire mais je voudrais que la manip boucle sur chaque fichier de mon répertoire.
J'espère avoir été assez clair dans mes explications.
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 29 juin 2006 à 13:14
Salut,
Utilise la fonction Dir avec une boucle.
Ce qui donnerai a peu pres (je n'est pas testé)
Sub OuvrirfichierTxt()
Dim waExcel: Set waExcel = CreateObject ("Excel.Application") 'Ouverture d'Excel
StrPath = "M:\ETUDES EN COURS\2006\06E023 Fédération Collectivités de l'eau SDA SeineMaritime\Donnees technique\test excel" 'Chemin d'accès du fichier
If Right(StrPath, 1) <> "" Then StrPath = StrPath & "" 'Ajoute \ à la fin s'il y en a pas
StrFich = Dir (StrPath, vbArchive)
Do While MyName <> "" ' Commence la boucle.
waExcel.Visible = False 'Rendre invisible Excel
'Importe le fichier texte vers une feuille Excel de façon Largeur fixe avec délimiteur : Tabulation et Space
waExcel.Workbooks.OpenText StrPath & StrFich, Origin:= xlWindows, StartRow:=1, DataType:=xlDelimited, TextQualifier _
:=xlDoubleQuote, ConsecutiveDelimiter:=False, Tab:=False, Semicolon:= _
False, Comma:=False, Space:=False, Other:=False, FieldInfo:=Array(1, 1) _
, TrailingMinusNumbers:=True
'Sauvegarde la feuiller importer vers le chemin d'accès de départ en motifiant l'extension et en mode partagé pour éviter des erreurs
waExcel.Workbooks(StrFich).SaveAs StrPath & Left (StrFich, Len(StrFich) - 4) & ".xls", , , , , , 2
StrFich = Dir ' Extrait l'entrée suivante.
Loop
'Fermeture d'Excel
waExcel.Application.Quit
End Sub
cs_JMO
Messages postés1854Date d'inscriptionjeudi 23 mai 2002StatutMembreDernière intervention24 juin 201827 29 juin 2006 à 13:54
Bonjour ,
Une simple boucle suffit.
Do While...Loop (exemple de Julien)
ou
For Each....Next (exemple ci-dessous)
Dim Path
Path = "d:\test1"
MsgBox ShowFolderList(Path),vbmessage,"Fichiers présents dans le répertoire"
Function ShowFolderList(strPath)
Dim fso, Dossiers, fic, fichiers, strListe, f, fdate, fname, dtDiffFile, nbre_fichier
Set fso = CreateObject("Scripting.FileSystemObject")
Set Dossiers = fso.GetFolder(path)
Set fic = Dossiers.Files
For Each fichiers in fic
Set f = fso.GetFile(fichiers)
fdate = f.DateLastModified ' ou DateCreated
fname = f.Name
dtDiffFile = DateDiff("d", Now, fdate)
If dtDiffFile <= -5 Then
MsgBox "Le fichier " & Path & fname & " sera supprimé car créé le " & fdate
''''' fso.DeleteFile(Path & fname)
nbre_fichier = nbre_fichier + 1
Else
MsgBox "Le fichier " & Path & fname & " ne sera pas supprimé car créé le " & fdate
End If
strListe = strListe & vbcrlf & vbcrlf & fname & " " & fdate
Next
ShowFolderList = "Nombre de fichiers: " nbre_fichier &vbCrLf& strListe
End Function