Réalisation d'une macro

Nivtec

XLDnaute Nouveau
Voila je suis étudiant et j'ai un soucis qu'une macro excel pourrait m'aider à résoudre. (Tout du moins à ne plus passer des heures interminables dessus)

Donc le problème c'est que j'ai des fichiers sous format txt que je dois mettre en forme sous excel pour le traiter.
Le soucis provient surtout de la mise en forme.
J'ai essayé de faire une macro via le module enregistrement d'une macro mais le problème arrive pour la fin de la macro.Les fichiers étant de longueur variables donc de nombreux sauts de page et de ligne total /Totaux.
Je dois avouer que je désespère.

Voila je m'adresse à vous en espérant que vous pourrez m'aider.
 

Pièces jointes

  • Exemple 1.txt
    14.4 KB · Affichages: 89

Nivtec

XLDnaute Nouveau
Re : Réalisation d'une macro

J'ai essayé le soucis c'est qu'après je dois remettre en forme + oter les totaux
Et quand j'ai des fichiers qui font 20 000 lignes c'est ardu.
Mais j'avoue que c'est ma méthode actuelle.
(1h par fichier environ) :(
 

bbb38

XLDnaute Accro
Re : Réalisation d'une macro

Bonjour Nivtec, le forum,
Une solution est possible si le code en colonne A comprend toujours 2 chiffres suivi d’une lettre, d’un chiffre et de 2 lettres (composition du code actuel).
Cordialement,
Bernard
 

Efgé

XLDnaute Barbatruc
Re : Réalisation d'une macro

Bonjour Nivtec, bbb38, Bonjour Pierrot :)
Avec ce que j'ai compris...
En ayant le modèle dans le même classeur que le fichier texte:
VB:
Sub test()
Dim i&, j&, FSO As Object, Fichier As Object, TMP
Set FSO = CreateObject("Scripting.FileSystemObject")
Set Fichier = FSO.OpenTextFile(ThisWorkbook.Path & "\Exemple.txt")
Application.ScreenUpdating = False
Sheets.Add Before:=Sheets(1)
With ActiveSheet
    Do
        If InStr(Fichier.ReadLine, "!") > 0 Then
            TMP = Split(Fichier.ReadLine, "!")
            If UBound(TMP) > 0 Then
                If Trim(TMP(1)) <> "" And Left(Trim(TMP(1)), 1) <> "*" Then
                    If Not CStr(Left(Trim(TMP(1)), 1)) Then
                        i = i + 1
                        .Cells(i, 1).Value = TMP(1)
                        For j = 2 To UBound(TMP)
                            If Trim(TMP(j)) <> "" Then
                                .Cells(i, j).Value = CDbl(Replace(TMP(j), ".", ","))
                            End If
                        Next j
                    End If
                End If
            End If
        End If
    Loop While Not Fichier.AtEndOfStream
    .Columns.AutoFit
End With
Application.ScreenUpdating = True
End Sub

Cordialement
 
Dernière édition:

Nivtec

XLDnaute Nouveau
Re : Réalisation d'une macro

OK merci.
Le fichier résultat est ok mais je suis confronté à 2 problèmes:
le premier, il me mets incompatibilité de type
le second, il s'arrete des que la référence commence par une lettre.
je suppute que le premier est lié au second... mais je ne vois pas trop comment faire.
 

Statistiques des forums

Discussions
312 492
Messages
2 088 925
Membres
103 984
dernier inscrit
maliko67