Bonjour,
Je dispose de fichiers .txt dans un répertoire se composant tous de la même manière, par exemple :
Je dois entourer de guillemets sur chaque ligne les chaînes de caractère, le résultat doit donc être de la forme :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9 D,CNIT,,,,,,CNIT La défense,CNIT - LA DEFENSE,,,,, C,CAFET,,,,,,Cafétéria ATRIUM,,,,,, C,D,,,,,,Bâtiment D,,,,,, C,P,,,,,,Bâtiment P Le DOME,,,,,, C,PA,,,,,,Bâtiment PA,,,,,, C,C,,,,,,Bâtiment C,,,,,, C,L,,,,,,Bâtiment L,,,,,, C,N,,,,,,Bâtiment Le NAUTILE,,,,,, C,F,,,,,,Bâtiment F Le GALION,,,,,,
J'utilise actuellement 2 morceaux de code VBA (trouvés sur ce forum et grâce à l'aide de certains
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3 "D","CNIT",,,,,,"CNIT La défense","CNIT - LA DEFENSE",,,,, "C","CAFET",,,,,,"Cafétéria ATRIUM",,,,,,) pour entourer de guillemets les chaînes de caractère et enregistrer le nouveau fichier en .txt :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8 Sub Guillemets() Dim c As Range For Each c In Sheets("Nom_feuille").Cells.SpecialCells(xlCellTypeConstants) c.Replace Chr(34), "" 'éliminer les doubles quotes existantes c.Value = Chr(34) & c.Value & Chr(34) 'pour encadrer le contenu de chaque cellule Next c End SubEst-il possible d'avoir un code VBA qui prend tous les fichiers .txt d'un répertoire? Ceci d'afin de permettre aux utilisateurs de faire cette opération d'une traite et pas fichier par fichier?
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
26
27 Sub ExportTXT() ' Exportation du fichier au format TXT MsgBox "Exportation du fichier" Dim Ranges As Object, Line As Object, Cell As Object Dim StrTemp As String Dim Separateur As String Separateur = "," Filename = Application.GetSaveAsFilename(Nom_Fichier, "Text Files (*.txt), *.txt") Set Ranges = ActiveSheet.UsedRange Open Filename For Output As #1 For Each Line In Ranges.Rows StrTemp = "" For Each Cell In Line.Cells StrTemp = StrTemp & CStr _ (Cell.Text) & Separateur Next Print #1, StrTemp '= " " Next Close End Sub
De plus, le 2ème bout de code ci-dessus met également une virgule à la fin de la chaîne de caractère, ce qui n'est pas toujours nécessaire, comment lui préciser de ne pas en mettre une?
Merci en avance pour votre aide!
Partager