Problème urgent vbs erreur 800A01A8

Problème urgent vbs erreur 800A01A8 - VB/VBA/VBS - Programmation

Marsh Posté le 07-02-2007 à 09:25:54    

Bonjour à tous,
 
je travaille en VBS
 
j'ai un problème très urgent qui doit être réglé pour demain!!!! Je vous explique le topo :  
j'ai un répertoire "A" qui contient un répertoire "B"
Dans le répertoire "A" il y a un ensemble de fichiers textes de 1 à N
Dans le répertoire "B", il y a aussi un ensemble de fichiers textes de 1 à N ayant les mêmes noms que ceux dans "A".
 
Je veux comparer les noms des fichiers du répertoire "A" et les noms des fichiers du répertoire "B".
Quand les noms de fichiers sont identiques, je veux récupérer le contenu des fichiers en utilisant la fonction "mid".(ça je sais le faire)
Ensuite je vais insérer ces mid dans ma base ACCESS avec l'insert into (je sais le faire aussi)
 
Mais comment  
 

Code :
  1. Set chemin1 = FSO.GetFolder(A)
  2. Set chemin2=FSO.GetFolder(B)
  3. Set collection_fichiers = chemin1.Files
  4. Set collection_fichier2 = chemin2.Files
  5. For Each fichier1 In collection_fichiers
  6.    ff1=right(fichier1,len(fichier1)-instrrev(fichier1,"\" ))
  7.     Set fichier_a_lire=FSO.OpenTextFile(fichier1,ForReading)
  8.         fichier2=chemin2 & "\" & ff1
  9.     ff2=right(fichier2,len(fichier2)-instrrev(fichier2,"\" ))
  10.         IF ff1=ff2 AND (ff1.Name <> erreur1) AND (ff1.Name <> erreur2)THEN
  11.                 ligne=fichier_a_lire.readline
  12.                 ligne2=ff2.readline


 
Voici ce que j'ai déjà fait mais j'ai déjà un problème à la ligne 14.
Erreur : Objet requis :'XXXXY'
Code : 800A01A8
Je ne comprends vraiment pas l'erreur.... :(  :sweat:  :sweat:  :cry:  :cry:  :cry:  :cry:  
 
Aidez-moi svp!!!!! :cry:  :cry:  
 
C'est vraiment très urgent!!!
Merci de votre compréhension!!!


Message édité par slr56 le 07-02-2007 à 10:12:34
Reply

Marsh Posté le 07-02-2007 à 09:25:54   

Reply

Marsh Posté le 07-02-2007 à 09:51:58    

Bonjour,
retires les majuscules de ton titre, tu vas te faire jeter pour rien,
 
pour ton pb, éloimines les pb par exemple en sortant tes deux XXX...
 
tu les mets dans une variable avant ton IF.  
je ne travaille pas en VBS, mais en VBA il faut mettre des espaces entre le <> et le"
Cordialement

Reply

Marsh Posté le 07-02-2007 à 09:55:04    

seniorpapou a écrit :

Bonjour,
retires les majuscules de ton titre, tu vas te faire jeter pour rien,
 
pour ton pb, éloimines les pb par exemple en sortant tes deux XXX...
 
tu les mets dans une variable avant ton IF.  
je ne travaille pas en VBS, mais en VBA il faut mettre des espaces entre le <> et le"
Cordialement


 
Merci pour la remarque du titre  ;)  
 
 
Qu'est ce que tu entends par "sortir les XXX"? :heink:  
Ca veut dire quoi "IF"???  :ange:  

Reply

Marsh Posté le 07-02-2007 à 09:59:51    

re,
 
monxy="XXXXY.txt"
monxz="XXXXZ.txt"  
IF ff1=ff2 AND (ff1.Name <> monxy ) AND (ff1.Name <> monxz)THEN
 
le IF c'est le IF qui commence ta ligne 14

Reply

Marsh Posté le 07-02-2007 à 10:05:55    

j'ai corrigé mais malheuresement le problème est toujours le même :(.
 
Merci quand même de ton aide seniorpapou.

Reply

Marsh Posté le 07-02-2007 à 10:18:22    

Si quelqu'un à une solution différente de la mienne mais qui me donne ce que je veux en résultat, je suis preneur!!!!!!!!!!!!!!!!!!! :)

Reply

Marsh Posté le 07-02-2007 à 10:42:59    

re,
que représente ton ff1.name?

Reply

Marsh Posté le 07-02-2007 à 11:01:16    

le nom du fichier qui est instanciée dans la variable ff1
 
C'est bien la propriété "Name" qui reprend le nom du fichier, non? :??:


Message édité par slr56 le 07-02-2007 à 11:01:29
Reply

Marsh Posté le 07-02-2007 à 11:01:41    

re,
ne serait-ce pas un peu cela?
 
Set chemin1 = fso.GetFolder("c:\asuppr1" )
Set chemin2 = fso.GetFolder("c:\asuppr2" )
Set collection_fichiers = chemin1.Files
Set collection_fichier2 = chemin2.Files
 
 
 
For Each fichier1 In collection_fichiers
 
   ff1 = Right(fichier1, Len(fichier1) - InStrRev(fichier1, "\" ))
   If ff1 <> "erreur1.txt" And ff1 <> "erreur2.txt" Then
    Forreading = 1
     
        For Each fichier2 In collection_fichier2
            ff2 = Right(fichier2, Len(fichier2) - InStrRev(fichier2, "\" ))
     
            If ff1 = ff2 Then
            Set fichier1_a_lire = fso.OpenTextFile(fichier1, Forreading)
            Set fichier2_a_lire = fso.OpenTextFile(fichier2, Forreading)
            ligne1 = fichier1_a_lire.readline
                 
            ligne2 = fichier2_a_lire.readline
             
            'etc..etc..
            End If
           Next fichier2
    End If
Next

Reply

Marsh Posté le 07-02-2007 à 11:03:38    

re,re,
C'est bien la propriété "Name" qui reprend le nom du fichier, non?  
 
ton nom de fichier est dans ff1, si tu veux retirer l'extension, enlèves les 4 derniers caractères

Reply

Marsh Posté le 07-02-2007 à 11:03:38   

Reply

Marsh Posté le 07-02-2007 à 11:04:50    

bonjour,
 
à la place de
IF ff1=ff2 AND (ff1.Name <> erreur1) AND (ff1.Name <> erreur2)THEN
 
tu peux peut etre utiliser ca
Set cp1 = CreateObject("Scripting.filesystemobject" )
If cp1.fileExists(TON FICHIER) = True Then
 
à tester

Reply

Marsh Posté le 07-02-2007 à 11:15:21    

avec la sugggestion d'ingenieurcesi cela devient
 
Set chemin1 = fso.GetFolder("c:\asuppr1" )
Set chemin2 = fso.GetFolder("c:\asuppr2" )
Set collection_fichiers = chemin1.Files
Set collection_fichier2 = chemin2.Files
 
 
 
For Each fichier1 In collection_fichiers
 
   ff1 = Right(fichier1, Len(fichier1) - InStrRev(fichier1, "\" ))
   If ff1 <> "erreur1.txt" And ff1 <> "erreur2.txt" Then
    Forreading = 1
    fichier2 = chemin2 & "\" & ff1
    If fso.fileExists(fichier2) = True Then
         
             
            Set fichier1_a_lire = fso.OpenTextFile(fichier1, Forreading)
            Set fichier2_a_lire = fso.OpenTextFile(fichier2, Forreading)
            ligne1 = fichier1_a_lire.readline
                 
            ligne2 = fichier2_a_lire.readline
             
            'etc..etc..
            End If
           
    End If
Next

Reply

Marsh Posté le 07-02-2007 à 11:42:12    

Merci beaucoup Seniorpapou et Ingenieurcesi!!!!!! :love:  :love:  :love:  
 
Maintenant j'ai un autre problème.... :ange:  :ange:  
 
Là, je fais la comparaison caractère après caractère des fichiers "égaux" par le nom, j'ai mis des msgbox dans les boucles pour vérifier qu'il rentre dedans or... il ne rentre pas dans les boucles SI !!!!Je sais que mon code est barbare... mais si quelqu'un pouvait m'aider ce ne serait pas de refus..  :ange:  
 
 

Code :
  1. DO WHILE NOT fichier_a_lire.AtEndOfStream
  2.                
  3.                                                 IF(mid(ligne2,1,8)="   5    " ) AND (mid(ligne2,38,6)=(mid(ligne,1,6)))THEN
  4.                                                        var_Ad_mac=mid(ligne2,9,14)
  5.                                                         ELSE IF ((mid(ligne2,1,6 )="5     " ) AND ((mid(ligne2,37,4)=(mid(ligne,2,4))) OR ((mid(ligne2,1,6)="5     " ) AND (((mid(ligne2,37,4)=(mid(ligne,34,4)))))))) THEN
  6.                                                                 var_Ad_mac=mid(ligne2,7,17)
  7.                                                         END IF
  8.                                                 END IF
  9.                                                 IF (mid(ligne,26,10)="connected " OR mid(ligne,26,10)="notconnect" ) AND mid(ligne,48,6)="normal" THEN
  10.                                                         IF mid(ligne,1,2)="NZ" then
  11.                                                                 var_Ip_routeur=mid(ligne,1,7)
  12.                                                         END IF
  13.                                                 END IF
  14. LOOP


Message édité par slr56 le 07-02-2007 à 12:30:41
Reply

Marsh Posté le 07-02-2007 à 16:18:16    

up!

Reply

Marsh Posté le 07-02-2007 à 18:03:15    

bonsoir,
tu  n'as pas la possibilté d'envoyer deux fichiers ?
et de préciser ce que tu penses faire dans cette boucle?
dans ta boucle do while......loop, tu ne lis pas d'autre ligne, est-ce normal?

Message cité 1 fois
Message édité par seniorpapou le 07-02-2007 à 18:04:11
Reply

Marsh Posté le 07-02-2007 à 22:43:49    

comment veux tu que mid(ligne2,1,8) soit egal à 5 alors que la longeur est de 8

Reply

Marsh Posté le 07-02-2007 à 22:45:28    

c pareil pour
mid(ligne,26,10)="connected "

Reply

Marsh Posté le 08-02-2007 à 07:43:51    

les espaces ne sont pas comptés?????

Reply

Marsh Posté le 08-02-2007 à 07:46:50    

parce que tel c'est ici, je recherche la chaine"$$$5$$$$"
 
Ici, chaque dollar représente un espace.Il y a 3 espaces, le chiffre 5 et 4 espaces.
donc 8 caractères, c'est pourquoi dans la ligne2, je cherche à partir du premier caractère, sur 8 caractères :   mid(ligne2,1,8)


Message édité par slr56 le 08-02-2007 à 07:49:20
Reply

Marsh Posté le 08-02-2007 à 08:04:45    

seniorpapou a écrit :

bonsoir,
tu  n'as pas la possibilté d'envoyer deux fichiers ?
et de préciser ce que tu penses faire dans cette boucle?
dans ta boucle do while......loop, tu ne lis pas d'autre ligne, est-ce normal?


 
je lis d'autres lignes mais je n'ai pas tout mis dans ce post. Le principe est le même pour les autres. Donc si je trouve le problème pour ces boucles je trouverai les erreur pour les autres.
 
Je peux envoyer 2 fichiers. Quand tu veux.

Reply

Marsh Posté le 08-02-2007 à 08:16:21    

pour tes problemes d'espaces, la fonction trim() prend une string et renvoie une string sans les espaces de début et de fin. Histoire de simplifier le probleme

Reply

Marsh Posté le 08-02-2007 à 13:31:01    

merci pour l'info ThX!

Reply

Marsh Posté le    

Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed