Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

Import de plusieurs fichiers txt

  • Initiateur de la discussion Initiateur de la discussion Fab57330
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

F

Fab57330

Guest
Bonsoir.
Je viens aujourd'hui vers vous car j'ai un petit soucis. Je dois importer 3 fichiers txt (numérotés de 1 à 3). Chaque fichier fait plus de 700.000 lignes (donc j'utiliser EXCEL 2007). Dans ce fichier, j'ai une colonne apellée "VITESSE", qui quelque fois a des valeurs "0". Toute les autres colones ont des fois des NaN.

Le but est en fait de réaliser un import des fichiers, les uns a prés les autres, cependant uniquement des lignes ou la vitesse n'est pas égale a zero, et ou dans les autres colones je n'ai pas de valeurs NaN.

On m'a conseiller d'utiliser la fonction suivante:

Code:
Open "l:/1.txt" For Input As #1
 

Do While Not EOF(1)
    Input #1, Ligne
    NBLigne = NBLigne + 1                           'récupère le nombre de ligne du fichier
    
    tableau = Split(Ligne, vbTab)
    
    Sheets(1).Cells(NBLigne, 1) = tableau(0)
    Sheets(1).Cells(NBLigne, 2) = tableau(1)
        
Loop
 
Close

Cependant, je ne trouve pas beaucoup de documentation sur cette fonction, du moins avec ce que je sougaite faire.

Quelqu'un pourrait-il m'aider SVP?

Merci,
Fab.
 
Re : Import de plusieurs fichiers txt

Je n'ai pas encore eu le temps de tester la macro ci-dessus.

Cependant, une autre question me viens a l'esprit. J'aimerai au clic sur un buton (qui est dans un UserForm), qu'une fenêtre s'ouvre pour que j'aille pointer sur un dossier. Ensuite, le chemin d'accès de ce dossier s'inscrirai dans un champs texte nommé "User_files".

Ceci est réalisable?

Merci d'avance,
Fabrice.
 
Re : Import de plusieurs fichiers txt

Bonsoir

Ci dessous une macro trouvé dans le forum. Merci à son auteur.
Code:
Dim racine As String
Dim Dl1 As Long ' dernière ligne
public User_files as string
'-------------------------------------------------------------------
' Module    : Module1/arborescence
' DateTime  : 15/09/2008 / 13:05
' Auteur    : JP14
' Utilisation     :lire un repertoire et les fichiers
'--------------------------------------------------------------------
Sub arborescence()
Dim choixdossier$
  Application.ScreenUpdating = False
' dossier à scanner
choixdossier = ChDossier
If choixdossier = "" Then Exit Sub
    User_files = choixdossier
End Sub

Private Function ChDossier()
Dim objShell, objFolder, chemin, SecuriteSlash

Set objShell = CreateObject("Shell.Application")
Set objFolder = _
objShell.BrowseForFolder(&H0&, "Choisisser un répertoire", &H1&)
On Error Resume Next
chemin = objFolder.ParentFolder.ParseName(objFolder.Title).Path & ""
If objFolder.Title = "Bureau" Then
chemin = "C:\"
End If
If objFolder.Title = "" Then
chemin = ""
End If
SecuriteSlash = InStr(objFolder.Title, ":")
If SecuriteSlash > 0 Then
chemin = Mid(objFolder.Title, SecuriteSlash - 1, 2) & ""
End If
ChDossier = chemin
Sheets("Selection").Range("f9") = ChDossier

End Function

A tester

JP
 
Re : Import de plusieurs fichiers txt

Merci milles fois à toi jp14. La dernière macro fonctionne.

Le temps de finir mon User Form et je vais tester la macro d'import séquentiel.

Merci,
Bonne soirée,
Fabrice.
 
Re : Import de plusieurs fichiers txt

Bonsoir.
Dernière étape pour moi avant de tester l'import de fichier, une petite boucle... Mais qui ne fonctionne pas...

Ci-dessous le code que j'ai noté:

Code:
Sub IMPORT_FILES_2() 'IMPORT étape 2: Import des fichiers
    Dim k As Integer
    Dim REP As String
    Application.ScreenUpdating = False
        REP = W_IMPORT.User_source.Value & "L" & W_IMPORT.User_strand.Value & "\"
        
    For k = 1 To W_IMPORT.User_files.Value
        REP = REP & OPTION_Files.Files_ & k
        MsgBox (REP)
    Next k
End Sub

Description brève :
Je vais importer entre 1 et trois fichiers. Le nom des fichiers sera défini par l'utilisateur dans des champs nommés "Files_1", "Files_2" et "Files_3" (ces champs sont placés sur la feuille "OPTION_Files". Le champs "User_files", placé sur l'userForm "W_IMPORT", contiens un nombre entre 1 et 3, correspondant au nombre de fichier à importer.

BUT final :
Le but est par l'intermédiaire de cette boucle de scrutter les champs FILES les uns aprés les autres, dans la limite du nombre maximum de fichier. Je ne sais pas si je suis clair?

Problème :
VB refuse le code "REP = REP & OPTION_Files.Files_ & k". En théorie, la boucle devrait donner les valeurs, dans le cas de trois fichiers, "REP = REP & OPTION_Files.Files_1", "REP = REP & OPTION_Files.Files_2" puis "REP = REP & OPTION_Files.Files_3".

Avez-vous une idée du pourquoi ca ne fonctionne pas?

Merci par avance,
Fabrice.

PS: Comme vous pouvez le constater je m'amuse bien avec les macros, mais je bloquais uniquement sur le code OEF qui était nouveau pour moi.
 
Re : Import de plusieurs fichiers txt

Bonjour.
Malheureusement, une partie du fichier est confidentielle. Il me sera donc difficile d'en envoyer un sur le forum en "public". Cependant, au besoin je peux vous passer plus d'informations.

Celà ne vous dérange pas?

Merci de votre compréhension,
Fabrice.
 
Re : Import de plusieurs fichiers txt

Bonjour.
Concernant mon précédent message ou je demandais une solution concernant la boucle, j'ai finalement trouvé une autre solution plus "simple":

Code:
Sub IMPORT_FILES_2() 'IMPORT étape 2: Import des fichiers
    Dim k As Integer
    Dim REP As String
    Application.ScreenUpdating = False
        
    For k = 1 To W_IMPORT.User_files.Value
        'DEBUT PREPARATION
            REP = W_IMPORT.User_source.Value & "L" & W_IMPORT.User_strand.Value & "\"
            If k = 1 Then
                REP = REP & OPTION_Files.File_1 & OPTION_Files.File_extension
            ElseIf k = 2 Then
                REP = REP & OPTION_Files.File_2 & OPTION_Files.File_extension
            ElseIf k = 3 Then
                REP = REP & OPTION_Files.File_3 & OPTION_Files.File_extension
            End If
        'FIN PREPARATION
    Next k
End Sub

Je viens de testé le code d'import que vous m'avez proposé JP14. Cependant, il ne fonctionne pas.

Code:
Sub Trial_import()
    Dim i As Long
    Dim PasEnregistrement As Boolean
    
    Open "C:\Users\Fabdu57100\Desktop\File\L3\1.txt" For Input As #1
     
    Do While Not EOF(1)
        Input #1, Ligne

        PasEnregistrement = False
        tableau = Split(Ligne, vbTab)
        If LBound(tableau) <> UBound(tableau) Then
            For i = LBound(tableau) To UBound(tableau)
                If tableau(i) = "NaN (Niet-een-getal)" Then
                    PasEnregistrement = True
                    Exit For
                End If
            Next i
            
            If PasEnregistrement = False And tableau(8) <> 0 Then
                NBLigne = NBLigne + 1
                For i = LBound(tableau) To UBound(tableau)
                    Sheets("WORKSHEET").Cells(NBLigne, i + 1) = tableau(i)
                Next i
            End If
        End If
    Loop
     
    Close #1
End Sub

Au lancement, il affiche l'erreur suivante:

Erreur d'execution '9': L'indice n'appartien pas a la sélection.
Si je clique sur DEBOGAGE, il surligne en jaune ceci: If PasEnregistrement = False And tableau(8) <> 0 Then

Une idée du problème?

Merci par avance,
Fab.
 
Re : Import de plusieurs fichiers txt

Bonjour

Il faut vérifier le contenu des variables
LBound(tableau),
UBound(tableau)
tableau(8)

Si UBound(tableau) < 8 alors la colonne vitesse n'existe pas.

JP
 
Re : Import de plusieurs fichiers txt

Bonjour.

LBound(tableau) = 0
UBound(tableau) = 1
tableau(8) = <L'indice n'appartien pas a la sélection>


Celà peut-il etre du au fait que les deux premières lignes sont vides dans le fichier texte?

Fabrice.
 
Dernière modification par un modérateur:
Re : Import de plusieurs fichiers txt

C'est a dire?

Souhaitez-vous un fichier texte permettant de voir par vous même le genre de fichier et ainsi faire le test? Car je ne comprends pas trop le test que vous me demandez.
 
Re : Import de plusieurs fichiers txt

Ci-joint un exemple de fichier, bien entendu tronqué en nombre de ligne afin d'alléger l'envoi lol.
Je n'ai laissé que 100 lignes au lieu des 700.000

Merci par avance de votre aide, car là je sèches...
 

Pièces jointes

Re : Import de plusieurs fichiers txt


Bonjour.
Le code ci-dessus fonctionnait sous EXCEL 2010, Windows 7; Cependant, ce matin je viens de tester sous EXCEL 2007, Windows XP, et celà ne fonctionne pas. Il met l'erreur suivante:

Erreur de compilation. Projet ou bibliothèque introuvable.
DEBOGAGE: chemin = Mid(objFolder.Title, SecuriteSlash - 1, 2) & "" (surligné en jaune).

Une idée du soucis?

Merci d'avance,
Fabrice.

PS: Si je suprimme le code ci-dessous, celà fonctionne

Code:
If SecuriteSlash > 0 Then
chemin = Mid(objFolder.Title, SecuriteSlash - 1, 2) & ""
End If
 
Dernière modification par un modérateur:
Re : Import de plusieurs fichiers txt

Le soucis sur la macro citée dans mon dernier message semble double. J'ai fait 3 tests:
1. Windows 7 / EXCEL 2010
2. XP / EXCEL 2007
3. XP / EXCEL 2010

Dans le cas n°1, tout fonctionne comme il le faut.
Dans le cas n°2, erreur sur le code suivant (si je le suprimme, ca fonctionne, sauf que je ne peux pas choisir de dossiers type C:\, il faut absolument que un dossier soit associé derrière)
Code:
If SecuriteSlash > 0 Then
chemin = Mid(objFolder.Title, SecuriteSlash - 1, 2) & ""
End If
Dans le cas n°3, le bout de code ci-dessus fonctionne, mais pareil que dans le cas n°2: je ne peux pas choisir de dossiers type C:\, il faut absolument que un dossier soit associé derrière

Une idée sur cette erreur ?

Merci d'avance,
Fabrice.

PS: Concernant le EOF(), finalement je ne peux pas utiliser cette méthode. J'expliquerai aprés le pourquoi afin de ne pas avoir a régler trop de problème à la fois sur le Forum.
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

D
  • Question Question
2
Réponses
28
Affichages
2 K
Deleted member 441486
D
H
Réponses
3
Affichages
1 K
Hotburn
H
Réponses
2
Affichages
1 K
Réponses
2
Affichages
701
Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…