Macro importer fichier en saisissant son nom

Elodie195

XLDnaute Occasionnel
Bonjour,

Je sollicite votre aide pour une macro Excel :)

J'ai un fichier Excel : Import_test.xls

A l'intérieur, je souhaite importer un fichier texte (Fichier_a_importer.txt)

Le fichier texte se trouve toujours dans C:/TEMP/

J'aimerais l'importer dans mon fichier Excel en saisissant son nom dans une cellule puis de valider un bouton pour l'import.

Par exemple: en C5, je saisis "Fichier_a_importer" puis je clique sur le bouton "valider"

Cela a pour but d'importer en brut les données du fichier texte dans le deuxième onglet.

Merci d'avance de votre aide.

Bonne journée.
 

Pièces jointes

  • Import_test.xls
    31.5 KB · Affichages: 34
  • Fichier_a_importer.zip
    342 bytes · Affichages: 30

Marc L

XLDnaute Occasionnel
Re : Macro importer fichier en saisissant son nom


Bonjour,

une p'tite démonstration même si rien n'a été inscrit en C5 !

Code:
Sub Demo()
    Const DOSSIER = "C:\TEMP\"
          FICHIER = Feuil1.[C5].Value

    If Dir(DOSSIER & FICHIER) = "" Or FICHIER = "" Then
          ChDrive DOSSIER:  ChDir DOSSIER
                  FICHIER = Application.GetOpenFilename("Fichiers texte (*.txt), *.txt")
               If FICHIER = False Then Exit Sub
                       SP = Split(FICHIER, "\")
        Feuil1.[C5].Value = SP(UBound(SP))
    Else
           FICHIER = DOSSIER & FICHIER
    End If

    With Feuil2
        .UsedRange.Clear

        With .QueryTables.Add("TEXT;" & FICHIER, .[A2])
               .AdjustColumnWidth = False
                    .RefreshStyle = xlOverwriteCells
          .TextFileCommaDelimiter = True
        .TextFileDecimalSeparator = "."
               .TextFileParseType = xlDelimited
                .TextFilePlatform = 1252
           .TextFileTextQualifier = xlTextQualifierNone
        .Refresh False:   .Delete
        End With

        .Activate
    End With
End Sub
_______________________________________________________________________________
Merci de cliquer sur J'aime ce post pour chaque message ayant aidé …

_______________________________________________________________________________
Je suis Charlie - Je suis Bardo
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : Macro importer fichier en saisissant son nom

Bonjour Elodie195, Marc L,

Code:
Sub Bouton1_Cliquer()
Dim wb As Workbook
Application.ScreenUpdating = False
On Error Resume Next 'si le fichier n'est pas trouvé
With Feuil2 'CodeName de la feuille de destination
  .Cells.Delete 'RAZ
  Set wb = Workbooks.Open("C:\TEMP\" & [C5] & ".txt")
  wb.Sheets(1).UsedRange.Copy .[A1]
  wb.Close
  .Columns(1).TextToColumns .[A1], xlDelimited, Comma:=True
  .Cells.Replace ".", ".", xlPart
  .Columns.AutoFit 'ajustement des colonnes facultatif
  If Application.CountA(.Cells) Then .Activate
End With
End Sub
A+
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : Macro importer fichier en saisissant son nom

Bonsoir à tous


job75
Il y a une raison pour tu passes par le Replace plutôt que directement ?
Code:
.Columns(1).TextToColumns .[A1], xlDelimited, Comma:=True, DecimalSeparator:=".", TrailingMinusNumbers:=True
 

Marc L

XLDnaute Occasionnel
Re : Macro importer fichier en saisissant son nom



Et [highlight]Worbooks.OpenText[/code] = Worbooks.Open + TextToColumns …


_______________________________________________________________________________
Comme la vitesse de la lumière est supérieure à celle du son, certains ont l'air brillant avant d'avoir l'air con !

 

Marc L

XLDnaute Occasionnel

En VBA Excel, j'ai sous le coude au moins cinq méthodes pour lire un fichier texte
sans compter les dérivées, tout dépend donc du contexte !

Dans le cas de cette discussion, en consultant l'aide VBA de la méthode Workbooks.OpenText

VB:
    Workbooks.OpenText "C:\Temp\" & Feuil1.[C5].Value, xlWindows, , xlDelimited, _
                       xlTextQualifierNone, Comma:=True, DecimalSeparator:="."
… tout comme celle de la méthode Workbooks.Open (sans recourir à TextToColumns !) :

[HIGHLIGHT]Workbooks.Open "C:\Temp\" & Feuil1.[C5].Value, , , 2[/code] …


J'ai préféré QueryTables vu la demande initiale d'intégrer directement les données dans une feuille.

_______________________________________________________________________________
Vous appréciez ? Alors merci de cliquer sur J'aime ce post !

_______________________________________________________________________________
L'avenir n'appartient pas qu'à ceux se levant tôt mais surtout à ceux se donnant la peine de lire …
 

Discussions similaires

Réponses
22
Affichages
826
Réponses
8
Affichages
431
Réponses
10
Affichages
572

Membres actuellement en ligne

Statistiques des forums

Discussions
312 493
Messages
2 088 956
Membres
103 990
dernier inscrit
lamiadebz