Test sous forme de boucle

Résolu
kg_online Messages postés 39 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 4 juin 2007 - 10 févr. 2005 à 17:35
kg_online Messages postés 39 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 4 juin 2007 - 15 févr. 2005 à 17:40
Salut tout le monde
j'ai réalisé avec les if....then un programme qui fait une centaine de test et ça marche très bien.En fait,à chaque il cherche un fichier (correspondant et compare son poids avec un poids de référence.
Ce pendant j'ai décidé de le faire sous forme de boucle et pour se faire j'ai stocker toutes les infos dans deux tableaux....
J'ai créé une boucle mais ça marche pas bien et je sais pas ou se situe le problème.
Merci de votre aide!

voici mon code:


toto fl.Name<?xml:namespace prefix o ns = "urn:schemas-microsoft-com:office:office" />


poids = fl.Size
'''''''''''''''''''''''''''''''''''''''''''''''''''''


Do Until a = 24


a = a + 1


i = a


If InStr(toto, Nom(i)) > 0 Then


If poids < Max(i) Then


MsgBox ("c'est bon T=" & toto)


Else


MsgBox "pas bon"


End If


End If




Loop
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''


Next fl


Close #1

6 réponses

cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
11 févr. 2005 à 13:19
Seulement, il faut que tes tableaux soient remplis (24 lignes) sinon, il faudra les remplir autrement :

Dim Nom() As String
Dim Max() As Double

Open "c:\documents and settings\???????\bureau\config.txt" For Input As #1

''''''''''''''''''''''''''l'''''''''''ire jusqu'à la fin de la page''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''
Do Until EOF(1)
i = i + 1
redim preserve nom(i)
redim preserve max(i)
Line Input #1, Ligne
Var1 = Mid(Ligne, 1, 6)
Var2 = Mid(Ligne, 11, 19)
'''''''''''''''''''''''chargement des infos du fichier config dans les deux tableaux'''''''''''''''
Max(i) = (Var1)
Nom(i) = Trim(Var2)
Loop

close #1

Cordialement, CanisLupus
3
kg_online Messages postés 39 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 4 juin 2007
15 févr. 2005 à 17:40
Salut tout le monde!

J'ai finalement trouvé la solution c'est:
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Dim i As Integer<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />


'Déclaration de tableau


Dim Nom(1 To 54) As String


Dim Max(1 To 54) As Double


Dim var3 As Double





'ouverture de la feuille à lire


Open "c:\documents and settings\?????????\bureau\config.txt" For Input As #1


'lire jusqu'à la fin de la page


'''''''





Do Until EOF(1)


i = i + 1


Line Input #1, Ligne


Var1 = Mid(Ligne, 1, 7)


var2 = Mid(Ligne, 12, 14)


Max(i) = (Var1)


Nom(i) = Trim(var2) 'Trim sert à enlever les espaces





Loop


'''''''


Dim fos As Scripting.FileSystemObject


Dim fd As Scripting.Folder


Dim fl As Scripting.File


Dim sFolder As String





'Initialisation du nom du dossier


sFolder = Text1


Set fos = CreateObject("Scripting.FileSystemObject")


'Récupérer l'instance du dossier


Set fd = fos.GetFolder(sFolder)


a = 2


Do Until a = 51


a = a + 1


For Each fl In fd.Files


toto = fl.Name


poids = fl.Size


If InStr(toto, Nom(a)) > 0 Then


If poids < Max(a) Then


MsgBox ("c'est bon T=" & toto)


Else


MsgBox "pas bon" & toto


End If


End If


Next fl


Loop


Close #1


_______________________________________________________________________


le fichier texte est

config.text il comporte:





1024 "AMR" S4


6656 "MID_8_PV.mid" S3r_PV


11294 "MID_8.mid" S3r
''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''

Merci beaucoup à CanisLupus et à Manu!
@bientôt
3
econs Messages postés 4030 Date d'inscription mardi 13 mai 2003 Statut Membre Dernière intervention 23 décembre 2008 24
10 févr. 2005 à 18:35
> J'ai créé une boucle mais ça marche pas bien



C'est un peu flou comme descriptif pour ton problème.

Que veux-tu obtenir ? Et qu'obtiens-tu d'indésirable ?




Manu
-------------------------------------------
Une question bien posée, c'est une chance de réponse bien adaptée.
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
10 févr. 2005 à 20:56
Salut,

Je ne sais pas si j'ai bien décodé ta question.
Tu veux controler si tes fichiers ne dépassent pas une certaine taille ?

Comment est initialisé a ? à 0 ? à -1 ? ...
Si tu utilises déjà a, pourquoi faire i=a ?

