Réalisation d'une macro

  • Initiateur de la discussion Initiateur de la discussion Nivtec
  • 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 !

N

Nivtec

Guest
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

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) 🙁
 
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
 
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:
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.
 
- 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.

Discussions similaires

  • Question Question
Microsoft 365 Bug sur une macro
Réponses
6
Affichages
463
Retour