Regrouper fichiers txt sur xls

Résolu/Fermé
746emilie - 19 janv. 2016 à 11:47
746emilie Messages postés 40 Date d'inscription mardi 19 janvier 2016 Statut Membre Dernière intervention 11 février 2016 - 21 janv. 2016 à 13:50
Bonjour,

J'aimerais regrouper différents fichiers txt dans un classeur xls.

Les fichiers txt se trouveront tous dans le même dossier.

Les fichiers txt ont toujours la même structure, même nombre de lignes et de colonnes. Ils n'ont qu'un onglet. Attention, le nom de l'onglet est à importer aussi.

Dans excel, je voudrais: 1 seul classeur, une feuille par fichier texte. Le nom de l'onglet doit se retrouver sur la feuille (il peut pex écraser le contenu en A1 sur chacun des onglets).

Et il faudrait fonctionner par batch, qu'une petite macro me calcule tout ça sur tous les fichiers txt du dossier, par exemple...

C'est possible?

Merciii!





A voir également:

9 réponses

cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
19 janv. 2016 à 12:00
Bonjour,

Voir ceci pour importer des fichiers texte sur une feuille de calcul:

https://forums.commentcamarche.net/forum/affich-33039694-recuperation-donnees-avec-macro#p33039841

Par contre quand je lis ceci, j'ai un doute sur les fichiers texte (.txt)

Les fichiers txt ont toujours la même structure, même nombre de lignes et de colonnes. Ils n'ont qu'un onglet. Attention, le nom de l'onglet est à importer aussi.

Affaire a suivre!
0
le nom de l'onglet, je dois l'indiquer manuellement lorsque j'exporte les fichiers txt
donc on ne le retrouve pas dans le fichier en lui même
j'ai trouvé cette formule , elle marche pour mettre le nom de l'onglet en A1, ce que je ferai dans le fichier final
=STXT(CELLULE("nomfichier");TROUVE("]";CELLULE("nomfichier"))+1;32)
Pour le reste, je nage :)
0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
19 janv. 2016 à 13:02
Essaie ceci:

Sub Recup()
 Dim Fichier, feuille As String
 feuille = InputBox("Entrez le nom du nouvel onglet", "Onglet", "mafeuille")
    Fichier = Application.GetOpenFilename("Text Files (*.txt), *.txt")
    If Fichier <> False Then
       Sheets.Add.Name = feuille
       Worksheets(feuille).QueryTables.Add("TEXT;" & Fichier, [B1]).Refresh 'à adapter
      Else
        MsgBox "Pour importer des données dans Excel, vous devez choisir un fichier texte !"
    End If
End Sub

0
Merci de m'aider le Pivert!
que dois-je mettre à la place de "à adapter" et "Pour importer des données dans Excel, vous devez choisir un fichier texte !"?
0
INCROYABLE PIVERT!!!!
Ca marche !!!!
MERCI!
Y aurait-il moyen d'avoir un menu déroulant pour nommer la feuille quand il me le demande (entrer le nom du nouvel onglet--> menu déroulant ou bien il m'enverrait dans le dossier pour que je puisse choisir moi-même le nom du fichier txt en cliquant dessus)?

pour limiter le risque d'erreur à la retranscription
0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
19 janv. 2016 à 14:06
Ajouter une ComboBox dans l'UserForm avec ce code:

Option Explicit
Private Sub CommandButton1_Click()
Recup
End Sub
Sub Recup()
 Dim Fichier
Fichier = Application.GetOpenFilename("Text Files (*.txt), *.txt")
    If Fichier <> False Then
  Sheets.Add.Name = ComboBox1.Text
       Worksheets(ComboBox1.Text).QueryTables.Add("TEXT;" & Fichier, [B1]).Refresh 'à adapter le cellule de reception
       Else
        MsgBox "Pour importer des données dans Excel, vous devez choisir un fichier texte!", vbExclamation, "Importer fichier texte"
    End If
End Sub
Private Sub UserForm_Initialize()
'adapter le nom des onglets
ComboBox1.AddItem ("mafeuille_1")
ComboBox1.AddItem ("mafeuille_2")
ComboBox1.AddItem ("mafeuille_3")
ComboBox1.AddItem ("mafeuille_4")
ComboBox1.ListIndex = 0
End Sub

0
je ne sais pas faire marcher celle-là...
"erreur de compilation:
variable non définie"
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Une autre chose me tracasse

je dois reprendre sur chaque onglet créé avec ta formule les data de F19 en F51: données de ce genre 4529/4557

puis, les convertir en 2 colonnes

ensuite, les additionner (en gardant les données séparées pour chaque onglet)

j'ai créé une feuille en dernier avec une macro MAIS je ne sais pas comment désigner des onglets qui VONT être créés mais ne sont pas encore existants !
0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
19 janv. 2016 à 14:51
On va procéder par ordre. Voici un fichier pour importer des fichiers textes dans un classeur.

http://www.cjoint.com/c/FAtnXusWBtQ

Ensuite si cela est résolu, tu fais un nouveau post avec ta nouvelle demande.
0
zut, j'ai cru que c'était bon MAIS il ne m'importe pas le nom de l'onglet :(
0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
19 janv. 2016 à 15:27
Mais où est-il ce nom?
0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
19 janv. 2016 à 15:31
Tu veux le mettre où?
0
le nom, c'est le nom du fichier texte
si on l'ouvre avec xls, il se met dans l'onglet
0
746emilie Messages postés 40 Date d'inscription mardi 19 janvier 2016 Statut Membre Dernière intervention 11 février 2016
19 janv. 2016 à 16:45
Pivert, je suis membre maintenant ! :)
il faudrait que le nom apparaisse dans ton sommaire à la place de feuille 1,2,3 et dans les onglets feuille 1,2,3
faisable tu crois?
0
PIVERT , ca marche!

