VBA : importer fichier txt en respectant format spécifique

YAKA2009

XLDnaute Nouveau
Bonjour,

J'ai un fichier txt que je souhaite importer dans un classeur Excel 2007.
La difficulté pour moi est d'importer ce fichier en respectant le format de ce fichier plat
à savoir :
Nom du champ Démarrage Largeur
COLONNE 1 1 5
COLONNE 2 6 8
COLONNE 3 14 1
COLONNE 4 15 1
COLONNE 5 16 5

Une fois que le fichier est importé, je pourrais faire des modifications puis exporter à nouveau le fichier au format txt
C'est un fichier avec une centaine de colonnes mais pour démarrer, je souhaite importer les 5 premieres colonnes
en respectant le format.
Je vous envoie en pièce jointe le fichier txt à importer et le fichier Excel dans lequel l'import doit se faire.
Merci pour votre aide
 

Pièces jointes

  • test.zip
    7.4 KB · Affichages: 90
  • test.zip
    7.4 KB · Affichages: 85
  • test.zip
    7.4 KB · Affichages: 87

Victor21

XLDnaute Barbatruc
Re : VBA : importer fichier txt en respectant format spécifique

Bonsoir.

Vous pouvez copier les données du fichier texte, les coller en A2, et utiliser l'outil Convertir.
L'enregistreur de macro vous donnera le code si vous désirez automatiser.
 

YAKA2009

XLDnaute Nouveau
Re : VBA : importer fichier txt en respectant format spécifique

Bonsoir Victor,
merci pour votre réponse
j'ai utilisé le convertisseur,
je ne comprends comment agit la macro
s'agit que pour
colonne A2 je garder 5 caractères
colonne B2 : 8 caractères
colonne C2 :

Selection.TextToColumns Destination:=Range("A1"), DataType:=xlFixedWidth, _
FieldInfo:=Array(Array(0, 1), Array(5, 1), Array(13, 1), Array(14, 1), Array(15, 1), _
Array(20, 1), Array(22, 1), Array(30, 1), Array(32, 1), Array(34, 1)), _
TrailingMinusNumbers:=True
Range("C8").Select
End SubEnd Sub

Deplus dans le fichier initial j'ai des espaces qui sont supprimé par le convertisseur.
Pouvez-vous m'aider ?
 

YAKA2009

XLDnaute Nouveau
Re : VBA : importer fichier txt en respectant format spécifique

Bonsoir,

j'ai trouvé cette macro mais je ne sais pas comment dire
copier les 5 premiers caractères dans la colonne 1,
les 2 caractères suivants dans la colonne 2,
les 10 caractères suivants dans la colonne 3
ainsi de suite.
(j'ai fait enregistrer macro mais impossible d'adapter le code)
merci pour votre aide.

Sub Tst()
Dim Fichier As Variant
ChDir ThisWorkbook.Path
Fichier = Application.GetOpenFilename("Text Files (*.txt), *.txt")
If Fichier <> False Then
Lire Fichier
End If
End Sub

Function Lire(ByVal NomFichier As String)
Dim Chaine As String
Dim Ar() As String
Dim i As Long
Dim iRow As Long, iCol As Long
Dim NumFichier As Integer
Dim Separateur As String * 1

' Séparateur Tabulation
Separateur = Chr(9)

Cells.Clear
NumFichier = FreeFile
iRow = 1

Open NomFichier For Input As #NumFichier
Do While Not EOF(NumFichier)
iCol = 1
Line Input #NumFichier, Chaine
Ar = Split(Chaine, Separateur)
For i = LBound(Ar) To UBound(Ar)
Cells(iRow, iCol) = Ar(i)
iCol = iCol + 1
Next
iRow = iRow + 1
Loop
Close #NumFichier
End Function
 

Discussions similaires

Réponses
2
Affichages
493

Statistiques des forums

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