Mettre le nom du TXT importer / excel macro

Résolu
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. Contributeur
    Bonjour,
    Rien compris... Explique !!
    A+
    0
    1. 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. Contributeur
    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
    1. 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
      1. Contributeur
        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
        1. 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
          1. Contributeur
            Beh pour l'importer.... tu dois quand même connaître sont nom !!
            0
            1. 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
              1. Contributeur
                Ont va pas tourner en rond indéfiniment...
                Montre la macro qui importe tes 500 fichiers.
                0
                1. 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
                  1. Contributeur
                        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
                    1. Alors si j'ajoute la ligne, il me dit erreur 1004 et ne boucle plus mes TXT
                      0
                      1. Contributeur
                        Remplacer xlLeft par xlToLeft
                        0
                        1. Contributeur
                          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
                          1. Alors ca me remplace la premiere donnée de mon TXT et ca me le remet sur la case à côté.
                            0
                            1. Contributeur
                              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
                              1. Contributeur
                                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
                                1. En effet c'est bien le nom de mon premier onglet
                                  0
                                  1. Trouvé !! Columns + 2 me convient très bien.
                                    Merci beaucoup pour ton aide
                                    0