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

XL 2019 Intégration d'un fichier ".txt" avec des lignes tabulées

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

Titof06

XLDnaute Occasionnel
Bonjour,

Je reviens vers vous car je me trouve avec un souci lors de l'intégration d'un fichier ".txt".

Celui-ci doit se présenter comme le fichier joint "DumpBht_MAJ_GENCOD_103_17-11-2025_32803.txt".

Mais quelquefois, il se présente sous la forme du fichier joint "DumpBht_MAJ_GENCOD_103_17-11-2025_32803_origine.txt".

Est-ce quelqu'un aurait une astuce pour enlever ces tabulations, svp ?

Je l'intègre avec ce code ci-dessous :
rep = ThisWorkbook.Path & "\"
strNomFichier = rep & "*" & "*GENCOD*" & "*.txt"

Destination = ThisWorkbook.Name

Workbooks.OpenText Filename:=strNomFichier, Origin:=xlWindows, StartRow:= _
1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
, Space:=False, Other:=True, OtherChar:="|", FieldInfo:=Array(Array(1, 2 _
), Array(2, 2)), DecimalSeparator:=".", TrailingMinusNumbers:=True
'
Lorsque le fichier est propre, tout va bien, mais lorsqu'il y a des tabulations, la suite ne fonctionne pas, tout est décalé.

Pour information, ces fichiers viennent d'une scannette pour des articles.

Je vous remercie et vous souhaite une agréable journée.

Titof06
 

Pièces jointes

Solution
Bonjour à tous,

On peut supprimer les tabulations inutiles directement sur le fichier texte :
VB:
Sub Efface_Tab()
Dim fichier, x%, a(), i&
fichier = ThisWorkbook.Path & "\DumpBht_MAJ_GENCOD_103_17-11-2025_32803_origine.txt"
x = FreeFile
Open fichier For Input As #x 'ouverture en lecture séquentielle
While Not EOF(x)
    ReDim Preserve a(i): Line Input #x, a(i): i = i + 1
Wend
Close #x
x = FreeFile
Open fichier For Output As #x 'ouverture en écriture séquentielle
For i = 0 To UBound(a)
    a(i) = Application.Trim(Replace(a(i), vbTab, " ")) 'supprime les espaces inutiles comme le fait la fonction SUPPRESPACE
    a(i) = Replace(a(i), " ", vbTab) 'remplace l'espace par une tabulation
    Print #x, a(i)
Next i
Close #x
MsgBox "Les...
Bonjour job75,

Je vous remercie encore pour cette solution qui fonctionne parfaitement même en 1.5 secondes !

Je vais faire le test avec votre nouvelle proposition.

Lors de certains scans, j'ai un maximum de 500 articles, donc cela ira très bien !

Encore un grand Merci pour le temps que vous m'avez accordé et vous souhaite une agréable fin de journée.

Titof06
 
Pour terminer juste une remarque sur la solution de sylvanu du post #10 : sur 120 000 lignes elle s'exécute en 21 secondes chez moi.

Il vaut mieux utiliser celle-ci qui s'exécute en 7 secondes :
VB:
d = Range("B" & Rows.Count).End(xlUp).Row
On Error Resume Next 'si aucune cellule vide
Range("A1:A" & d).SpecialCells(xlCellTypeBlanks).Delete Shift:=xlToLeft
 
- 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

Discussions similaires

Réponses
1
Affichages
866
Réponses
22
Affichages
3 K
Réponses
11
Affichages
2 K
Réponses
13
Affichages
2 K
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…