Accueil > Forum > > > > Petit soucis avec un message "input past end of file"
Petit soucis avec un message "input past end of file"
mercredi 29 août 2007 à 12:17:54 |
Petit soucis avec un message "input past end of file"

droopyv
|
j'ai fait un script examine deux fichiers avec des nombres a l'interieur, et je créé un fichier excel et je classe ces nombres si il sont egaux ou pas. Tous ce passe bien mais quand mon fichier dépasse 7000 lignes , j'ai ce fameux message qui apparait "input past end of file" et la je ne vois pas pourquoi pourriez vous m'aider. Quand je le fais avec 100 ou 200 lignes j'ai pas de soucis mais peut etre que c'est du au trop grand nombre de lignes ?? Merci beaucoup Prevenez moi si vous avez besoin d'informations
|
|
mercredi 29 août 2007 à 12:25:00 |
Re : Petit soucis avec un message "input past end of file"

milhandril
|
Ton problème vient d'excel. Une feuille excel bloque après 6400 et quelques lignes.
|
|
mercredi 29 août 2007 à 13:12:46 |
Re : Petit soucis avec un message "input past end of file"

JMO
|
 Bonjour à tous Je ne suis pas expert en Excel, mais par curiosité, je viens de tester (xp et Excel 2003) le code ci-dessous: Dim objExcel Set objExcel = WScript.CreateObject("Excel.Application") objExcel.Visible = True objExcel.Workbooks.Add
NL = 1
For i = 0 To 20000 Cellule NL, 2, "'ligne " & NL NL = NL + 1 Next
MsgBox "fin"
Sub Cellule(NumL,NumC,chaine) objExcel.Cells(NumL,NumC).Value=Chaine End Subdroopyv , si pouvez poster quelques lignes de votre code, cela permettra de déceler une éventuelle erreur de boucle. jean-marc
|
|
mercredi 29 août 2007 à 14:17:58 |
Re : Petit soucis avec un message "input past end of file"

droopyv
|
ok voila mon code en complet
'On error Resume Next Set Fso = CreateObject("Scripting.FileSystemObject")
'Lien vers les deux fichiers examinés Set Txt3 = Fso.OpenTextFile("F:\test\download_03\resultat_d3.txt", 1) Set Txt4 = Fso.OpenTextFile("F:\test\download_04\resultat_d4.txt", 1)
Set xlapp = CreateObject("Excel.Application")
'variables Dim xlapp ' As Excel.Application Dim classeur ' As Excel.Workbook Dim feuille ' As Excel.Worksheet Dim feuille2 ' As Excel.Worksheet
'Compteur pour les lignes d'excel commencent à partir des lignes 2 cpt=2
'classeur non visible a l'ecran xlapp.Visible = False
'definition d'un classeur et deux feuilles Set classeur = xlapp.Workbooks.add Set feuille1 = classeur.WorkSheets(1) Set feuille2 = classeur.WorkSheets(2)
'personnalistion des deux feuilles feuille1.name = ("Fichiers non ok") feuille1.Range("A1") = "Md5 de download 3" feuille1.Range("B1") = "Md5 de download 4" feuille1.Range("C1") = "fichier non ok" feuille1.Range("D1") = "nom fichier download 3" feuille1.Range("E1") = "nom fichier download 4"
Feuille2.name = ("Fichiers ok") feuille2.Range("A1") = "Md5 de download 3" feuille2.Range("B1") = "Md5 de download 4" feuille2.Range("C1") = "fichier ok" feuille2.Range("D1") = "nom fichier download 3" feuille2.Range("E1") = "nom fichier download 4"
'boucle qui examine ligne par ligne, les deix fichiers Do Until txt3.AtEndOfStream and txt4.AtEndOfStream entier_3 = txt3.ReadLine() entier_4 = txt4.readline()
'nombre de caractere total pour le serveur3 et serveur4 total3 = len(entier_3) total4 = len(entier_4)
'Prendre les 34 caracteres en partant de gauche gauch3 = left(entier_3, 34) gauch4 = left(entier_4, 34)
'calcul du nombre de caractere pour la droite calcul3 = (total3 - 34) calcul4 = (total4 - 34)
'prendre les X caracteres de droite droit3 = right(entier_3, calcul3) droit4 = right(entier_4, calcul4)
'regarde si les 34 caracteres de gauche du serveur3 et serveur 4 sont egaux ou pas if gauch3 = gauch4 then feuille2.Range("A" & cpt) = ""&gauch3 feuille2.Range("B" & cpt) = ""&gauch4 'Mets la couleur bleue sur les lignes ok feuille2.Range("c" & cpt).Interior.ColorIndex = 5 feuille2.RAnge("C" & cpt) = "ok" feuille2.Range("D" & cpt) = ""&droit3 feuille2.Range("E" & cpt) = ""&droit4 'Mets automatiquement les colonnes a l abonne taille feuille2.Columns.AutoFit else feuille1.Columns.AutoFit feuille1.Range("A" & cpt) = "" & gauch3 feuille1.Range("B" & cpt) = "" & gauch4 'Mets la couneur rouge sur les lignes non ok feuille1.Range("c" & cpt).Interior.ColorIndex = 3 feuille1.Range("C" & cpt) = "pas ok" feuille1.Range("D" & cpt) = ""&droit3 feuille1.Range("E" & cpt) = ""&droit4 end if
'compteur de ligne cpt=cpt+1 'msgbox "clipclop" loop
xlapp.DisplayAlerts = False Classeur.Saveas "c:\md5_xls.xls" classeur.Close True 'quitte en sauvant xlApp.quit
voili voulou merci encore
|
|
mercredi 29 août 2007 à 19:29:38 |
Re : Petit soucis avec un message "input past end of file"