si ton tableau commence à 0 :

a=0
Do Until a = 24
If InStr(toto, Nom(a)) > 0 Then<?xml:namespace prefix o ns "urn:schemas-microsoft-com:office:office" />


If poids <= Max(a) Then


MsgBox ("c'est bon T=" & toto)


Else


MsgBox "pas bon"


End If


End If
a=a+1




Loop

Sinon, sois plus précis.

Cordialement, CanisLupus
0

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

Posez votre question
kg_online Messages postés 39 Date d'inscription dimanche 28 novembre 2004 Statut Membre Dernière intervention 4 juin 2007
10 févr. 2005 à 23:24
CanisLupus

j'ai déjà essayé ta méthode mais ça marche pas en gros ça marche pas comme je le souhaite.Sinon pour l'initialisation de a je pense pas que ça pose problème parce que a= 0 par défaut je l'ai vérifié.Aussi j'ai utiliser a par ce que j'ai déjà utilisé i précédement

Manu


J'ai un dossier qui comporte plusieurs fichiers et je veux vérifier, pour chacun de ces fichiers, que la taille ne dépasse pas une certaine taille de référence.

Je pense que je vais vous envoyer ce qui précéde peut être vous comprendrez mieux.
Voilà!!!!

-------------------------------------------------------------------------------------------
Private Sub Command1_Click()
'''''''
Dim i As Integer
''''''''''''''''''''''''''''''''''''''''Déclaration de tableau'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Dim Nom(1 To 24) As String
Dim Max(1 To 24) As Double
Dim var3 As Double
'''''''''''''''''''''''''''''''''''''''''ouverture du fichier config'''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Open "c:\documents and settings\???????\bureau\config.txt" For Input As #1

''''''''''''''''''''''''''l'''''''''''ire jusqu'à la fin de la page''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
'''''''
Do Until EOF(1)
i = i + 1
Line Input #1, Ligne
Var1 = Mid(Ligne, 1, 6)
Var2 = Mid(Ligne, 11, 19)
'''''''''''''''''''''''chargement des infos du fichier config dans les deux tableaux'''''''''''''''
Max(i) = (Var1)
Nom(i) = Trim(Var2)
Loop
'''''''
Dim fos As Scripting.FileSystemObject
Dim fd As Scripting.Folder
Dim fl As Scripting.File
Dim sFolder As String
''''''''''''''''''''''''''''''''''Initialisation du nom du dossier''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
sFolder = "dossier?????????????????"
Set fos = CreateObject("Scripting.FileSystemObject")
'Récupérer l'instance du dossier
Set fd = fos.GetFolder(sFolder)
''''''''''''''''''''''''''''''''''lister les fichiers''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
For Each fl In fd.Files
toto = fl.Name
poids = fl.Size
''''''''' ''''''''''''''''''''''''la boucle''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''''
Do until a=24
a=a+1
If InStr(toto, Nom(i)) > 0 Then
If poids < Max(i) Then
MsgBox ("c'est bon T=" & toto)
Else
MsgBox "pas bon"
End If
End If
Next fl
Close #1
End Sub
---------------------------------------------------------------------------------------


Le fichier config.text:

6656 MID_8_PV.mid
11294 MID_8.mid
102000 AMR_PV.amr
40000 AMR.amr
-------------------------------------------------------------------------------------
RMQ : Sinon pour les if.......then ça marche et c'est:

For Each fl In fd.Files
toto = fl.Name
poids = fl.Size

If InStr(toto, Nom(1)) > 0 Then
If poids < Max(1) Then
MsgBox ("c'est bon T=" & toto)
Else
MsgBox "pas bon"
End If
End If
If InStr(toto, Nom(2)) > 0 Then
If poids < Max(2) Then
MsgBox ("c'est bon T=" & toto)
Else
MsgBox "pas le bon"
End If
End If
If InStr(toto, Nom(3)) > 0 Then
If poids < Max(3) Then
MsgBox ("c'est bon T=" & toto)
Else
MsgBox "pas le bon"
End If
End If

Next fl
Close #1
0
cs_CanisLupus Messages postés 3757 Date d'inscription mardi 23 septembre 2003 Statut Membre Dernière intervention 13 mars 2006 20
11 févr. 2005 à 13:12
Alors essaie ça :

For Each fl In fd.Files
toto = fl.Name
poids = fl.Size

For a = 1 To UBound(toto)
If InStr(toto, Nom(a)) > 0 Then
If poids < Max(a) Then
MsgBox ("c'est bon T=" & toto)
Else
MsgBox "pas bon"
End If
End If
Next a

Next fl

Cordialement, CanisLupus
0
Rejoignez-nous