Problème urgent vbs erreur 800A01A8 - VB/VBA/VBS - Programmation
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
Marsh Posté le 07-02-2007 à 09:55:04
seniorpapou a écrit : Bonjour, |
Merci pour la remarque du titre
Qu'est ce que tu entends par "sortir les XXX"?
Ca veut dire quoi "IF"???
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
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.
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!!!!!!!!!!!!!!!!!!!
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?
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
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
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
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
Marsh Posté le 07-02-2007 à 11:42:12
Merci beaucoup Seniorpapou et Ingenieurcesi!!!!!!
Maintenant j'ai un autre problème....
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..
Code :
|
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?
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
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)
Marsh Posté le 08-02-2007 à 08:04:45
seniorpapou a écrit : bonsoir, |
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.
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
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
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....
Aidez-moi svp!!!!!
C'est vraiment très urgent!!!
Merci de votre compréhension!!!
Message édité par slr56 le 07-02-2007 à 10:12:34