begin process at 2010 02 10 17:03:18
  Trouver un code source :
 
dans
 
Accueil > Forum > 

Visual Basic 6

 > 

Langages dérivés

 > 

VBScript

 > 

Petit soucis avec un message "input past end of file"


Derniers messages déposésPoser une question dans le forum ou lancer une discussion

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

Membre Club


 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 Sub



droopyv , 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

Administrateur CodeS-SourceS
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

Membre Club


 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

Membre Club


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 = Nothing



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

Sujets en rapport avec ce message

Input Past End of File sous VB3...! [ par BERGOUGNOUX ] Bonjour à tous,J'ai un ordinateur utilisant Windows XP et un autre (assez ancien  ) utilisant Windows... 3.1.J'utilise donc Visual Basic 3 Input past end of file [ par bbc220229 ] Bonjour à toutes et à tous, c'est la première fois que je poste et j'espère que quelqu'un ou quelqu'une saura éclairer ma terne lanterne !Mon pb est r Explication de code source [ par fatim1 ] Salut. J'ai trouvé ce bout de code quelque part dans ce site.Et je ne le comprend pas bien. Quelqu'un pour me l'expliquer s'il vous plaît. Private S WRQ Reflection, Si message = celui d'affiché Go To [ par kouki69 ] Salut [^^happy13] Mon petit soucis est le suivant : Je suis dans WRQ reflection. Je souhaiterais que quand s'affichera à l'écran (dans des coordonnées winsock encore et tjrs... [ par elpitou86 ] Elpitoubon alors voila mon problem. suis un newb en prog et je cherche a faire un chat multi user. mai voila le blem.Private Sub win Problème Envoi mail sur Hotmail [ par beetsy ] salut à tousj'utilise la calsse mail pour envoyer des mails depuis mon appli ASP.netles mails arrivent partout SAUF HOTMAIL et je n'ai pas d'erreurs.. petit soucis genant ... [ par gandalfgris ] Bonjour,j' ai un ptit programme en VB qui accede a un fichier excelpendant le traitement du fichier excel, si je clique sur le programme, j'ai un mess Help pleaaaaaaaaase [ par lapprentie ] Re-,Suite à mon post: http://www.vbfrance.com/infomsg_MSGBOX-AVEC-HORLOGE-SECOURS_932276.aspx#7J'ai trouver qqch sur internet:<br pb avec checkbox [ par domxaline ] j'ai un pb avec ce prg,veuillez m'aidez s'il vous plaît Public Class Form1 Private Sub Button1_Click(ByVal sender As System.Object, ByVal e As S .Net Envoi message [ par zavier666 ] bonjour, j'utilise la classe Mail pour expédier des messages. hors en faisant des tests, je me suis aperçu qu'il faut que j'arrête mon programme pour


Nos sponsors


Sondage...

Comparez les prix


HTC Hero

Entre 550€ et 550€

CalendriCode

Février 2010
LMMJVSD
1234567
891011121314
15161718192021
22232425262728

Consulter la suite du CalendriCode

 
Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel (EBArtSoft), Merci à Vincent pour ses précieux conseils.
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés

Google Coop CodeS-SourceS Google Coop CodeS-SourceS
Temps d'éxécution de la page : 4,758 sec (3)

Nous contacter | Annoncer sur CodeS-SourceS | Mentions légales