Test sous forme de boucle

Résolu
Signaler
Messages postés
39
Date d'inscription
dimanche 28 novembre 2004
Statut
Membre
Dernière intervention
4 juin 2007
-
Messages postés
39
Date d'inscription
dimanche 28 novembre 2004
Statut
Membre
Dernière intervention
4 juin 2007
-
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

Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
18
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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 109 internautes nous ont dit merci ce mois-ci

Messages postés
39
Date d'inscription
dimanche 28 novembre 2004
Statut
Membre
Dernière intervention
4 juin 2007

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
Merci

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources 109 internautes nous ont dit merci ce mois-ci

Messages postés
4030
Date d'inscription
mardi 13 mai 2003
Statut
Modérateur
Dernière intervention
23 décembre 2008
22
> 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.
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
18
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
Messages postés
39
Date d'inscription
dimanche 28 novembre 2004
Statut
Membre
Dernière intervention
4 juin 2007

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
Messages postés
3757
Date d'inscription
mardi 23 septembre 2003
Statut
Modérateur
Dernière intervention
13 mars 2006
18
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