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
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
A voir également:
- Regrouper fichiers txt sur xls
- Comment regrouper des pdf - Guide
- Wetransfer gratuit fichiers lourd - Guide
- Renommer plusieurs fichiers en même temps - Guide
- Xls viewer - Télécharger - Tableur
- Explorateur de fichiers - Guide
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
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!
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!
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
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
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
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
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
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
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 !
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 !
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
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.
http://www.cjoint.com/c/FAtnXusWBtQ
Ensuite si cela est résolu, tu fais un nouveau post avec ta nouvelle demande.
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
19 janv. 2016 à 15:27
Mais où est-il ce nom?
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
19 janv. 2016 à 15:31
Tu veux le mettre où?
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
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?
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?
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
19 janv. 2016 à 17:44
Je comprends mieux maintenant!
Voilà le nouveau code:
Tu peux toujours garder la combobox pour naviguer dans tes onglets. si cela t’intéresse, je te donnerai le code
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
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
19 janv. 2016 à 18:00
Tiens voilà le code pour sélectionner un onglet:
Voilà
@+ Le Pivert
Private Sub CommandButton1_Click() Dim Index As Integer Range("A1").Value = "Sommaire" Index = ComboBox1.ListIndex Sheets(Index + 1).Select End Sub
Voilà
@+ Le Pivert
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
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
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
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
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?
sans abuser
est-ce que la macro pourrait m'importer d'un coup tous les fichiers txt d'un même dossier?
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
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à
Voilà
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
21 janv. 2016 à 10:40
Voilà:
http://www.cjoint.com/c/FAvjNNWvQbQ
http://www.cjoint.com/c/FAvjNNWvQbQ
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
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)
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)
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
21 janv. 2016 à 11:20
http://www.cjoint.com/c/FAvktYgiWMP
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
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
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
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
21 janv. 2016 à 13:50
elle devient extraordinaire cette macro
19 janv. 2016 à 12:19
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 :)