Je conseille le lien, super pratique

Thanks
0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
19 janv. 2016 à 17:44
Je comprends mieux maintenant!

Voilà le nouveau code:

Option Explicit
 Dim onglet As Boolean
 Dim Fichier
 Dim Tableau() As String
 Dim pos As Integer
 Dim nomfichier As String
Sub Recup_import()
'on recherche le fichier texte
Fichier = Application.GetOpenFilename("Text Files (*.txt), *.txt")
    If Fichier <> False Then
    'on récupere le nom du fichier texte sans son extension
 nomfichier = Mid(Fichier, InStrRev(Fichier, "\") + 1)
pos = InStr(1, nomfichier, ".", 1)
       nomfichier = Left(nomfichier, pos - 1)
       'on vérifie si il n'y a pas d'onglet portant le même nom
       onglet = True
 Doublons
If onglet = False Then Exit Sub
'on ajoute un onglet
    Sheets.Add.Move After:=Sheets(Sheets.Count)
Sheets(Sheets.Count).Name = nomfichier
'on met le texte sur la feuille
       Worksheets(nomfichier).QueryTables.Add("TEXT;" & Fichier, [B1]).Refresh 'à adapter le cellule de reception
       Range("A1").Value = nomfichier
       Else
        MsgBox "Pour importer des données dans Excel, vous devez choisir un fichier texte!", vbExclamation, "Importer fichier texte"
    End If
    Sheets("Sommaire").Select
   Range("A" & Rows.Count).End(xlUp).Offset(1, 0) = nomfichier
    End Sub
Private Sub CommandButton2_Click()
Recup_import
End Sub
'http://silkyroad.developpez.com/VBA/ControlesUserForm/#LII-F
Private Sub UserForm_Initialize()
    Dim j As Integer
    'Récupère les données de la colonne A...
    For j = 1 To Range("A65536").End(xlUp).Row
        ComboBox1 = Range("A" & j)
        '...et filtre les doublons
        If ComboBox1.ListIndex = -1 Then ComboBox1.AddItem Range("A" & j)
    Next j
    ComboBox1.ListIndex = 0
End Sub
'empecher de renommer onglet du même nom
Private Sub Doublons()
Dim ctr
For ctr = 1 To Sheets.Count
  If Sheets(ctr).Name = nomfichier Then
MsgBox "Un onglet porte déjà ce nom!", vbExclamation, "Ajouter onglet"
  onglet = False
  End If
  Next
End Sub


Tu peux toujours garder la combobox pour naviguer dans tes onglets. si cela t’intéresse, je te donnerai le code
0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
19 janv. 2016 à 18:00
Tiens voilà le code pour sélectionner un onglet:

Private Sub CommandButton1_Click()
Dim Index As Integer
Range("A1").Value = "Sommaire"
Index = ComboBox1.ListIndex
 Sheets(Index + 1).Select
End Sub


Voilà

@+ Le Pivert
0
746emilie Messages postés 40 Date d'inscription mardi 19 janvier 2016 Statut Membre Dernière intervention 11 février 2016
Modifié par 746emilie le 21/01/2016 à 10:30
Salut Pivert

j'ai essayé ton code, il m'affiche 'erreur d'exécution 9: l'indice n'appartient pas à la sélection'
tu sais ce que ça veut dire?
Emi
0
746emilie Messages postés 40 Date d'inscription mardi 19 janvier 2016 Statut Membre Dernière intervention 11 février 2016
21 janv. 2016 à 10:33
ca devient fort fort bien!!!

sans abuser
est-ce que la macro pourrait m'importer d'un coup tous les fichiers txt d'un même dossier?
0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
21 janv. 2016 à 10:45
Pour faire cela il faut que tous tes fichiers texte soient dans le même dossier. Faire un boucle sur les fichiers. il suffit ensuite d'adapter ta macro d'importation.

Voilà
0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
21 janv. 2016 à 10:40
Voilà:


http://www.cjoint.com/c/FAvjNNWvQbQ
0
746emilie Messages postés 40 Date d'inscription mardi 19 janvier 2016 Statut Membre Dernière intervention 11 février 2016
21 janv. 2016 à 11:17
non, lui me permet d'aller direct à l'onglet que je viens de créer
moi ce que je voudrais, c'est pouvoir sélectionner tous les fichiers txt d'un coup pour tous les importer en même temps (= appliquer 1 fois le code plutôt que 10)
0
746emilie Messages postés 40 Date d'inscription mardi 19 janvier 2016 Statut Membre Dernière intervention 11 février 2016
21 janv. 2016 à 11:20
http://www.cjoint.com/c/FAvktYgiWMP
0
cs_Le Pivert Messages postés 7904 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 14 août 2024 729
21 janv. 2016 à 12:25
Voilà un exemple avec les fichiers texte dans le même dossier que le classeur. Si le dossier des fichiers texte est indépendant du classeur, il faudra changer le chemin:

http://www.cjoint.com/c/FAvlwf26MCQ

Je ne peux pas travailler sur ton classeur car je ne suis pas dans ton environnement. C'est à toi d'adapter mon exemple à ton environnement, les chemins ne sont pas les mêmes.

@+ Le Pivert
0
746emilie Messages postés 40 Date d'inscription mardi 19 janvier 2016 Statut Membre Dernière intervention 11 février 2016
21 janv. 2016 à 13:50
elle devient extraordinaire cette macro
0