jack
|
Salut Dans ton Do-Loop, tu testes si tu es arrivé à la fin des fichiers. Si un des fichiers comportent moins de lignes que l'autre, c'est le clash : Do Until txt3.AtEndOfStream and txt4.AtEndOfStream signifie qu'il faut que les deux fichiers arrivent à la fin pour stopper la boucle. Il faut donc détecter la fin d'un des fichiers : Do Until txt3.AtEndOfStream OR txt4.AtEndOfStream
Vala Jack, MVP VB NB : Je ne répondrai pas aux messages privés
Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
|
|
mercredi 29 août 2007 à 19:56:39 |
Re : Petit soucis avec un message "input past end of file"

JMO
|
 Bonsoir à tous, Bonsoir Jack, Oui, tu as raison pour le nombre de ligne. De même, il faut rajouter un test pour le nombre de caractères par ligne. 'nombre de caractere total pour le serveur3 et serveur4 total3 = len(entier_3) total4 = len(entier_4) If total3 >= 34 And total4 >= 34 Then Je teste at home. Les résultats sont surprenants !!! Dans l'exemple ci-dessous, à l'affichage du msgbox, je modifie 2 lignes du fichier2 - une ligne de la partie droite; - une ligne de la partie gauche. Résultat, dans le xls, seule la ligne modifiée à gauche est écrite dans l'onglet "fichiers non ok". Sur un fichier d'une centaine de lignes, c'est rapide. Par contre, si 20000 lignes, ça laisse le temps de se servir et de boire un apéro. Salut et bonne soirée. jean-marc Dim objFso, objTextStream Dim fichier1, fichier2, ligne, i fichier1 = "D:\SCRIPTS\Fichiers\fichier1.txt" fichier2 = "D:\SCRIPTS\Fichiers\fichier2.txt" ligne = "partie_gauche_123456789101112131415__fichier_123456789101112131415_partie_droite"
