[ Cette réponse est faite sur le forum public Word :
news://msnews.microsoft.com/microsoft.public.fr.word ]
[ Cette réponse est faite sur le forum public Word :
news://msnews.microsoft.com/microsoft.public.fr.word ]
[ Cette réponse est faite sur le forum public Word :
news://msnews.microsoft.com/microsoft.public.fr.word ]
Une autre petite procédure pour remplacer tous les ";" par
le caractère Chr(13) pour la totalité du fichier dans le
fichier texte lui-même sans rien exporter vers Excel.
'-----------------------------------
Sub Modifier_Fichiers_Texte_Répertoire_Entier()
Dim Temp As String, Chemin As String
Dim Fichier As String, X As Long
Dim AncEle As String, NouEle As String
'******Variables à définir**************
Chemin = "C:UsersDMDocuments"
Fichier = "MonFichier.txt"
'Élément à changer - Modifier ";"
'par le caractère chr(13
AncEle = ";"
NouEle = Chr(13)
'****************************************
X = FreeFile
if = Dir(Chemin & fichier) <>"" then
Open Chemin & fichier For Binary Access Read As #X
Temp = String(LOF(X), Chr(0))
Get #X, , Temp
Close #X
'remplacement à effectuer
Temp = Replace(Temp, AncEle, NouEle)
Open Chemin & fichier For Output As #X
Print #X, Temp
Close #X
else
Msgbox "Fichier inexistant dans le chemin indiqué."
end if
End Sub
.-------------------------------------
"michdenis" a écrit dans le message de groupe de
discussion :
Bonjour,
Si tu ouvres l'application Excel,
Tu peux ouvrir directement un fichier .txt ou .csv.
Fichier / Ouvrir / dans la liste déroulante du bas de la
fenêtre, tu modifies le type de fichier pour .csv, txt
et tu sélectionnes le fichier texte (.txt) qui te convient.
Il ne te reste plus qu'à suivre l'assistant pour compléter
l'importation.
Si tu veux le faire par macro : Un exemple
L'importation se fait une ligne à la fois et la copie
dans la cellule de la colonne A du classeur
Cela dépend du contenu de ton fichier...
'-------------------------------------------
Sub Import_Fichier_Texte_Dans_Excel()
dim i as Long = 1, Ligne As String
open "c:LeCheminMonDocument.txt" for input as 1
i=1
do while not eof(1)
line input #1, ligne
With Worksheets("Feuil1")
.cells(i,1).value = ligne
i=i + 1
End with
loop
'-------------------------------------------
"galopin01" a écrit dans le message de
groupe de
discussion :
Bonjour,
j'ai écrit cette macro pour modifier un fichier .txt et pouvoir l'importer
sous Excel :
Mon problème est que cette macro continue de tourner même quand il n'y a
plus rien à remplacer et elle insère des caractères 13 et elle insère des
caractères 13 et....
Bon je sais l'interrompre avec Ctrl Pause mais j'aimerai un truc dans le
code pour sortir de cette boucle...
J'ai essayé On Error GoTo...
et d'autres trucs avec wdFindAsk mais ce n'était pas concluant...
Avec vous la solution ?
Sub Test()
Selection.HomeKey Unit:=wdStory
Selection.Find.ClearFormatting
With Selection.Find
.Text = ";"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
End With
Do
For i = 1 To 37
Selection.Find.Execute
Next
Selection = Replace(Selection, ";", Chr(13))
Selection.MoveRight Unit:=wdCharacter, Count:=1
Loop
End Sub
Merci
Une autre petite procédure pour remplacer tous les ";" par
le caractère Chr(13) pour la totalité du fichier dans le
fichier texte lui-même sans rien exporter vers Excel.
'-----------------------------------
Sub Modifier_Fichiers_Texte_Répertoire_Entier()
Dim Temp As String, Chemin As String
Dim Fichier As String, X As Long
Dim AncEle As String, NouEle As String
'******Variables à définir**************
Chemin = "C:UsersDMDocuments"
Fichier = "MonFichier.txt"
'Élément à changer - Modifier ";"
'par le caractère chr(13
AncEle = ";"
NouEle = Chr(13)
'****************************************
X = FreeFile
if = Dir(Chemin & fichier) <>"" then
Open Chemin & fichier For Binary Access Read As #X
Temp = String(LOF(X), Chr(0))
Get #X, , Temp
Close #X
'remplacement à effectuer
Temp = Replace(Temp, AncEle, NouEle)
Open Chemin & fichier For Output As #X
Print #X, Temp
Close #X
else
Msgbox "Fichier inexistant dans le chemin indiqué."
end if
End Sub
.-------------------------------------
"michdenis" <michdenis@hotmail.com> a écrit dans le message de groupe de
discussion :
upWRmWSmKHA.2164@TK2MSFTNGP02.phx.gbl...
Bonjour,
Si tu ouvres l'application Excel,
Tu peux ouvrir directement un fichier .txt ou .csv.
Fichier / Ouvrir / dans la liste déroulante du bas de la
fenêtre, tu modifies le type de fichier pour .csv, txt
et tu sélectionnes le fichier texte (.txt) qui te convient.
Il ne te reste plus qu'à suivre l'assistant pour compléter
l'importation.
Si tu veux le faire par macro : Un exemple
L'importation se fait une ligne à la fois et la copie
dans la cellule de la colonne A du classeur
Cela dépend du contenu de ton fichier...
'-------------------------------------------
Sub Import_Fichier_Texte_Dans_Excel()
dim i as Long = 1, Ligne As String
open "c:LeCheminMonDocument.txt" for input as 1
i=1
do while not eof(1)
line input #1, ligne
With Worksheets("Feuil1")
.cells(i,1).value = ligne
i=i + 1
End with
loop
'-------------------------------------------
"galopin01" <roger.maurczaknospam@orange.fr> a écrit dans le message de
groupe de
discussion : uOOnglRmKHA.2160@TK2MSFTNGP02.phx.gbl...
Bonjour,
j'ai écrit cette macro pour modifier un fichier .txt et pouvoir l'importer
sous Excel :
Mon problème est que cette macro continue de tourner même quand il n'y a
plus rien à remplacer et elle insère des caractères 13 et elle insère des
caractères 13 et....
Bon je sais l'interrompre avec Ctrl Pause mais j'aimerai un truc dans le
code pour sortir de cette boucle...
J'ai essayé On Error GoTo...
et d'autres trucs avec wdFindAsk mais ce n'était pas concluant...
Avec vous la solution ?
Sub Test()
Selection.HomeKey Unit:=wdStory
Selection.Find.ClearFormatting
With Selection.Find
.Text = ";"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
End With
Do
For i = 1 To 37
Selection.Find.Execute
Next
Selection = Replace(Selection, ";", Chr(13))
Selection.MoveRight Unit:=wdCharacter, Count:=1
Loop
End Sub
Merci
Une autre petite procédure pour remplacer tous les ";" par
le caractère Chr(13) pour la totalité du fichier dans le
fichier texte lui-même sans rien exporter vers Excel.
'-----------------------------------
Sub Modifier_Fichiers_Texte_Répertoire_Entier()
Dim Temp As String, Chemin As String
Dim Fichier As String, X As Long
Dim AncEle As String, NouEle As String
'******Variables à définir**************
Chemin = "C:UsersDMDocuments"
Fichier = "MonFichier.txt"
'Élément à changer - Modifier ";"
'par le caractère chr(13
AncEle = ";"
NouEle = Chr(13)
'****************************************
X = FreeFile
if = Dir(Chemin & fichier) <>"" then
Open Chemin & fichier For Binary Access Read As #X
Temp = String(LOF(X), Chr(0))
Get #X, , Temp
Close #X
'remplacement à effectuer
Temp = Replace(Temp, AncEle, NouEle)
Open Chemin & fichier For Output As #X
Print #X, Temp
Close #X
else
Msgbox "Fichier inexistant dans le chemin indiqué."
end if
End Sub
.-------------------------------------
"michdenis" a écrit dans le message de groupe de
discussion :
Bonjour,
Si tu ouvres l'application Excel,
Tu peux ouvrir directement un fichier .txt ou .csv.
Fichier / Ouvrir / dans la liste déroulante du bas de la
fenêtre, tu modifies le type de fichier pour .csv, txt
et tu sélectionnes le fichier texte (.txt) qui te convient.
Il ne te reste plus qu'à suivre l'assistant pour compléter
l'importation.
Si tu veux le faire par macro : Un exemple
L'importation se fait une ligne à la fois et la copie
dans la cellule de la colonne A du classeur
Cela dépend du contenu de ton fichier...
'-------------------------------------------
Sub Import_Fichier_Texte_Dans_Excel()
dim i as Long = 1, Ligne As String
open "c:LeCheminMonDocument.txt" for input as 1
i=1
do while not eof(1)
line input #1, ligne
With Worksheets("Feuil1")
.cells(i,1).value = ligne
i=i + 1
End with
loop
'-------------------------------------------
"galopin01" a écrit dans le message de
groupe de
discussion :
Bonjour,
j'ai écrit cette macro pour modifier un fichier .txt et pouvoir l'importer
sous Excel :
Mon problème est que cette macro continue de tourner même quand il n'y a
plus rien à remplacer et elle insère des caractères 13 et elle insère des
caractères 13 et....
Bon je sais l'interrompre avec Ctrl Pause mais j'aimerai un truc dans le
code pour sortir de cette boucle...
J'ai essayé On Error GoTo...
et d'autres trucs avec wdFindAsk mais ce n'était pas concluant...
Avec vous la solution ?
Sub Test()
Selection.HomeKey Unit:=wdStory
Selection.Find.ClearFormatting
With Selection.Find
.Text = ";"
.Forward = True
.Wrap = wdFindContinue
.Format = False
.MatchCase = False
.MatchWholeWord = False
End With
Do
For i = 1 To 37
Selection.Find.Execute
Next
Selection = Replace(Selection, ";", Chr(13))
Selection.MoveRight Unit:=wdCharacter, Count:=1
Loop
End Sub
Merci
Finalement, j'ai réussi à stopper la machine infernale... En testant la
sélection après Find.Execute
.... mais je suis preneur d'une solution directe sous Excel (avec Open) si tu
peux me dire comment on parse enregistrement par enregistrement pour aller
sur la ligne suivante après le 67ème ";"
Finalement, j'ai réussi à stopper la machine infernale... En testant la
sélection après Find.Execute
.... mais je suis preneur d'une solution directe sous Excel (avec Open) si tu
peux me dire comment on parse enregistrement par enregistrement pour aller
sur la ligne suivante après le 67ème ";"
Finalement, j'ai réussi à stopper la machine infernale... En testant la
sélection après Find.Execute
.... mais je suis preneur d'une solution directe sous Excel (avec Open) si tu
peux me dire comment on parse enregistrement par enregistrement pour aller
sur la ligne suivante après le 67ème ";"
With Worksheets("Feuil1")
.Cells(l, c).Value = Mid(texte, j, i - j)
End With
galopin01 a écrit :Finalement, j'ai réussi à stopper la machine infernale... En testant la
sélection après Find.Execute.... mais je suis preneur d'une solution directe sous Excel (avec Open)
si tu peux me dire comment on parse enregistrement par enregistrement
pour aller sur la ligne suivante après le 67ème ";"
Bonsoir,
Quelque chose comme ça, dans une procédure excel, pour parser un fichier
texte (qui ne doit pas excéder 32767 caractères) :
Sub test()
Dim texte As String, i As Integer, j As Integer
Dim l As Integer, c As Integer
Open "D:ExcelTest.txt" For Input As #1
Input #1, texte
Close #1
l = 1
j = 1
c = 1
i = InStr(texte, ";")
While i > 0
With Worksheets("Feuil1")
.Cells(l, c).Value = Mid(texte, j, i - j)
End With
j = i + 1
c = c + 1
If c = 38 Then
c = 1
l = l + 1
End If
i = InStr(j, texte, ";")
Wend
End Sub
...mais on peut sûrement faire plus simple :-)
db
With Worksheets("Feuil1")
.Cells(l, c).Value = Mid(texte, j, i - j)
End With
galopin01 a écrit :
Finalement, j'ai réussi à stopper la machine infernale... En testant la
sélection après Find.Execute
.... mais je suis preneur d'une solution directe sous Excel (avec Open)
si tu peux me dire comment on parse enregistrement par enregistrement
pour aller sur la ligne suivante après le 67ème ";"
Bonsoir,
Quelque chose comme ça, dans une procédure excel, pour parser un fichier
texte (qui ne doit pas excéder 32767 caractères) :
Sub test()
Dim texte As String, i As Integer, j As Integer
Dim l As Integer, c As Integer
Open "D:ExcelTest.txt" For Input As #1
Input #1, texte
Close #1
l = 1
j = 1
c = 1
i = InStr(texte, ";")
While i > 0
With Worksheets("Feuil1")
.Cells(l, c).Value = Mid(texte, j, i - j)
End With
j = i + 1
c = c + 1
If c = 38 Then
c = 1
l = l + 1
End If
i = InStr(j, texte, ";")
Wend
End Sub
...mais on peut sûrement faire plus simple :-)
db
With Worksheets("Feuil1")
.Cells(l, c).Value = Mid(texte, j, i - j)
End With
galopin01 a écrit :Finalement, j'ai réussi à stopper la machine infernale... En testant la
sélection après Find.Execute.... mais je suis preneur d'une solution directe sous Excel (avec Open)
si tu peux me dire comment on parse enregistrement par enregistrement
pour aller sur la ligne suivante après le 67ème ";"
Bonsoir,
Quelque chose comme ça, dans une procédure excel, pour parser un fichier
texte (qui ne doit pas excéder 32767 caractères) :
Sub test()
Dim texte As String, i As Integer, j As Integer
Dim l As Integer, c As Integer
Open "D:ExcelTest.txt" For Input As #1
Input #1, texte
Close #1
l = 1
j = 1
c = 1
i = InStr(texte, ";")
While i > 0
With Worksheets("Feuil1")
.Cells(l, c).Value = Mid(texte, j, i - j)
End With
j = i + 1
c = c + 1
If c = 38 Then
c = 1
l = l + 1
End If
i = InStr(j, texte, ";")
Wend
End Sub
...mais on peut sûrement faire plus simple :-)
db