Problème d'importation txt --> xls

Blotto

XLDnaute Nouveau
Bonjour a tous,

J'ai un gros problème pour convertir un fichier txt avec séparateur en fichier excel, je vous explique mon problème :

J'ai un fichier texte sous cette forme

NOM; COLUSSI
PRENOM; Julien
TELEPHONE; 04 72 35 35 35
DATE DE LIVRAISON; 7/28/2005


GRAVITE DE LA PLAINTE; plainte 3

PRODUIT CONCERNER; Produit B



NOM; GARNIER
PRENOM; Laurent
TELEPHONE; 04 72 35 35 35
DATE DE LIVRAISON; 11/26/2007


GRAVITE DE LA PLAINTE; plainte 4

PRODUIT CONCERNER; Produit B

Je voudrais les importer dans un fichier excel pour qu'il rentre les informations dans un tableau, je l'aurai bien fait manuellement cependant ce fichier texte contient plus de 2000 plaintes.

Je ne connais pas la marche a suivre pour effectuer cette tache je vous serez gréer de bien vouloir me venir en aide

PS: ne vous inquiéter pas les nom sont fictifs

Merci par avance pour vos lumière sur ce sujet.
 

Softmama

XLDnaute Accro
Re : Problème d'importation txt --> xls

Bonjour Blotto

Tu fais Fichier/ouvrir. Dans type de fichiers, tu sélectionne fichiers texte, puis tu ouvres ton fichier *.txt

Là, l'assistant d'importation de texte s'ouvre. Tu gardes "Délimité" et cliques suivant. Dans les séparateurs, tu choisis Tabulation et Point virgule, puis clique Terminer.
 
Dernière édition:

Blotto

XLDnaute Nouveau
Re : Problème d'importation txt --> xls

Bonjour Softmama et merci pour ta réponse rapide,

J'ai reussi a l'importer cependant je voudrais le mettre en forme dans un tableau et c'est la la grande difficulté de mon probleme



Merci pour votre aide
 

mromain

XLDnaute Barbatruc
Re : Problème d'importation txt --> xls

Bonjour Blotto, Softmama,


Sinon, voici une macro qui a l'air de fonctionner :
VB:
Sub ImportTxt()
Dim fichierTxt As Object, pathFichierTxt As String, ligneTxt As String, ligneEcriture As Long, feuilleDest As Worksheet
    
    'VARIABLES A ADAPTER
    'chemin du fichier texte
    pathFichierTxt = "E:\XLS\test\data.txt"
    'feuille destination - où les données vont être importées
    Set feuilleDest = ThisWorkbook.ActiveSheet
    
    'initialiser la feuille d'import
    feuilleDest.Cells.Clear
    feuilleDest.Range("A1").Value = "NOM"
    feuilleDest.Range("B1").Value = "PRENOM"
    feuilleDest.Range("C1").Value = "TELEPHONE"
    feuilleDest.Range("D1").Value = "DATE DE LIVRAISON"
    feuilleDest.Range("E1").Value = "GRAVITE DE LA PLAINTE"
    feuilleDest.Range("F1").Value = "PRODUIT CONCERNE"
    ligneEcriture = 1
    
    'ouvrir le fichier texte (en lecture)
    Set fichierTxt = CreateObject("Scripting.FileSystemObject").OpenTextFile(pathFichierTxt, 1)
    
    'boucler sur chaque ligne jusqu'à la finb du fichier
    While Not fichierTxt.AtEndOfStream
        'récupérer la ligne courante
        ligneTxt = fichierTxt.ReadLine
        
        'si la ligne commence par "NOM; "
        If ligneTxt Like "NOM; *" Then
            'incrémenter la ligne d'écriture
            ligneEcriture = ligneEcriture + 1
            'écrire dans la colonne A le reste de la ligne
            feuilleDest.Range("A" & ligneEcriture).Value = Strings.Replace(ligneTxt, "NOM; ", "")
            
        'sinon, si la ligne commence par "PRENOM; "
        ElseIf ligneTxt Like "PRENOM; *" Then
            'écrire dans la colonne B le reste de la ligne
            feuilleDest.Range("B" & ligneEcriture).Value = Strings.Replace(ligneTxt, "PRENOM; ", "")
            
        'sinon, si la ligne commence par "TELEPHONE; "
        ElseIf ligneTxt Like "TELEPHONE; *" Then
            'écrire dans la colonne C le reste de la ligne
            feuilleDest.Range("C" & ligneEcriture).Value = Strings.Replace(ligneTxt, "TELEPHONE; ", "")
            
        'sinon, si la ligne commence par "DATE DE LIVRAISON; "
        ElseIf ligneTxt Like "DATE DE LIVRAISON; *" Then
            'écrire dans la colonne D le reste de la ligne
            feuilleDest.Range("D" & ligneEcriture).Value = Strings.Replace(ligneTxt, "DATE DE LIVRAISON; ", "")
            
        'sinon, si la ligne commence par "GRAVITE DE LA PLAINTE; "
        ElseIf ligneTxt Like "GRAVITE DE LA PLAINTE; *" Then
            'écrire dans la colonne E le reste de la ligne
            feuilleDest.Range("E" & ligneEcriture).Value = Strings.Replace(ligneTxt, "GRAVITE DE LA PLAINTE; ", "")
            
        'sinon, si la ligne commence par "PRODUIT CONCERNER; "
        ElseIf ligneTxt Like "PRODUIT CONCERNER; *" Then
            'écrire dans la colonne F le reste de la ligne
            feuilleDest.Range("F" & ligneEcriture).Value = Strings.Replace(ligneTxt, "PRODUIT CONCERNER; ", "")
        End If
    Wend
    
    'fermer le fichier texte - détruire l'objet
    fichierTxt.Close: Set fichierTxt = Nothing
    
End Sub
a+
 
Dernière édition:

Statistiques des forums

Discussions
312 758
Messages
2 091 786
Membres
105 074
dernier inscrit
JPATOUNE