Set objFso = CreateObject("Scripting.FileSystemObject") Set objTextStream = objFso.OpenTextFile("D:\SCRIPTS\Fichiers\fichier1.txt", 2, True)
For i = 1 To 20 objTextStream.Write "ligne" & i &Space(5) & ligne &vbcrlf Next objTextStream.Close objFso.CopyFile fichier1, fichier2, True Set objTextStream = Nothing
MsgBox "avant de répondre ok à ce msgbox, modifiez quelques lignes du fichier2" &vbCrLf&_ "et enregistrer ce fichier"
Dim Txt3, Txt4, resultat 'Lien vers les deux fichiers examinés Set Txt3 = objFso.OpenTextFile("D:\SCRIPTS\Fichiers\fichier1.txt", 1) Set Txt4 = objFso.OpenTextFile("D:\SCRIPTS\Fichiers\fichier2.txt", 1)
resultat = "D:\SCRIPTS\Fichiers\md5_xls.xls"
'variables Dim xlapp ' As Excel.Application Dim classeur ' As Excel.Workbook Dim feuille1 ' As Excel.Worksheet Dim feuille2 ' As Excel.Worksheet
Set xlapp = CreateObject("Excel.Application") 'Compteur pour les lignes d'excel commencent à partir des lignes 2 cpt=2
'classeur non visible a l'ecran xlapp.Visible = False
'definition d'un classeur et deux feuilles Set classeur = xlapp.Workbooks.add Set feuille1 = classeur.WorkSheets(1) Set feuille2 = classeur.WorkSheets(2)
'personnalistion des deux feuilles feuille1.name = ("Fichiers non ok") feuille1.Range("A1") = "Md5 de download 3" feuille1.Range("B1") = "Md5 de download 4" feuille1.Range("C1") = "fichier non ok" feuille1.Range("D1") = "nom fichier download 3" feuille1.Range("E1") = "nom fichier download 4"
Feuille2.name = ("Fichiers ok") feuille2.Range("A1") = "Md5 de download 3" feuille2.Range("B1") = "Md5 de download 4" feuille2.Range("C1") = "fichier ok" feuille2.Range("D1") = "nom fichier download 3" feuille2.Range("E1") = "nom fichier download 4"
'boucle qui examine ligne par ligne, les deux fichiers Do Until txt3.AtEndOfStream and txt4.AtEndOfStream entier_3 = txt3.ReadLine() entier_4 = txt4.readline()
'nombre de caractere total pour le serveur3 et serveur4 total3 = len(entier_3) total4 = len(entier_4) If total3 >= 34 And total4 >= 34 Then
'Prendre les 34 caracteres en partant de gauche gauch3 = left(entier_3, 34) gauch4 = left(entier_4, 34)
'calcul du nombre de caractere pour la droite calcul3 = (total3 - 34) calcul4 = (total4 - 34)
'prendre les X caracteres de droite droit3 = right(entier_3, calcul3) droit4 = right(entier_4, calcul4) 'MsgBox "gauch3" &vbTab& gauch3 &vbCrLf& "gauch4" &vbTab& gauch4 &vbCrLf&vbCrLf&_ ' "calcul3" &vbTab& calcul3 &vbCrLf& "calcul4" &vbTab& calcul4 &vbCrLf&vbCrLf&_ ' "droit3" &vbTab& droit3 &vbCrLf& "droit4" &vbTab& droit4
'regarde si les 34 caracteres de gauche du serveur3 et serveur 4 sont egaux ou pas If gauch3 = gauch4 then feuille2.Range("A" & cpt) = ""&gauch3 feuille2.Range("B" & cpt) = ""&gauch4 'Mets la couleur bleue sur les lignes ok feuille2.Range("c" & cpt).Interior.ColorIndex = 5 feuille2.RAnge("C" & cpt) = "ok" feuille2.Range("D" & cpt) = ""&droit3 feuille2.Range("E" & cpt) = ""&droit4 'Mets automatiquement les colonnes à la bonne taille feuille2.Columns.AutoFit Else feuille1.Range("A" & cpt) = "" & gauch3 feuille1.Range("B" & cpt) = "" & gauch4 'Mets la couleur rouge sur les lignes non ok feuille1.Range("c" & cpt).Interior.ColorIndex = 3 feuille1.Range("C" & cpt) = "pas ok" feuille1.Range("D" & cpt) = ""&droit3 feuille1.Range("E" & cpt) = ""&droit4 feuille1.Columns.AutoFit end if
End If 'compteur de ligne cpt=cpt+1 loop
xlapp.Visible = True xlapp.DisplayAlerts = False Classeur.Saveas resultat classeur.Close True 'quitte en sauvant xlApp.quit
Set xlapp = Nothing Set Txt3 = Nothing Set Txt4 = Nothing Set classeur = Nothing Set feuille1 = Nothing Set feuille2 = Nothing Set objFso = Nothing
MsgBox "script terminé"
|
|
mercredi 29 août 2007 à 20:08:19 |
Re : Petit soucis avec un message "input past end of file"

JMO
|
 Re, J'avais écrit un petit script pour comparer deux fichiers .txt Cela peut servir de base pour droopyv . Option Explicit Dim Fso, Path, Fic1, Fic2 Dim i, r, imax Dim ObjTextStream, strtmp1, strtmp2 Const ForReading = 1, ForWriting = 2, ForAppending=8
