OVH Cloud OVH Cloud

toujours les fichiers .txt

2 réponses
Avatar
FV
Bonjour

Tout d'abord, merci à isabelle pour ses infos...

Néanmoins :
Je souhaite ajouter le contenu de chaque fichier txt situés dans
un dossier "messages test"
Le code ci-dessous ouvre un fichier texte dans un classeur actif, répartit
le contenu dans les colonnes (séparateurs ;), puis ce contenu est copié dans
un autre classeur "synthèse" qui rassemble, ligne par ligne, toutes les
informations.
Mon problème : c'est toujours le même fichier qui est ouvert !!
NB : je débute en VBA...

Voici le code dans son intégralité.

Sub TousFichiersDunDossier()
Dim fso As Object, Dossier As Object, NomDossier
Dim Files As Object, File As Object, i As Integer
i = 1
Set fso = CreateObject("Scripting.FileSystemObject")
NomDossier = "C:\Documents and Settings\utilisateur\Bureau\traitement
mails\messages test"
If NomDossier = "" Then Exit Sub
Set Dossier = fso.getfolder(NomDossier)
Set Files = Dossier.Files
If Files.Count <> 0 Then
For Each File In Files
( à partir de là, le code importe le contenu de chaque texte)
Workbooks.OpenText "C:\Documents and
Settings\utilisateur\Bureau\traitement mails\messages test\*.txt" _
, Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited
(là, le code va copier et coller les valeurs dans le classeur de synthèse)
Range("a1:az1").Select
Selection.Copy
ThisWorkbook.Activate
Sheets("feuil1").Select
Range("A" & i).Select
ActiveSheet.Paste
i = i + 1
Next
End If
End Sub

Je suis sur qu'il y a mieux à faire ...
Merci de votre aide

FV

2 réponses

Avatar
Dude
Essaie-ça mon cher François :)


Sub TousFichiersDunDossier()

Dim fso As Object, Dossier As Object, NomDossier
Dim Files As Object, File As Object, i As Integer

i = 1
Set fso = CreateObject("Scripting.FileSystemObject")

'mettre ici le chemin d'accès du répertoire à traiter
NomDossier = "C:Documents and SettingsutilisateurBureautraitement
mailsmessages test"

If NomDossier = "" Then Exit Sub

Set Dossier = fso.getfolder(NomDossier)
Set Files = Dossier.Files

If Files.Count <> 0 Then
For Each File In Files
Workbooks.OpenText File _
, Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited

'mettre ici les manips à effectuer
Range("a1:az1").Select
Selection.Copy
ThisWorkbook.Activate
Sheets("feuil1").Select
Range("A" & i).Select
ActiveSheet.Paste


With Workbooks(File.Name)
Application.DisplayAlerts = False
.Save
.Close
Application.DisplayAlerts = True
End With
i = i + 1
If i > Files.Count Then GoTo suite
Next
End If
suite:
End Sub


"FV" wrote in message
news:
Bonjour

Tout d'abord, merci à isabelle pour ses infos...

Néanmoins :
Je souhaite ajouter le contenu de chaque fichier txt situés dans
un dossier "messages test"
Le code ci-dessous ouvre un fichier texte dans un classeur actif, répartit
le contenu dans les colonnes (séparateurs ;), puis ce contenu est copié
dans
un autre classeur "synthèse" qui rassemble, ligne par ligne, toutes les
informations.
Mon problème : c'est toujours le même fichier qui est ouvert !!
NB : je débute en VBA...

Voici le code dans son intégralité.

Sub TousFichiersDunDossier()
Dim fso As Object, Dossier As Object, NomDossier
Dim Files As Object, File As Object, i As Integer
i = 1
Set fso = CreateObject("Scripting.FileSystemObject")
NomDossier = "C:Documents and SettingsutilisateurBureautraitement
mailsmessages test"
If NomDossier = "" Then Exit Sub
Set Dossier = fso.getfolder(NomDossier)
Set Files = Dossier.Files
If Files.Count <> 0 Then
For Each File In Files
( à partir de là, le code importe le contenu de chaque texte)
Workbooks.OpenText "C:Documents and
SettingsutilisateurBureautraitement mailsmessages test*.txt" _
, Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited
(là, le code va copier et coller les valeurs dans le classeur de synthèse)
Range("a1:az1").Select
Selection.Copy
ThisWorkbook.Activate
Sheets("feuil1").Select
Range("A" & i).Select
ActiveSheet.Paste
i = i + 1
Next
End If
End Sub

Je suis sur qu'il y a mieux à faire ...
Merci de votre aide

FV






Avatar
FV
Ca marche impec !
merci beaucoup, quel talent !
FV
"Dude" a écrit dans le message de news:
#
Essaie-ça mon cher François :)


Sub TousFichiersDunDossier()

Dim fso As Object, Dossier As Object, NomDossier
Dim Files As Object, File As Object, i As Integer

i = 1
Set fso = CreateObject("Scripting.FileSystemObject")

'mettre ici le chemin d'accès du répertoire à traiter
NomDossier = "C:Documents and SettingsutilisateurBureautraitement
mailsmessages test"

If NomDossier = "" Then Exit Sub

Set Dossier = fso.getfolder(NomDossier)
Set Files = Dossier.Files

If Files.Count <> 0 Then
For Each File In Files
Workbooks.OpenText File _
, Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited

'mettre ici les manips à effectuer
Range("a1:az1").Select
Selection.Copy
ThisWorkbook.Activate
Sheets("feuil1").Select
Range("A" & i).Select
ActiveSheet.Paste


With Workbooks(File.Name)
Application.DisplayAlerts = False
.Save
.Close
Application.DisplayAlerts = True
End With
i = i + 1
If i > Files.Count Then GoTo suite
Next
End If
suite:
End Sub


"FV" wrote in message
news:
Bonjour

Tout d'abord, merci à isabelle pour ses infos...

Néanmoins :
Je souhaite ajouter le contenu de chaque fichier txt situés dans
un dossier "messages test"
Le code ci-dessous ouvre un fichier texte dans un classeur actif,
répartit


le contenu dans les colonnes (séparateurs ;), puis ce contenu est copié
dans
un autre classeur "synthèse" qui rassemble, ligne par ligne, toutes les
informations.
Mon problème : c'est toujours le même fichier qui est ouvert !!
NB : je débute en VBA...

Voici le code dans son intégralité.

Sub TousFichiersDunDossier()
Dim fso As Object, Dossier As Object, NomDossier
Dim Files As Object, File As Object, i As Integer
i = 1
Set fso = CreateObject("Scripting.FileSystemObject")
NomDossier = "C:Documents and
SettingsutilisateurBureautraitement


mailsmessages test"
If NomDossier = "" Then Exit Sub
Set Dossier = fso.getfolder(NomDossier)
Set Files = Dossier.Files
If Files.Count <> 0 Then
For Each File In Files
( à partir de là, le code importe le contenu de chaque texte)
Workbooks.OpenText "C:Documents and
SettingsutilisateurBureautraitement mailsmessages test*.txt" _
, Origin:=xlWindows, StartRow:=1, DataType:=xlDelimited
(là, le code va copier et coller les valeurs dans le classeur de
synthèse)


Range("a1:az1").Select
Selection.Copy
ThisWorkbook.Activate
Sheets("feuil1").Select
Range("A" & i).Select
ActiveSheet.Paste
i = i + 1
Next
End If
End Sub

Je suis sur qu'il y a mieux à faire ...
Merci de votre aide

FV