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. 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
                  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