Path = "d:\" Fic1 = "test.txt" Fic2 = "test1.txt" imax = 0
Set fso = CreateObject("Scripting.FileSystemObject") Set ObjTextStream = Fso.OpenTextFile(Path & Fic1, 1) Do While Not ObjTextStream.AtEndOfStream strtmp1 = split(ObjTextStream.ReadLine, vbLf) For i = 0 to Ubound(strtmp1) imax = imax + 1 ReDim Preserve Tableau1(1, imax) Tableau1(1, imax) = strtmp1(i) Next Loop ObjTextStream.Close
imax = 0 Set ObjTextStream = Fso.OpenTextFile(Path & Fic2, 1) Do While Not ObjTextStream.AtEndOfStream strtmp2 = split(ObjTextStream.ReadLine, vbLf) For i = 0 to Ubound(strtmp2) imax = imax + 1 ReDim Preserve Tableau2(1, imax) Tableau2(1, imax) = strtmp2(i) Next Loop ObjTextStream.Close
For r = 1 To imax If Tableau1(1, r) <> Tableau2(1, r) Then MsgBox "La ligne " & r & " est différente entre les 2 fichiers" &vbCrLf&vbCrLf&_ "1er tableau " & vbCrLf& Tableau1(1, r) &vbCrLf&vbCrLf&_ "2ème tableau " & vbCrLf& Tableau2(1, r) End If Next Set Fso = Nothing Set ObjTextStream = Nothingjean-marc
|
|
jeudi 30 août 2007 à 13:22:38 |
Re : Petit soucis avec un message "input past end of file"

droopyv
|
Merci a vous
Je prends et je teste pour voir l emieux pour moi , car j'atteins les 8000 lignes ( qui sont le resultat d'un calcul de crc de fichier video) donc je pense que ds quelques mois nous allons atteindre les 15000 voir plus, donc je fair attention aussi pour le temps.
Merci encore.
Bonne journée à vous
|
|
Cette discussion est classée dans : message, input, end, soucis, past
Répondre à ce message
Livres en rapport
|
Derniers Blogs
GESTION D'EXCEPTION AVEC LES TASKSGESTION D'EXCEPTION AVEC LES TASKS par richardc
Nous avons vu dans un précédent article comment utiliser Task pour effectuer des opérations dans un autre thread.
Malheureusement, comme tout le monde n'est pas parfait, il se peut que cette exécution se passe mal et qu'une exception se produise.
La...
Cliquez pour lire la suite de l'article par richardc DéMARRONS AVEC LES TASKSDéMARRONS AVEC LES TASKS par richardc
Que vous le vouliez ou non, le développement multi-tâche est maintenant une obligation pour toute nouvelle application. Il est donc vital d'en comprendre les mécanismes et de s'y mettre le plus tôt possible.
En attendant le .NET Framework 4.5 avec le...
Cliquez pour lire la suite de l'article par richardc SLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPSSLIDE & DéMO TECHDAYS 2012 - FAST & FURIOUS XAML APPS par Vko
Retrouvez les slides et les démo de ma session Fast & Furious XAML Apps. A ceux qui se posent la question : "est-ce que le code de la DataGrid est disponible?", je vous répondrais "pas encore". Je vais mettre en place un projet codeplex pour part...
Cliquez pour lire la suite de l'article par Vko XNA IS DEAD!XNA IS DEAD! par richardc
Depuis la semaine dernière (et grâce aux TechDays 2012), je me penche activement sur la nouvelle version de Windows, aka Windows 8. Vous me direz, il était temps puisque la première preview date de Septembre dernier.
OK. Remarquez, on n'en est qu'aux...
Cliquez pour lire la suite de l'article par richardc TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 !TECHDAYS PARIS 2012 : WINDOWS SERVER "8" QUOI DE 9 ! par ROMELARD Fabrice
Speakers: Fabrice Meillon et Stanislas Quastana Cette session est basée entièrement sur celle donnée lors de la BUILD cet hiver. Il n'y a pas d'ajout d'information en rapport avec cet évènement passé. Windows 8 Server sera intégralem...
Cliquez pour lire la suite de l'article par ROMELARD Fabrice
Logiciels
DocTranslate (V3.1.0.0)DOCTRANSLATE (V3.1.0.0)DocTranslate est un traducteur de document Microsoft Word, PowerPoint et Excel. Il permet d'autom... Cliquez pour télécharger DocTranslate Tribler (2012)TRIBLER (2012)Tribler est un client pair à pair (P2P/Peer-to-Peer) open source avec la capacité de regarder des... Cliquez pour télécharger Tribler OneSwarm (2012)ONESWARM (2012)Le peer-to-peer qui protège votre vie privée, c'est OneSwarm.
Ce logiciel de peer-to-peer crypté... Cliquez pour télécharger OneSwarm PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO (V8.4)PONAMEDIA TV DEVIENS HELLLOOO FLASH
LA TV SUR VOTRE ORDINATEUR.
Toute une plateforme Multi... Cliquez pour télécharger PONAMEDIA PREMIUM - HELLLOOO FLASH DEMO Academy System (17.2.1.0)ACADEMY SYSTEM (17.2.1.0)Logiciel de gestion des établissements.
- élèves/étudiants (inscription, dossier, absence...)
-... Cliquez pour télécharger Academy System
|