Importer un fichier texte parser dans des emplacements fixes fichier Excel

xorre

XLDnaute Junior
Bonjour à tous,

Le titre parle de lui même et je vais essayer de décrire ce que je cherche à faire.

J'ai aujourd'hui de nombreux fichiers textes que j'incorpore dans Excel à la mano avec conversion des données etc etc

Ces actions sont très chronophages et en cherchant un peu sur le net, j'ai vu que des choses étaient possibles via VBA

Ce que je cherche à faire :

-- CONSTAT --
-> Fichiers textes auront toujours le même nom
-> La structure des données sera toujours la même
-> L'endroit ou je souhaite les implanter est aussi identique

Aller chercher les fichiers dans une variable ( Chemin d'accès )
Pour chaque nom de fichier et selon son nom récupére la donnée et fait donnée 1 => A1 , parsage pris en compte , donnée 2 => A2
passer à la ligne suivante Donnée 3 => B1 , parsage pris en compte, donnée 4 => B2 etc. etc. jusqu'à ce que l'ensemble du fichier texte soit parcouru.

Ces fichiers seront implémentés sur des feuilles différentes (Donc à prendre en compte)

Je vous joints deux fichiers textes pour exemple et un fichier excel ( sachant qu'au final je dois en avoir une vingtaine mais je pense pouvoir dupliquer comme il se doit après avoir eu un exemple.

En PJ :

Le fichier d'arrivée excel

Les fichiers que je cherche à récupérés au format Txt pour les implémentés. J'ai pris les premières lignes pour vous montrer

1-Test01.txt
IDCR00;COLUMN2
0039992;ECART CODE CHAINE
0003099;ECART TOP PERIODE
0000199;ECART TOP PERIODE
0006592;ECART CODE CHAINE
0008299;ECART TOP PERIODE


2-Test02.txt
COLUMN1;IDELN3;VANTFN;DAOZ01;TPPECR;IDCR00;VAVAUR
D & S ;00461595;CX;23/10/2014;Q;00461595;CX;
D & S ;00520395;CX;31/08/2014;M;00520395;

En attendant j'ai bien trouvé quelques exemples que j'essaye d'appliquer à ma feuille mais ce n'est jamais exactement pareille, et il est difficile de modeler le VBA existant :S

EN vous remerciant par avance

N'y connaissant pas grand chose je pars d'un existant :


mais je me retrouve avec une erreur sur shfichier

Code:
Dim r As Long, Cpt As Long

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

    Separateur = ";"

    Close
    NumFichier = FreeFile

    Open NomFichier For Input As #NumFichier
        Cpt = Cpt + 1
        Do While Not EOF(NumFichier)
            iCol = 1
            Line Input #NumFichier, Chaine
            Ar = Split(Chaine, Separateur)
            For i = LBound(Ar) To UBound(Ar)
                ShFichiers.Cells(r, iCol) = Ar(i)
                iCol = iCol + 1
            Next
            r = r + 1
        Loop
        Application.StatusBar = " Fichiers : " & Cpt
    Close #NumFichier
End Function

Sub OuvertureFichiersVoieA()
Dim fichier As Variant, i As Integer
    ChDir ThisWorkbook.Path
    fichier = Application.GetOpenFilename("Fichiers Texte,*.txt", 1, "Sélectionnez le fichier voie A", , True)
    If TypeName(fichier) = "Boolean" Then Exit Sub

    r = 3: Cpt = 2

    Application.ScreenUpdating = False
    For i = 1 To UBound(fichier)
        Lire fichier(i)
    Next i
    ShFichiers.Cells(40, 1) = fichier
    ShFichiers.Range("D1").Select
    Application.ScreenUpdating = True
End Sub
 

Pièces jointes

  • Nouveau.xlsx
    14.1 KB · Affichages: 32
  • Nouveau.xlsx
    14.1 KB · Affichages: 40
  • Nouveau.xlsx
    14.1 KB · Affichages: 45
Dernière édition:

Staple1600

XLDnaute Barbatruc
Dernière édition:

xorre

XLDnaute Junior
Re : Importer un fichier texte parser dans des emplacements fixes fichier Excel

Bonjour staple1600 et merci pour ta participation.

Pour te répondre, j'aimerai m'éviter l'ensemble des manipulations manuelles réalisés lors justement des étapes d'importation ( resélectionner les colonnes, le séparateur, la retransformation en texte )

car je dois importer de nombreux fichiers textes et toutes ces manipulations, qui je pense peuvent être automatisées sont chronophages et redondante (Aucune plus value ... )

Voilà l'intérêt d'essayer de passer par un VBA qui me sélectionnera mon nom de fichier et qui ira m'intégrer les données ou je le souhaite dans les onglets que je souhaite ...

Ca m'ennuie vraiment d'être une quiche en VBA mais je progresse doucement mais surement :)
(probablement pas assez pour faire encore ce que j'ai besoin mais faut bien commencer quelque part ...)


Les joies de l'enregistreur de macro que je ne conaissais pas !!

Code:
Sub Test()
'
' Test Macro
' Test Importation
'

'
    With ActiveSheet.QueryTables.Add(Connection:= _
        "TEXT;C:\Users\U47210\Desktop\AUTOMATISATION\1-Requetes sources\1-Test01.txt", _
        Destination:=Range("$B$14"))
        .Name = "1-Test01_1"
        .FieldNames = True
        .RowNumbers = False
        .FillAdjacentFormulas = False
        .PreserveFormatting = True
        .RefreshOnFileOpen = False
        .RefreshStyle = xlInsertDeleteCells
        .SavePassword = False
        .SaveData = True
        .AdjustColumnWidth = True
        .RefreshPeriod = 0
        .TextFilePromptOnRefresh = False
        .TextFilePlatform = 850
        .TextFileStartRow = 1
        .TextFileParseType = xlDelimited
        .TextFileTextQualifier = xlTextQualifierDoubleQuote
        .TextFileConsecutiveDelimiter = False
        .TextFileTabDelimiter = False
        .TextFileSemicolonDelimiter = True
        .TextFileCommaDelimiter = False
        .TextFileSpaceDelimiter = False
        .TextFileColumnDataTypes = Array(2, 2)
        .TextFileTrailingMinusNumbers = True
        .Refresh BackgroundQuery:=False
    End With
End Sub

question : comment modifier le activsheet en feuil précise + nom afin d'aller taper sur une nouvell sheet ? :)
Comment variabiliser mon chemin d'accès simplement ou comment variabiliser mon chemin d'accès en mettant le chemin d'accès dans une case spécifique d'une feuille spécifique ?


Je cherche en attendant
Merci d'avance !!
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Importer un fichier texte parser dans des emplacements fixes fichier Excel

Bonsoir à tous

xorre
Pour répondre à ceci
question : comment modifier le activsheet en feuil précise + nom afin d'aller taper sur une nouvell sheet ? :)
Comment variabiliser mon chemin d'accès simplement ou comment variabiliser mon chemin d'accès en mettant le chemin d'accès dans une case spécifique d'une feuille spécifique ?

Essaie un truc de ce genre
VB:
Sub TestII()
'
' Test Importation

Dim Chemin$, nomfichier$, nf As Worksheet

Chemin = "C:\Users\U47210\Desktop\AUTOMATISATION\1-Requetes sources\"
nomfichier = "1-Test01.txt"
'ou
'nomfichier = sheet(1).Range("A1").Text

Set nf = Sheets(2)
With nf.QueryTables.Add(Connection:="TEXT;" & Chemin & nomfichier, _
                Destination:=Range("$B$14"))
'ci-dessous le reste de ton code VBA
End Sub
 
Dernière édition:

xorre

XLDnaute Junior
Re : Importer un fichier texte parser dans des emplacements fixes fichier Excel

Bonjour à tous en ce début de semaine

- J'aimerais savoir comment réactualiser un TCD via VBA si je connais la première case du tableau exemple : $F$15 ?

- Je souhaiterais aussi savoir comment faire pour importer les valeurs du TCD ( exemple 1ere donnée feuille2 en G16 vers feuille 1 en A1 )

merci d'avance et bon courage en ce début de semaine :)
 

Staple1600

XLDnaute Barbatruc
Re : Importer un fichier texte parser dans des emplacements fixes fichier Excel

Bonjour à tous

xorre
Tes nouvelles questions n'ont rien à voir avec ce fil
Il serait plus judicieux d'ouvrir une nouvelle discussion (comme suggérée par la charte du forum), sinon risque de s’emmêler les pinceaux. ;)
 

Discussions similaires

Statistiques des forums

Discussions
311 726
Messages
2 081 955
Membres
101 852
dernier inscrit
dthi16088