Mettre le nom du TXT importer / excel macro

Résolu
Marco -  
 Marco -
Bonjour,

Je souhaite intégrer le nom du fichier .txt que j'ouvre grace a une macro.
Merci de bien vouloir m'aider.

20 réponses

  1. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Bonjour,
    Rien compris... Explique !!
    A+
    0
    1. Marco
       
      LOL !!
      Bonjour,
      Alors dans une macro excel j'importe plusieurs fichiers .txt.
      Une fois trier je n'arrive pas à les retrouvé. Le seul moyen que je vois c'est de les chercher par rapport à leur noms d'origine (.txt).

      Je souhaite donc intégrer le nom des .txt dans ma macro d'importation.
      0
  2. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Une fois trier je n'arrive pas à les retrouvé. Les retrouver Où, sur le DD ?

    Le seul moyen que je vois c'est de les chercher par rapport à leur noms d'origine (.txt).
    Pour les noms c'est pas difficile suffit de les mettre dans un tableau, mais après..
    Les rechercher Où ?
    0
  3. Marco
     
    1ere étape: j'importe mes TXT grâce a une boucle (500 environ).2 versions différentes que par le nom . Le premier s'appelle toto1,2,3... et le deuxième tata1,2,3... mais on le même style mais au contenu dans leurs cellules différentes (valeurs).

    2eme étape : je trie ce que je viens d'importer dans un autre onglet par éléments (tous communs mais avec des valeurs différentes).

    Mon problème est que si il y a une valeur abhérente, je ne peux pas retrouvé si c'est un toto ou un tata ainsi que son numéro 1,2,3...

    Ce nom et numéro se trouve dans le nom du TXT d'où mon voeux de vouloir importer le nom du TXT avec mes valeurs.
    0
  4. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Si j'ai bien compris !!
    Dan la boucle qui importe les fichiers et les met dans une feuille, pourquoi pas mettre une colonne en plus avec le nom du fichier et étendre le tri à cette colonne ?
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Marco
     
    Exactement !!
    Le tri j'arriverais à le faire mais pour importer le nom du fichier je ne vois pas comment faire.
    Merci de votre aide.
    0
  7. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Beh pour l'importer.... tu dois quand même connaître sont nom !!
    0
  8. Marco
     
    Non pas forcément.Il me faut l'emplacement de tous les TXT.

    Par contre pour en retrouver un facilement parmi 500 TXT ca serait plus simple que j'ai son nom dans le tri de la deuxième étape.
    0
  9. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Ont va pas tourner en rond indéfiniment...
    Montre la macro qui importe tes 500 fichiers.
    0
  10. Marco
     
    La voici. Elle fait que importer !!
    Une autre tri tout.

    Sub Test()

    Dim Fichier As String, Chemin As String
    Dim i As Long

    'Répertoire contenant les fichiers
    Chemin = "C:\Boulot Macro"
    Fichier = Dir(Chemin & "\*.txt")

    'Boucle sur les fichiers
    Do While Fichier <> ""

    i = Range("A65536").End(xlUp).Row + 1
    ImportText Chemin & "\" & Fichier, Cells(i, 1)

    Fichier = Dir
    Loop
    End Sub

    Sub ImportText(NomFichier As Variant, Cible As Range)
    Dim QT As QueryTable

    Set QT = ActiveSheet.QueryTables.Add(Connection:="TEXT;" & _
    NomFichier, Destination:=Cible)

    With QT
    'Définit les séparateur de colonnes dans le fichier txt
    .TextFileOtherDelimiter = ";"
    .TextFileSemicolonDelimiter = True
    .TextFileTextQualifier = xlTextQualifierDoubleQuote
    .Refresh
    End With
    Columns("A:A").Select
    Selection.Replace What:="/", Replacement:=".", LookAt:=xlPart, _
    SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
    ReplaceFormat:=False

    End Sub
    0
  11. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
        Do While fichier <> "" 
         
            i = Range("A65536").End(xlUp).Row + 1 
            ImportText Chemin & "\" & fichier, Cells(i, 1) 
    'AJOUTER 
            Range(Cells(i, 1), Cells(i, Cells(i, 1).End(xlLeft).Columns)) = fichier 
    
            fichier = Dir 
        Loop


    Je ne sais pas tester vu que j'ai pas toutes les indications.
    tu dis.
    .
    L'expérience instruit plus sûrement que le conseil. (André Gide)
    Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
    0
  12. Marco
     
    Alors si j'ajoute la ligne, il me dit erreur 1004 et ne boucle plus mes TXT
    0
  13. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Remplacer xlLeft par xlToLeft
    0
  14. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Décidemment c'est pas mon jour...
    Faut pas de S à Column et faut mettre +1
    La ligne complète..
    Range(Cells(i, 1), Cells(i, Cells(i, 1).End(xlToLeft).Column + 1)) = Fichier
    Cette fois-ci j'ai tester :-D

    L'expérience instruit plus sûrement que le conseil. (André Gide)
    Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
    0
  15. Marco
     
    Alors ca me remplace la premiere donnée de mon TXT et ca me le remet sur la case à côté.
    0
  16. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Grrr... beh oui... c'est pas mon jour..(sorry)
    Remplacer la ligne par...
    Cells(i, Cells(i, 1).End(xlToRight).Column + 1) = Fichier


    A+
    0
  17. lermite222 Messages postés 9042 Statut Contributeur 1 199
     
    Pourtant cette fois c'est la bonne formule..
    essaye avec,
    ActiveSheet.Cells(i, Cells(i, 1).End(xlToRight).Column + 1).value = Fichier
    Si ça va pas..
    Tu sélectionne cette ligne.
    Tu tape F9 (la ligne va se colorer en brun.
    Tu lance ta macro.
    Dans la fenêtre Exécution (si elle n'est pas affichée tu l'ouvre (Ctrl+G)
    Tu tape
    Print ActiveSheet.name
    Et voir si c'est bien le nom de l'onglet où tu copie tout.
    L'expérience instruit plus sûrement que le conseil. (André Gide)
    Si tu te cognes à un pot et que ça sonne creux, c'est pas forcément le pot qui est vide. ;-)(Confucius)
    0
  18. Marco
     
    En effet c'est bien le nom de mon premier onglet
    0
  19. Marco
     
    Trouvé !! Columns + 2 me convient très bien.
    Merci beaucoup pour ton aide
    0