Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

uploader/tronquer/sauvegarder au format txt

  • Initiateur de la discussion Initiateur de la discussion theocyt
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

T

theocyt

Guest
Hello

Ma première macro !! et surement pas la dernière !!!!

Alors je reçois des fichiers au format .txt sans retour chariot.
Je souhaite en intégrer un tous les 120 caractères.

J'ai donc tenter d'automatiser ca dans Excel avec mes faibles connaissances des formules et en repompant des bouts de macro par ci par là.

En pièce jointe un exemple de fichier à charger.
Dans ma conception, j'ai une erreur lorsque j'upload mon fichier car en feuil2 je devrais avoir l'intégralité du fichier dans la cellule A1. Et là il tronque sur plusieurs ligne la 1ère ligne du fichier .txt.

Et ensuite j'aimerai apprendre à 'optimiser' le résultat que j'ai sorti.
(la fonction enregistrer macro automatiquement m'aide bcp !!!)

Theocyt
 

Pièces jointes

Re : uploader/tronquer/sauvegarder au format txt

bonsoir

essais comme ceci (à cet endroit de ton code)

Else
Feuil2.Select
NumFile = FreeFile
Compteur = 1
Open Nom_Fichier For Input As NumFile ' ouverture du fichier
Do While Not EOF(NumFile)
Input #NumFile, Texte
For I = 1 To Len(Texte) Step 120
Feuil2.Range("A" & Compteur).Value = Left(Texte, 120)
Texte = Mid(Texte, 121)
Compteur = Compteur + 1
Next
Loop
End If
 
Re : uploader/tronquer/sauvegarder au format txt

bonjour et bienvenue dans le monde merveilleux des macros,

une autre piste :

Code:
Sub extraction()
Workbooks.OpenText Filename:="C:\BMCI.txt", Origin:=xlMSDOS, StartRow:=1 _
, DataType:=xlFixedWidth, FieldInfo:=Array(Array(0, 2), Array(120, 1)), TrailingMinusNumbers:=True
i = 1
Do While IsEmpty(Cells(i, 2)) = False
x = Len(Cells(i, 2))
If x > 120 Then
Cells(i + 1, 1) = Left(Cells(i, 2), 120)
Cells(i + 1, 2) = Right(Cells(i, 2), x - 120)
Else
Cells(i + 1, 1) = Cells(i, 2)
End If
i = i + 1
Loop
Columns(2).ClearContents
End Sub

Ce code réalise sans formule les trois étapes de ta procédure, reste à enregistrer le fichier comme tu le souhaites

A+
 
Dernière édition:
Re : uploader/tronquer/sauvegarder au format txt

Merci pour cette aide, je vais me plonger dans ce monde merveilleux pendant mes soirées !!

Roland _ M :
J'obtiens toujours en résultat que le prmeier bloc de chiffre de la première ligne. Je pense qu'il y a un "séparateur" qui est interprêté.

Ledzepfred :
Aucun retour chariot n'est mis en place dans la macro, mais je vais tenter de l'insérer ce soir. Retour d'info demain.

Theocyt
 
Re : uploader/tronquer/sauvegarder au format txt

Bonjour theocyt, Roland_M, ledzepfred, le Forum,

Une autre proposition... J'ai cru comprendre que tu avais plusieurs fichiers .txt à traiter. Voici une façon de le faire "en lot" :

  1. Tu copies le code ci-dessous dans un module de code Standard (ex: Module1),
  2. Tu lies ton bouton à la procédure Traitement(),
  3. Et tu sauvegardes ce classeur Excel dans le répertoire où se trouvent tes fichiers .txt à traiter.
Code:
[COLOR=GRAY][B][I]DANS UN MODULE DE CODE STANDARD[/I][/B][/COLOR]

[COLOR=NAVY]Option Explicit[/COLOR]

[COLOR=NAVY]Sub[/COLOR] Traitement()
[COLOR=GREEN]'myDearFriend!  -  www.mdf-xlpages.com[/COLOR]
[COLOR=NAVY]Dim[/COLOR] Fichier [COLOR=NAVY]As Object
Dim[/COLOR] Chemin [COLOR=NAVY]As String[/COLOR], T [COLOR=NAVY]As String
Dim[/COLOR] Compteur [COLOR=NAVY]As Long[/COLOR]
    [COLOR=GREEN]'Chemin à adapter le cas échéant...[/COLOR]
    Chemin = ThisWorkbook.Path & "\"
    [COLOR=GREEN]'Traitement[/COLOR]
    [COLOR=NAVY]With[/COLOR] CreateObject("Scripting.FileSystemObject")
        [COLOR=NAVY]For Each[/COLOR] Fichier [COLOR=NAVY]In[/COLOR] .GetFolder(Chemin).Files
            [COLOR=NAVY]If[/COLOR] Fichier.Name [COLOR=NAVY]Like[/COLOR] "*.txt" [COLOR=NAVY]Then[/COLOR]
                Compteur = Compteur + 1
                [COLOR=GREEN]'Ouvre le fichier texte et mémorise le contenu[/COLOR]
                [COLOR=NAVY]With[/COLOR] .OpenTextFile(Chemin & Fichier.Name, 1)
                    T = .readall
                    .[COLOR=NAVY]Close
                End With[/COLOR]
                [COLOR=GREEN]'Traite le contenu[/COLOR]
                T = Split120(T)
                [COLOR=GREEN]'Crée le fichier texte modifié[/COLOR]
                [COLOR=NAVY]With[/COLOR] .CreateTextFile(Chemin & "OK " & Fichier.Name, [COLOR=NAVY]True[/COLOR])
                    .WriteLine T
                    .[COLOR=NAVY]Close
                End With
            End If
        Next[/COLOR] Fichier
    [COLOR=NAVY]End With[/COLOR]
    MsgBox Compteur & " fichiers traités."
[COLOR=NAVY]End Sub[/COLOR]

[COLOR=NAVY]Private Function[/COLOR] Split120([COLOR=NAVY]ByVal[/COLOR] T [COLOR=NAVY]As String[/COLOR]) [COLOR=NAVY]As String[/COLOR]
[COLOR=GREEN]'myDearFriend!  -  www.mdf-xlpages.com[/COLOR]
[COLOR=NAVY]Dim[/COLOR] T2 [COLOR=NAVY]As String
    Do While[/COLOR] Len(T)
        T2 = T2 & Left(T, 120) & vbCrLf
        T = Mid(T, 121)
    [COLOR=NAVY]Loop[/COLOR]
    Split120 = T2
[COLOR=NAVY]End Function[/COLOR]
J'ai repris et légèrement modifier le code que tu peux retrouver ici :
[VBA] Modifier en lot le contenu des fichiers .txt d'un répertoire

Cordialement,
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…