VBA import fichier txt depuis un dossier
Résolu/Fermé
tchitchy
Messages postés
42
Date d'inscription
mercredi 28 avril 2010
Statut
Membre
Dernière intervention
22 avril 2022
-
22 avril 2022 à 12:20
tchitchy Messages postés 42 Date d'inscription mercredi 28 avril 2010 Statut Membre Dernière intervention 22 avril 2022 - 22 avril 2022 à 16:24
tchitchy Messages postés 42 Date d'inscription mercredi 28 avril 2010 Statut Membre Dernière intervention 22 avril 2022 - 22 avril 2022 à 16:24
A voir également:
- VBA import fichier txt depuis un dossier
- Fichier rar - Guide
- Comment ouvrir un fichier epub ? - Guide
- Comment réduire la taille d'un fichier - Guide
- Dossier appdata - Guide
- Ouvrir un fichier .bin - Guide
7 réponses
yg_be
Messages postés
23429
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 janvier 2025
Ambassadeur
1 559
22 avril 2022 à 12:48
22 avril 2022 à 12:48
bonjour,
Tu m'expliques pas comment le code pourrait déterminer quels fichiers traiter.
Merci d'utiliser les balises de code quand tu partages du code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
Tu m'expliques pas comment le code pourrait déterminer quels fichiers traiter.
Merci d'utiliser les balises de code quand tu partages du code: https://codes-sources.commentcamarche.net/faq/11288-les-balises-de-code
tchitchy
Messages postés
42
Date d'inscription
mercredi 28 avril 2010
Statut
Membre
Dernière intervention
22 avril 2022
2
22 avril 2022 à 13:10
22 avril 2022 à 13:10
Pardon désolé pour le code. Faut-il que je le remette avec les balises comme demandé (si oui, je choisis "basic" ?) ? Il s'agit d'un code en VBA sur excel.
Plus précisément, lorsque je lance le code, j'ai une fenêtre qui s'ouvre me demandant de sélectionner les fichiers txt à importer. J'aimerais pouvoir faire en sorte que la fenêtre ne s'ouvre pas et que ça m'importe directement les fichiers txt d'un dossier comme par exemple : "D:\Utilisateurs\Tchy\Bureau\test"
Plus précisément, lorsque je lance le code, j'ai une fenêtre qui s'ouvre me demandant de sélectionner les fichiers txt à importer. J'aimerais pouvoir faire en sorte que la fenêtre ne s'ouvre pas et que ça m'importe directement les fichiers txt d'un dossier comme par exemple : "D:\Utilisateurs\Tchy\Bureau\test"
yg_be
Messages postés
23429
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 janvier 2025
1 559
Modifié le 22 avril 2022 à 13:28
Modifié le 22 avril 2022 à 13:28
ceci est un exemple de code qui parcourt tous les fichiers .txt d'un dossier:
EDIT: pour le faire fonctionner, tu dois ajouter "Microsoft Scripting Runtime" dans les références de ton projet.
Dim nomdossier As String, nomcompletfichier As String Dim fso As Scripting.FileSystemObject, dossier As Scripting.Folder, fichier As Scripting.File nomdossier = ThisWorkbook.Path Set fso = New Scripting.FileSystemObject Set dossier = fso.GetFolder(nomdossier) For Each fichier In dossier.Files If Right(fichier.Name, 4) = ".txt" Then nomcompletfichier = nomdossier + "\" + fichier.Name Debug.Print nomcompletfichier ' Set xTempWb = Workbooks.Open(nomcompletfichier) End If Next fichier
EDIT: pour le faire fonctionner, tu dois ajouter "Microsoft Scripting Runtime" dans les références de ton projet.
tchitchy
Messages postés
42
Date d'inscription
mercredi 28 avril 2010
Statut
Membre
Dernière intervention
22 avril 2022
2
22 avril 2022 à 13:59
22 avril 2022 à 13:59
Merci pour le retour
Je suis désolé mais je suis vraiment néophyte. Je viens déjà d'activer le " Microsoft Scripting Runtime". Pour le moment, je n'ai plus de message d'erreur :)
Lorsque j'exécute le code que tu m'as fait parvenir, il n'y a rien qui se passe. Je suppose qu'il faut que je mette ce code dans le gros code que j'ai. De ce que je comprends du code que tu m'as envoyé, la partie ThisWorkBook.Path renvoie à l'emplacement du fichier excel et après ça passe en revu les fichier txt présent dans le dossier
Cependant, je n'arrive pas à savoir comment mettre ton code sur celui présent.
Je suis désolé mais je suis vraiment néophyte. Je viens déjà d'activer le " Microsoft Scripting Runtime". Pour le moment, je n'ai plus de message d'erreur :)
Lorsque j'exécute le code que tu m'as fait parvenir, il n'y a rien qui se passe. Je suppose qu'il faut que je mette ce code dans le gros code que j'ai. De ce que je comprends du code que tu m'as envoyé, la partie ThisWorkBook.Path renvoie à l'emplacement du fichier excel et après ça passe en revu les fichier txt présent dans le dossier
Cependant, je n'arrive pas à savoir comment mettre ton code sur celui présent.
yg_be
Messages postés
23429
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 janvier 2025
1 559
22 avril 2022 à 14:22
22 avril 2022 à 14:22
peut-être:
Option Explicit Private Sub af() Dim nomdossier As String, nomcompletfichier As String Dim fso As Scripting.FileSystemObject, dossier As Scripting.Folder, fichier As Scripting.File Dim xWb As Workbook, xTempWb As Workbook, xDelimiter As String nomdossier = ThisWorkbook.Path Set fso = New Scripting.FileSystemObject Set dossier = fso.GetFolder(nomdossier) For Each fichier In dossier.Files If Right(fichier.Name, 4) = ".txt" Then nomcompletfichier = nomdossier + "\" + fichier.Name Set xTempWb = Workbooks.Open(nomcompletfichier) xTempWb.Sheets(1).Move after:=xWb.Sheets(xWb.Sheets.Count) xWb.Worksheets(xWb.Sheets.Count).Columns("A:A").TextToColumns _ Destination:=Range("A1"), DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, _ ConsecutiveDelimiter:=False, _ Tab:=False, Semicolon:=False, _ Comma:=False, Space:=False, _ Other:=True, OtherChar:=xDelimiter End If Next fichier End Sub
tchitchy
Messages postés
42
Date d'inscription
mercredi 28 avril 2010
Statut
Membre
Dernière intervention
22 avril 2022
2
Modifié le 22 avril 2022 à 14:38
Modifié le 22 avril 2022 à 14:38
J'ai modifié "OtherChar:=xDelimiter" par OtherChar:="|" pour mon fichier. Cependant (que je modifie ou non) j'ai ce message d'erreur : Erreur d'exécution '91' : variable objet ou variable de bloc with non définie
En gros ça m'a ouvert un fichier dans la première feuille et c'est tout.
En gros ça m'a ouvert un fichier dans la première feuille et c'est tout.
yg_be
Messages postés
23429
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 janvier 2025
1 559
22 avril 2022 à 14:46
22 avril 2022 à 14:46
Il est utile de m'informer à quelle ligne de code l'erreur se produit.
Suggestion:
Suggestion:
Option Explicit Private Sub af() Dim nomdossier As String, nomcompletfichier As String Dim fso As Scripting.FileSystemObject, dossier As Scripting.Folder, fichier As Scripting.File Dim xWb As Workbook, xTempWb As Workbook, xDelimiter As String nomdossier = ThisWorkbook.Path Set xWb = ThisWorkbook Set fso = New Scripting.FileSystemObject Set dossier = fso.GetFolder(nomdossier) xDelimiter = "|" For Each fichier In dossier.Files If Right(fichier.Name, 4) = ".txt" Then nomcompletfichier = nomdossier + "\" + fichier.Name Set xTempWb = Workbooks.Open(nomcompletfichier) xTempWb.Sheets(1).Move after:=xWb.Sheets(xWb.Sheets.Count) xWb.Worksheets(xWb.Sheets.Count).Columns("A:A").TextToColumns _ Destination:=Range("A1"), DataType:=xlDelimited, _ TextQualifier:=xlDoubleQuote, _ ConsecutiveDelimiter:=False, _ Tab:=False, Semicolon:=False, _ Comma:=False, Space:=False, _ Other:=True, OtherChar:=xDelimiter End If Next fichier End Sub
yg_be
Messages postés
23429
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 janvier 2025
1 559
>
yg_be
Messages postés
23429
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 janvier 2025
Modifié le 22 avril 2022 à 14:50
Modifié le 22 avril 2022 à 14:50
J'ai supposé que le fichier dans lequel il fallait tout importer était le fichier dans lequel se trouve le code VBA.
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
tchitchy
Messages postés
42
Date d'inscription
mercredi 28 avril 2010
Statut
Membre
Dernière intervention
22 avril 2022
2
22 avril 2022 à 15:13
22 avril 2022 à 15:13
Magnifique ça fonctionne parfaitement. En plus, je n'ai plus besoin de l'énorme code que j'avais trouvé.
Merci beaucoup, cette partie là est bonne. Il ne me reste plus qu'à travailler sur les résultats obtenus et à tout automatiser.
Encore merci
Merci beaucoup, cette partie là est bonne. Il ne me reste plus qu'à travailler sur les résultats obtenus et à tout automatiser.
Encore merci
yg_be
Messages postés
23429
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 janvier 2025
1 559
22 avril 2022 à 15:28
22 avril 2022 à 15:28
peut-être utile d'ajouter
avant
Peux-tu marquer la discussion comme résolue?
xTempWb.Close
avant
end if
Peux-tu marquer la discussion comme résolue?
tchitchy
Messages postés
42
Date d'inscription
mercredi 28 avril 2010
Statut
Membre
Dernière intervention
22 avril 2022
2
22 avril 2022 à 15:35
22 avril 2022 à 15:35
Merci pour la précision.
Si je le rajoute avant le "End if" j'ai un message d'erreur : Erreur Automation" qui apparaît juste après la première importation.
J'ai essayé de le mettre juste après le "Next fichier", ça fait toutes les importations mais j'ai quand même ce même message d'erreur
Si je le rajoute avant le "End if" j'ai un message d'erreur : Erreur Automation" qui apparaît juste après la première importation.
J'ai essayé de le mettre juste après le "Next fichier", ça fait toutes les importations mais j'ai quand même ce même message d'erreur
yg_be
Messages postés
23429
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 janvier 2025
1 559
22 avril 2022 à 16:08
22 avril 2022 à 16:08
En effet, cela semble une mauvaise idée d'ajouter ce Close, désolé!
tchitchy
Messages postés
42
Date d'inscription
mercredi 28 avril 2010
Statut
Membre
Dernière intervention
22 avril 2022
2
>
yg_be
Messages postés
23429
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 janvier 2025
22 avril 2022 à 16:10
22 avril 2022 à 16:10
Merci beaucoup déjà de m'avoir énormément avancé ! C'est déjà parfait :)
tchitchy
Messages postés
42
Date d'inscription
mercredi 28 avril 2010
Statut
Membre
Dernière intervention
22 avril 2022
2
22 avril 2022 à 15:51
22 avril 2022 à 15:51
J'ai essayé également d'automatiser au début l'action de "Microsoft Scripting Runtime" présent dans le chemin de répertoire : C:\Windows\system32\scrrun.dll
J'ai mis ce code
Et j'ai le message d'erreur Erreur d'exécution 1004, erreur définie par l'application ou par l'objet. Alors que quand je vais dans outils, référence et sur microsoft scripting runtime, le chemin d'accès est bon.
Je me permets de rajouter cette demande, je pense que vous allez pouvoir m'aider
J'ai mis ce code
Sub test1() Dim xRef As String xRef = "C:\Windows\system32\scrrun.dll" ThisWorkbook.VBProject.References.AddFromFile xRef End Sub
Et j'ai le message d'erreur Erreur d'exécution 1004, erreur définie par l'application ou par l'objet. Alors que quand je vais dans outils, référence et sur microsoft scripting runtime, le chemin d'accès est bon.
Je me permets de rajouter cette demande, je pense que vous allez pouvoir m'aider
yg_be
Messages postés
23429
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 janvier 2025
1 559
22 avril 2022 à 16:10
22 avril 2022 à 16:10
Automatiser quoi?
Il suffit d'ajouter une fois la référence, via le menu, et de sauver le fichier.
Il suffit d'ajouter une fois la référence, via le menu, et de sauver le fichier.
tchitchy
Messages postés
42
Date d'inscription
mercredi 28 avril 2010
Statut
Membre
Dernière intervention
22 avril 2022
2
>
yg_be
Messages postés
23429
Date d'inscription
lundi 9 juin 2008
Statut
Contributeur
Dernière intervention
16 janvier 2025
22 avril 2022 à 16:24
22 avril 2022 à 16:24
Effectivement je suis un âne. J'ai juste à supprimer les feuilles existante pour lancer la macro d'importation quand il y a une MAJ
Merci beaucoup pour toute ton aide et ton temps
Merci beaucoup pour toute ton aide et ton temps