Importer fichier texte

Résolu
bonsoir

je voudrais importer un long fichier texte avec 1000 colonnes environ,
je veux qu'il soit réparti sur plusieurs feuilles !
j'ai le code suivant mais ca ne marche pas

Sub Fichier_TXT_Volumineux()
Dim Resultat, Chemin As String
Dim Lecture As Integer
Dim Compteur As Variant
Chemin = Application.GetOpenFilename
If Chemin = "" Then End
Lecture = FreeFile()
Open Chemin For Input As #Lecture
Application.ScreenUpdating = False
Compteur = 1
Do While Seek(Lecture) <= LOF(Lecture)
Line Input #Lecture, Resultat
ActiveCell.Value = Resultat
If ActiveCell.Row = 65536 Or ActiveCell.Column = 256 Then
ActiveWorkbook.Sheets.Add
Else
ActiveCell.Offset(1, 0).Select
End If
Compteur = Compteur + 1
Loop
Close
Application.ScreenUpdating = True
End Sub

20 réponses

  1. Contributeur
    Salut le forum

    Sans savoir ce qui ne marche pas

    Essaye de remplacer : Do While Seek(Lecture) <= LOF(Lecture)
    Par : Do While Not EOF(Lecture)

    Mytå
    0
    1. Non parreil
      il affiche le contenu jusqu'à la 256ème colonne
      0
      1. Contributeur
        Re le forum

        Ton extraction va mettre une ligne par ligne, je ne vois pas le rapport avec 256 colonnes surtout que ton titre parle de 1000 colonnes !

        De plus tu incrémentes seulement la ligne Offset(rowOffset,columnOffset)

        Mytå
        Merci de donner suite à votre question, nous ne sommes pas des robots...
        Versions installées [MsProject 2003(FR), Excel 2003-2007(FR)]
        0
        1. oui je suis débutant , qu'est ce tu peux me proposer alors ?
          0
          1. Contributeur
            Re le forum

            Mizoum que contient comme valeurs ton fichier texte.

            Un exemple d'une dizaine de lignes devrait suffire.

            Mytå
            0
            1. Contributeur
              Re le forum

              Mizou, une macro pour sur la base de ton fichier

              Extraction de la ligne sur plusieurs lignes

              Sub Fichier_TXT_Volumineux()
              Dim Resultat As String
              Dim Chemin As String
              Dim Lecture As Integer
              Dim Tableau() As String
              Dim i As Integer
              
              Chemin = Application.GetOpenFilename
                  If Chemin = "" Then End
                  
              Lecture = FreeFile()
                  Open Chemin For Input As #Lecture
              
              Cells.Delete
              Cells(1, 1).Select
              
              Do While Not EOF(Lecture)
                  Line Input #Lecture, Resultat
              
                  If InStr(Resultat, "|") <> 0 Then
                      Tableau = Split(Resultat, "|")
                          For i = 0 To UBound(Tableau)
                              ActiveCell = Tableau(i)
                              ActiveCell.Offset(1, 0).Select
                          Next i
                  Else
                      ActiveCell.Value = Resultat
                  End If
                  
                ActiveCell.Offset(1, 0).Select
                
              Loop
              
              End Sub
              

              Mytå
              0
              1. je pense ke ca ne marche pas en tout ce n'est pas ce que je cherche à avoir
                je l'ai testé il me liste tous le contenu du fichier dans la 1ere colonne.

                J'ai besoin qu'il maffche les 256 premier colonnes dans feuille1 les second 256 colonne dans feuille2 ainsi de suite !

                Merci beaucoup Myta
                0
                1. oui mais c'est le test sur les colonnes qui m'interesse :)
                  0
                  1. Contributeur
                    Re le forum

                    Mizou, un fichier excel avec 5 feuilles (Feuil1 à Feuil5)

                    Une macro pas optimisée mais fonctionelle
                    Sub Fichier_TXT_Volumineux()
                    Dim Resultat As String
                    Dim Chemin As String
                    Dim Lecture As Integer
                    Dim Tableau() As String
                    Dim i As Integer
                    Dim Lig As Long
                    Dim Col As Integer
                    Dim Sh As Byte
                    
                    Chemin = Application.GetOpenFilename
                        If Chemin = "" Then End
                        
                    Lecture = FreeFile()
                        Open Chemin For Input As #Lecture
                    
                    Lig = 1: Col = 1: Sh = 1
                    
                    Application.ScreenUpdating = False
                    
                    Do While Not EOF(Lecture)
                        Line Input #Lecture, Resultat
                    Lig = Lig + 1: Col = 1: Sh = 1
                        If InStr(Resultat, "|") <> 0 Then
                            Tableau = Split(Resultat, "|")
                                For i = 0 To UBound(Tableau)
                                    Sheets("Feuil" & Sh).Cells(Lig, Col) = Tableau(i)
                                    Col = Col + 1
                                    If Col = 257 Then
                                    Col = 1: Sh = Sh + 1
                                    End If
                                Next i
                        Else
                            Sheets("Feuil" & Sh).Cells(Lig, Col) = Resultat
                                Col = Col + 1
                                If Col = 256 Then
                                Col = 1: Sh = Sh + 1
                                End If
                        End If
                      
                    Loop
                    
                    Application.ScreenUpdating = True
                    
                    End Sub
                    

                    Mytå
                    0
                    1. merci beaucoup mais je pense ke ca ne marche pas
                      je l'ai testé mail il maffiche ke "l'indice n'appartient pas à la selection" :(
                      0
                      1. et après débogage g cette ligne en jaune

                        Sheets("Feuil" & Sh).Cells(Lig, Col) = Tableau(i)
                        0
                        1. Contributeur
                          Re le forum

                          Mizou, tu dois avoir déjà 5 feuilles dans ton classeur

                          Un fichier excel avec 5 feuilles (Feuil1 à Feuil5)

                          C'est une macro pas optimisée mais fonctionelle

                          Mytå
                          Merci de donner suite à votre question, nous ne sommes pas des robots...
                          Versions installées [MsProject 2003(FR), Excel 2003-2007(FR)]
                          0
                          1. oui ca marche :):):) merci merci beaucoup vous êtes super super sympa !!!

                            et si je devais ouvrir ces 5 feuilles dans un autre classeur (pas celui de là ou s'exécute la macro) et récupère ces 5 feuilles dans mon classeur (là ou s'exécute la macro) en les renommant par exemple feuille1=données(1) , feuille2=données(2) ainsi de suite
                            c possible ?

                            je vous remercie encore une fois et dsl pour le dérangement :)
                            0
                            1. Contributeur
                              Re le forum

                              Pourquoi ne pas faire l'extraction directement dans ton vrai fichier

                              Modifie les lignes :
                              Sheets("Feuill" & Sh).Cells(Lig, Col)
                              par
                              Sheets("Données(" & Sh & ")").Cells(Lig, Col)
                              Ton classeur doit contenir les feuilles (Données(1) à Données(5))

                              Mytå
                              0
                              1. oui voila vous avez résolu mon probleme je vous en suis très reconnaissant merci beaucoup !
                                je vais continuer l'application et si çà coince je me tourneré vers vous :)

                                Merci Beaucoup
                                0
                                1. Contributeur
                                  Re le forum

                                  Au plaisir Mizou, merci de mettre ton message en [Résolu]

                                  Je vais regarder entre-temps pour améliorer mon code (Optimisation)

                                  Mytå
                                  0
                              2. g un autre petit problème !!
                                je dois afficher une liste deroulante avec GSM et WCDMA donc 2 lignes

                                en dessous, en fonction du choix, il doit apparaitre des cases d'options
                                comme ceci :
                                ------------------------------
                                GSM / WCDMA (sur 2 lignes)
                                ------------------------------

                                O O
                                O O
                                O O
                                O O
                                O O
                                O O
                                O O

                                Les cases d'option de gauche ne doivent apparaitre que si on choisit GSM
                                Pareil pour WCDMA

                                Merci pour votre aide
                                0
                                1. Contributeur
                                  Re le forum

                                  Mizou, je ne comprends pas trop ta demande.

                                  Pourrais-tu détailler un peu plus ou joindre une version épurée du fichier ?

                                  A te relire
                                  Mytå
                                  0
                              3. Bonjour,

                                Il me semblait, qu'avant d'affirmer, on vérifiait.....

                                Il me semblait que la limite etait de 65255 (ou 65256)


                                Clique sur F1

                                Tape "limites".....

                                Taille des feuilles de calcul 65 536 lignes et 256 colonnes 


                                Sous Excel2003, bien sûr

                                Bonne journée
                                0
                                1. Contributeur
                                  Re le forum

                                  Et pour Excel 2007

                                  Taille des feuilles de calcul 1 048 576 lignes et 16 384 colonnes

                                  Mytå
                                  0
                                  1. Es-tu sur de la valeur ?
                                    If ActiveCell.Row = 65536 Or ActiveCell.Column = 256 Then

                                    Il me semblait que la limite etait de 65255 (ou 65256)
                                    -1