concatener et caract. de ctrl

  • Initiateur de la discussion yves
  • Date de début
Y

yves

Guest
bonjour,


je dois concatener tous les jours deux fichiers texte très volumineux, pour cela, j'utilise la commande schell (command.com ... copy ....) du dos via vba.

Des caracteres de controle perturbent cette concatenation

je recherche donc une solution pour épurer ces fichiers texte des caracteres de controle mais sans passer par excel, je ne peut donc pas utiliser la fonction epurage. Avez vous des solutions à me proposer ?

Existe t'il une fonction dos qui recherche et remplace les caracteres de controle ?

Merci de votre aide
yves
 
Z

Zon

Guest
Salut,

Y a bien longtemps que je n'ai pas fait de fichier de config sous DOS, mais il me semble que ta demande est pas vraiment possible en DOS. Mais diable si tu fais appel à une commande shell depuis VBA, pour quoi tu ne travailles pas en VBA sur ton fichier texte ?


A+++
 
L

Lord Nelson

Guest
Bonsoir Yves et Zon,

Pourquoi ne pas faire un petit traitement de fichier en VBA ?

La macro "EpureTexte" pourrait ressembler à ceci :

Sub EpureTexte()
Dim Taille As Long, MonTexte As String, Chemin As String
Dim Ligne As String, I As Integer
Chemin = Application.ThisWorkbook.Path
'Ouverture du fichier à traiter :
Open Chemin & "\TexteTab.txt" For Binary As #1
Taille = LOF(1)
MonTexte = String(Taille, 0)
'Lecture du fichier dont le contenu est placé dans une variable :
Get #1, 1, MonTexte
Close
'Suppression des caractères indésirables (ici tabulations) :
MonTexte = Replace(MonTexte, Chr(9), "")
'Ouverture d'un nouveau fichier pour enregistrer les
'modifications effectuées par la fonction Replace :
Open Chemin & "\TexteSansTab.txt" For Binary As #1
Put #1, 1, MonTexte
Close

'Vérification pour rire :
'Ancien Fichier
Open Chemin & "\TexteTab.txt" For Input As #1
Do Until EOF(1)
Line Input #1, Ligne
I = I + 1
Range("EpureTexte!A" & CStr(I)) = Ligne
Loop
Close
'Nouveau Fichier
I = I + 2
Open Chemin & "\TexteSansTab.txt" For Input As #1
Do Until EOF(1)
Line Input #1, Ligne
I = I + 1
Range("EpureTexte!A" & CStr(I)) = Ligne
Loop
Close
End Sub

Est-ce que ça te rapproche d'une solution ?

A+
LN
 

Pièces jointes

  • EpureTexte.zip
    11 KB · Affichages: 20
L

Lord Nelson

Guest
Petite précision pour la démo jointe :
Dans la fenêtre WinZip, double-cliquer d'abord sur le fichier txt, puis fermer le bloc-notes, avant de double-cliquer sur le fichier Excel.
LN
 

Discussions similaires

Statistiques des forums

Discussions
312 493
Messages
2 088 946
Membres
103 989
dernier inscrit
jralonso