Importation fichier txt délimité par "|" en VBA

Soleil11

XLDnaute Occasionnel
Bonjour,

J'essaie d'importer les données d'un fichier TXT delimité par un "|" dans un fichier Excell mais cela ne marche pas. Comment puis-je importé un fichier avec délimitation en pipe "|". Pourriez-vous m'aider avec le code ci-dessous. Actuellement le code ci-dessous importe les données que dans la colonne A, et j'aimerait qu'il importe les données selon la délimitation choisie "|" dans les différentes colonnes de mon fichier excell.

Code:
Sub ExtracTXTfile()

Dim Repertoire As String, Fichier As String
Dim strFullName As Variant
Dim Cn As Object, Rs As Object

'Sélection du ficher
strFullName = Application.GetOpenFilename("Fichiers textes (*.txt),*.txt", , "Sélectionnez un fichier :")

'On sort si aucun fichier n'est sélectionné
If strFullName = False Then Exit Sub

Application.ScreenUpdating = False
Fichier = Dir(strFullName)
Repertoire = Left(strFullName, Len(strFullName) - (Len(Fichier) + 1))


'Connection
Set Cn = CreateObject("ADODB.Connection")
Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Repertoire & ";" & _
"Extended Properties=""text;HDR=yes;FMT=Delimited(|)"""

'Requete
Set Rs = CreateObject("ADODB.Recordset")
Rs.Open "SELECT * FROM [" & Fichier & "]", Cn, 3, 1, 1

'boucle sur le résultat de la requete
While Not Rs.EOF
'Ajout Feuille
Worksheets.Add
'Ecriture des données dans la feuille
'65536 spécifie le nombre de lignes par feuille(à toi de choisir le nombre)
ActiveSheet.Range("A1").CopyFromRecordset Rs, 300000
Wend

Rs.Close
Set Rs = Nothing
Cn.Close
Set Cn = Nothing
Application.ScreenUpdating = True

End Sub

Merci d'avance.

Soleil11
 

Soleil11

XLDnaute Occasionnel
Re : Importation fichier txt délimité par "|" en VBA

Bonjour,

J'essaie d'importer les données d'un fichier TXT delimité par un "|" dans un fichier Excell mais cela ne marche pas. Comment puis-je importé un fichier avec délimitation en pipe "|". Pourriez-vous m'aider avec le code ci-dessous. Actuellement le code ci-dessous importe les données que dans la colonne A, et j'aimerait qu'il importe les données selon la délimitation choisie "|" dans les différentes colonnes de mon fichier excell.

Code:
Sub ExtracTXTfile()

Dim Repertoire As String, Fichier As String
Dim strFullName As Variant
Dim Cn As Object, Rs As Object

'Sélection du ficher
strFullName = Application.GetOpenFilename("Fichiers textes (*.txt),*.txt", , "Sélectionnez un fichier :")

'On sort si aucun fichier n'est sélectionné
If strFullName = False Then Exit Sub

Application.ScreenUpdating = False
Fichier = Dir(strFullName)
Repertoire = Left(strFullName, Len(strFullName) - (Len(Fichier) + 1))


'Connection
Set Cn = CreateObject("ADODB.Connection")
Cn.Open "Provider=Microsoft.Jet.OLEDB.4.0;" & _
"Data Source=" & Repertoire & ";" & _
"Extended Properties=""text;HDR=yes;FMT=Delimited(|)"""

'Requete
Set Rs = CreateObject("ADODB.Recordset")
Rs.Open "SELECT * FROM [" & Fichier & "]", Cn, 3, 1, 1

'boucle sur le résultat de la requete
While Not Rs.EOF
'Ajout Feuille
Worksheets.Add
'Ecriture des données dans la feuille
'65536 spécifie le nombre de lignes par feuille(à toi de choisir le nombre)
ActiveSheet.Range("A1").CopyFromRecordset Rs, 300000
Wend

Rs.Close
Set Rs = Nothing
Cn.Close
Set Cn = Nothing
Application.ScreenUpdating = True

End Sub

Merci d'avance.

Soleil11

Rebonjour,

J'ai importé le fichier txt dans les pièces jointes.

Merci encore de votre aide.

Soleil11:confused:
 

Pièces jointes

  • Test.txt
    944 bytes · Affichages: 80
  • Test.txt
    944 bytes · Affichages: 87
  • Test.txt
    944 bytes · Affichages: 85

Soleil11

XLDnaute Occasionnel
Re : Importation fichier txt délimité par "|" en VBA

Rebonjour,

J'ai oublié de répondre à vos deux questions, oui j'arrive à l'importer manuellement en délimitant moi même le fichier avant de l'importer sur Excell. Concernant votre deuxième question je ne suis pas sûre de comprendre pourquoi je dois utiliser l'enregistreur de macro.

Bonne journée.

Soleil11
 

ERIC S

XLDnaute Barbatruc
Re : Importation fichier txt délimité par "|" en VBA

Re

en utilisant l'enregistreur de macro (ouverture fichier txt, copie, fermeture txt) j'obtiens

Code:
    ChDir "C:\Users\EricCathy\Desktop\essais XL"
    Workbooks.OpenText Filename:= _
        "C:\Users\EricCathy\Desktop\essais XL\importTest.txt", Origin:=-535, _
        StartRow:=1, DataType:=xlDelimited, TextQualifier:=xlDoubleQuote, _
        ConsecutiveDelimiter:=False, Tab:=True, Semicolon:=False, Comma:=False _
        , Space:=False, Other:=True, OtherChar:="|", FieldInfo:=Array(Array(1, 1 _
        ), Array(2, xlSkipColumn), Array(3, 1), Array(4, 1), Array(5, 1), Array(6, 1), Array(7, 1), Array(8, 1), _
        Array(9, 1)), TrailingMinusNumbers:=True
    Columns("A:I").Select
    Selection.Copy
    Windows("Classeur1").Activate
    Range("A1").Select
    ActiveSheet.Paste
    Application.CutCopyMode = False
    Windows("importTest.txt").Activate
    ActiveWindow.Close
j'ai juste modifié Array(2, 1), en Array(2, xlSkipColumn), pour vérifier la possibilité de ne pas sélectionner une colonne et vidé le presse papier en fin de macro

là je vais y aller, j'espère que cela te donne une piste
 

Discussions similaires

Réponses
2
Affichages
309

Statistiques des forums

Discussions
314 628
Messages
2 111 337
Membres
111 104
dernier inscrit
JEMADA