Boucle dans Boucle en VBS

Résolu
shenron69 -  
bezourox Messages postés 730 Date d'inscription   Statut Membre Dernière intervention   -
Bonjour,

Je cherche à lire ligne par ligne le contenu d'un fichier A puis vérifier que dans l'une des lignes d'un fichier B le contenu d'une des ligne du fichier A est présent ou non.

Lire ligne par ligne un fichier pas de Pb.
Chercher une valeur dans un fichier pas de Pb
Mais lire chaque ligne d'un fichier A et chercher dans un fichier B alors la PB.

Je ne sais pas si j'ai été suffisamment claire.
N'hésite pas à me poser des questions.

Merci d'avance pour votre aide
Configuration: Windows XP
Internet Explorer 6.0

8 réponses

  1. TheAhmed
     
    Euuh je ne sais pas mais c'est quoi le pb ?? En tt ka, tu voudrais faire cela :

    (Je n'ecrit pas cela dans u language bien spécifique mais juste pour l'idée)

    While Not EOF(A) do
    Chaine=LireLigne(A)
    While NotEOF(B)
    Chaine2=LireLigne(B)
    if (chaine=Chaine2) then trouve=true
    End

    End
    0
  2. shenron69
     
    En Gros oui

    Mon pb sais que je n'arrive pas à chercher la 2eme 3eme 4eme etc ligne de mon fichier A dans mon fichier B

    Merci d'avance
    0
  3. shenron69
     
    Voici mon code:

    Mon pb, il n'y a que la premier ligne du fichier test.ini qui est lu.
    Merci d'avance pour votre aide.

    Dim fso,
    Set fso = CreateObject("Scripting.FileSystemObject")
    Set ObjTextStream = Fso.OpenTextFile("c:\test\test.ini", 1, False)
    Set ObjTextStream2 = Fso.OpenTextFile("c:\test\test.txt", 1, False)

    Do While Not ObjTextStream.AtEndOfStream
    Reject = Split(ObjTextStream.ReadAll, vbCrLf)
    For i = 0 To UBound(Reject)

    Do While Not ObjTextStream2.AtEndOfStream
    Sources = Split(ObjTextStream2.ReadAll, vbCrLf)
    For t = 0 To UBound(Sources)

    iPos = InStr(1, Sources(t), Reject(i))
    If iPos <> 0 Then
    MsgBox "La valeur : "& Reject(i) &" à été trouver dans la ligne "& Sources(t)
    end if

    next
    Loop
    Next
    Loop
    0
    1. TheAhmed
       
      UJe vois un pb avec ces deux ligne, je ne sais pas, je n'ai pas compilé ca mais une question :

      Do While Not ObjTextStream.AtEndOfStream
      Reject = Split(ObjTextStream.ReadAll, vbCrLf)

      Avec la ligne, tu lit tout le fichier tet tu le décompose avec "vbCrLf" qui le retour chariot. Ainsi, Reject est un tableau qui contient toutes les lignes du fichier et donc, il né plus nécessaire de mettre le Do while. de meme pour la lecture du deixème fichier

      essaye
      0
      1. shenron69 > TheAhmed
         
        OK j'ai supprimer les lignes
        Do While Not ObjTextStream.AtEndOfStream
        et
        Do While Not ObjTextStream2.AtEndOfStream

        maintenant il cherche tjrs la premier ligne de mon fichier A dans mon fichier B mais quand il veut passer à la ligne 2 de mon fichier A il me sort l'erreur :
        Erreur : L'entrée dépasse la fin du fichier
        code : 800A009E

        Que signifie cette erreur?

        Merci d'avance pour ton aide.
        0
  4. TheAhmed
     
    juste pr essayer un truc,

    peut tu rajouter msgbox UBound(Rejct) après :

    Reject = Split(ObjTextStream.ReadAll, vbCrLf)

    pour donner

    Reject = Split(ObjTextStream.ReadAll, vbCrLf)
    msgbox UBound(Rejct)

    Ca donne koi?
    0
    1. shenron69
       
      J'obtient la valeur "2"

      ?????????????
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. TheAhmed
     
    Ok je voulais vérifier qu'il ya eu bel et bien une lecture de fichier qui contient normalement 3 ligne mais je retrouve une ptite erreur dans ce lignes

    Reject = Split(ObjTextStream.ReadAll, vbCrLf)
    For i = 0 To UBound(Reject)

    Sources = Split(ObjTextStream2.ReadAll, vbCrLf)

    Ceci va redécomposer a chaque fois le deuxième fichier essaye pluto d'inverser :

    Reject = Split(ObjTextStream.ReadAll, vbCrLf)

    Sources = Split(ObjTextStream2.ReadAll, vbCrLf)

    For i = 0 To UBound(Reject)
    ...

    Juste une question : Est ce que ta enlevé les Loop à la fin???

    Ca donne quoi?
    0
    1. shenron69
       
      OK tous semble fonctionné maintenant je te remercie pour ton aide

      @ bientot
      0
    2. shenron69 > shenron69
       
      Encore une petite question:

      i=le numero de la ligne
      si dans telle condition je veux passer à la ligne suivante comment faut il faire svp?

      Exemple : i=i+1 mais cela ne fonctionne pas?

      Merci d'avance
      0
    3. TheAhmed > shenron69
       
      si si ca marche...


      Essaye de marquer la discussion comme résolu ;)
      0
    4. shenron69 > TheAhmed
       
      OK je vais mettre Résolu mais j'ai encore une petite question.

      En faite je veut faire i = i + 1 ( C bon ca marche ) mais en reprenant le script du début avec la valeur i + 1

      Merci d'avance
      0
    5. TheAhmed > shenron69
       
      la je te suis pas, donne un exemple de script et qu'est ce que tu veux faire
      0
  7. shenron69
     
    Je reprend je cherche a faire :

    Dans un fichier A il y a les valeurs :
    toto
    tata
    tutu
    Dans un fichier B il y a les valeurs :
    toto
    tonton
    cucu
    mumu
    pupu
    tutu

    Je prend la premiere valeur du fichier A et je cherche si elle est présente dans mon fichier B.
    Exemple : toto => présent dans mon fichier B alors je test la valeur suivante.
    Exemple 2 : tata => non présent dans mon tous mon fichier B alors j'écrit tata dans un fichier *.txt.

    Merci d'avance pour ton aide
    0
  8. shenron69
     
    Un peut d'aide svp
    0
    1. TheAhmed
       
      En fait j'ai pas réussi à comprendre, dzl

      Je ne comprend l'utuilité quand tu di "je test la vlaeur suivante", mais je vois qu'elle testé automatiquement puisqu'elle est dans la boucle For

      non?
      0
  9. bezourox Messages postés 730 Date d'inscription   Statut Membre Dernière intervention   143
     
    Je ne vois pas la résolution du problème... Tu t'en es sorti comment ?
    0