Importer un fichier texte de plus de 65536 lignes dans un fichier excel
homerde
Messages postés16Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 6 juillet 2007
-
5 juil. 2007 à 14:07
sebastiotus
Messages postés1Date d'inscriptionmercredi 6 décembre 2000StatutMembreDernière intervention24 mars 2008
-
24 mars 2008 à 20:29
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
mortalino
Messages postés6786Date d'inscriptionvendredi 16 décembre 2005StatutMembreDernière intervention21 décembre 201118 6 juil. 2007 à 09:50
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)
homerde
Messages postés16Date d'inscriptionsamedi 2 octobre 2004StatutMembreDernière intervention 6 juillet 2007 6 juil. 2007 à 11:45
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.
sebastiotus
Messages postés1Date d'inscriptionmercredi 6 décembre 2000StatutMembreDernière intervention24 mars 2008 24 mars 2008 à 20:29
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