Importer un fichier texte de plus de 65536 lignes dans un fichier excel

Signaler
Messages postés
16
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
6 juillet 2007
-
Messages postés
1
Date d'inscription
mercredi 6 décembre 2000
Statut
Membre
Dernière intervention
24 mars 2008
-
Bonjour,

je souhaite importer un fichier texte de plus de 65536 lignes dans un fichier excel.
Comment faire?
une feuille excel n'a que 65536 lignes, je veux donc ajouter le reste des lignes dans une 2ieme feuille

Pour cela, j'ouvre une premiere fois le fichier, j'importe des 65536 premieres lignes puis je reouvre le fichier avec le startrow := 655536

code du deuxieme passage :
 
WorkbooksOpenText Filename := "toto", _
                                   Origin:= xlWindows,_
                                    StratRow:=655536,_
                                   DataType:=xlDelimited,_
                                   TextQualifier:= xlDoubleQuote,_
                                   ConsecutiveDelimiter:=False_
                                   Tab:= false,_
                                   semicolon:= false,_
                                   Comma := false,_
                                   space:= false,_
                                   other := false

avec ça j'ai une erreur 1004 : opentext échoué

quelqu'un sait pourquoi?

merci

a+

9 réponses

Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
salut,

StratRow:=655536
SartRow:=65536

Sinon, achète Office 2007, t'as la possibilité d'avoir plus d'un millions de lignes sur un seul onglet

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
Messages postés
16
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
6 juillet 2007

dsl pour la recopie rapide...

Aurait tu une réponse plus économique?
Je n'ai que excel 2000.

a++
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Nop, impossible de repousser les limites, tu ne peux faire autrement que de 'partitionner' tes données dans plusieurs onglets.
Suivant tes besoins, le fichier texte seul ou une bdd access pourrait suffir (hors calcul excel)

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
15
Messages postés
16
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
6 juillet 2007

je ne veux pas changer "d'architecture". je veux garder mon fichier texte et excel.


je vais donc faire plusieurs onglets.

Ce que je ne comprend pas c'est pourquoi quand je fais:

Workbooks.OpenText  avec un StratRow:=65536   ---->ça plante!!!

Dans la doc c'est écrit : "Numéro de la ligne à partir de laquelle commencer la redistribution du texte", donc ça devrais marcher ! D'autant plus que ça marche pour des petit valeur du StartRow.

a+


 
Messages postés
3874
Date d'inscription
mardi 8 mars 2005
Statut
Modérateur
Dernière intervention
7 novembre 2014
15
(Au fait, j'adore ton pseudo lol)

Mon truc avec ADO, ça à l'air léger quoi... Y a juste à faire un copier coller du code de mon lien vers excel.

(Il faut cependant bien évidement que la classe ADODB.RECORDSET soit instanciable...)
Messages postés
6786
Date d'inscription
vendredi 16 décembre 2005
Statut
Membre
Dernière intervention
21 décembre 2011
18
Et pour le StartRow, c'est peut-être que t'as fait une erreur sur un autre paramètre.
A voir..
http://msdn2.microsoft.com/en-us/library/aa273712(office.10).aspx

@++

<hr size="2" width="100%" />( Nouveau forum : Exclusivement Office & VBA
Messages postés
16
Date d'inscription
samedi 2 octobre 2004
Statut
Membre
Dernière intervention
6 juillet 2007

j'ai regardé la doc encore et encore et encore mais je vois pas le problème...
(ça existe des lunettes informatiques?)

bah merci quand même..
a++
Messages postés
1
Date d'inscription
mercredi 6 décembre 2000
Statut
Membre
Dernière intervention
24 mars 2008

Salut, j'avais le même pb. Comme on te le dis plus haut, c normal avec cette version d'excel. et StartRow ne fonctionnera pas non plus au delà de 65536 / 2. Par contre, dans le site, j'ai trouvé une autre façon de faire. Voici du code similaire à  OpenText mais version "brute". Il permet de prendre une ligne d'un fichier text sur 60. Séparateur = tab
maintenant je pense que si toutes les données te sont importantes tu peux facilement (je pense) insérer dans d'autres feuilles : (désolé je l'ai pas commenté) :

Sub ReceptionMesure()
       
  Dim saut, act As Integer
  Dim Ligne As String
  Dim LigneExcel As Double
  Dim z, i, a, e, PointVirgule1, PointVirgule2 As Integer
  Dim L, Long1, Long2, Long3 As Integer
  Dim Data1, Data2, Data3 As String
  Dim stFichier As String
 
  saut = 60
 
  LigneExcel = 1
  act = 1
  e = 0
  i = 1
  L = 0
  z = 1
 
  Open "C:\mesure.txt" For Input As #1
 
  Do While EOF(1) = False
   
  e = 0
  i = 1
  L = 0
  z = 1
 
    Line Input #1, Ligne
   
    If (act = 1) Then
   
      Do While i > 0
       
        i = InStr((e + 1), Ligne, Chr(9))
   
        If (i > 0) Then
            Data = Mid(Ligne, (e + 1), i - (e + 1))
            Long1 = Len(Data)
            L = L + Long1
        Else
          der = Len(Ligne) - L
          Data = Mid(Ligne, e + 1, der)
          i = 0
        End If
        e = i
        a = a + 1
     
        With ActiveWorkbook.Worksheets("Feuil1")
          .Cells(LigneExcel, z) = Data
        End With
   
        z = z + 1
     
      Loop
     
      LigneExcel = LigneExcel + 1
        Else: If (act >saut) Then act 0
   
    End If
   
    act = act + 1



  Loop
   
  Close
  
End Sub