Problème avec un code

Résolu/Fermé
nick_2428 Messages postés 31 Date d'inscription lundi 5 novembre 2012 Statut Membre Dernière intervention 5 juillet 2015 - 5 nov. 2012 à 03:34
nick_2428 Messages postés 31 Date d'inscription lundi 5 novembre 2012 Statut Membre Dernière intervention 5 juillet 2015 - 5 nov. 2012 à 16:34
Bonjour,

Je suis débutant dans le domaine et j'apprends la programmation sur le tas en lisant divers articles sur le web. Mon problème est le suivant. J,ai une base de donnée qui compte 20 lignes et qui se répète 3500 fois. J,ai déjà un code qui fait la boucle pour un array. Jusque là tout fonctionne. Mon problème survient lorsque je désire mettre une condition supplémentaire pour isolé la variable recherché de mon array. Voici le code qui me sert à autres choses avec lequel j,essaie d,ajuster le ce que je cherche à faire.

Le 1er code marche parfaitement:

strSourceFile = "C:\.....txt"
strResultat = "C:\......ods"


Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.openTextFile(strSourceFile, 1,true)
Set objResultat = objFSO.openTextFile(strResultat, 8,true)

dim Myarray (20)
x=0

Do until objTextFile.AtEndOfStream
MyArray(x) = objTextFile.ReadLine
strPot = Mid(MyArray(1),8,2)
strConst = Mid(MyArray(1),11,2)

If x = 19 Then
x=0
objResultat.writeline MyArray(13)&" "&strPot&" "&"/"&" "&strConst
Else
x=x+1
End If
Loop
objTextFile.close
objResultat.close
wscript.quit

Voici celui avec lequel j,ai un problème:

strSourceFile = "C:\.....txt"
strResultat = "C:\......ods"


Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.openTextFile(strSourceFile, 1,true)
Set objResultat = objFSO.openTextFile(strResultat, 8,true)

dim Myarray (20)
x=0

Do until objTextFile.AtEndOfStream
MyArray(x) = objTextFile.ReadLine
StrRetraite = Mid(MyArray(6),2,2)

If x = 6 And StrRetraite = 1 Then
objResultat.writeline MyArray(13)

Elseif x = 19 Then
x=0

Else
x=x+1

End If
Loop
objTextFile.close
objResultat.close
wscript.quit

Je sais que le code n,est pas bon du tout, mais j,ai aucune idée comment intégrer la 2e condition à mon code. En gros, j'aimerai qu'à toute les fois que mon Array(20) soit rendu à la 7e ligne du Array (Array (6)), qu'il regarde la position Mid(MyArray(6),2,2). Si elle égale à 1, j'aimerais que la 14e ligne (Array(13)) soit marqué et que ça se fasse pour mes 3500 array de ma base de données.

J,espère m'être bien expliqué, dsl, je ne suis pas encore un habitué du language de programmation et c'est difficile pour le moment de bien m,exprimer en ce sens.

Merci de bien vouloir me donner un coup de main.

Merci

Nick
A voir également:

3 réponses

Heliotte Messages postés 1491 Date d'inscription vendredi 26 octobre 2012 Statut Membre Dernière intervention 28 janvier 2013 92
5 nov. 2012 à 09:24
Bonjour nick_2428,

Je ne sait pas si quelqu'un a compris, moi pas.
Définitions:
- Une base de données, contient une ou plusieurs table(s).
- Une table contient un à plusieurs champs (si une table ne contient qu'un seul champ, on peut la supprimer et ajouter son en tant que propriété à une autre table).
_ une table peut ne pas contenir d'occurrence (enregistrement) ou plusieurs occurrences.
Explique avec plus de précision.
1
Bonjour,

Si j'ai bien compris:
On lit 20 lignes de suite, si la 7ème ligne remplit la condition, on écrit la 14ème ligne dans le fichier resultat.

strSourceFile = "C:\.....txt" 
strResultat = "C:\......ods" 
Set objFSO = CreateObject("Scripting.FileSystemObject") 
Set objTextFile = objFSO.openTextFile(strSourceFile, 1,true) 
Set objResultat = objFSO.openTextFile(strResultat, 8,true) 
dim Myarray (20) 

x=0 
Do until objTextFile.AtEndOfStream 
MyArray(x) = objTextFile.ReadLine
If x=19 Then
   StrRetraite = Mid(MyArray(6),2,2) 
   If StrRetraite = 1 Then 
       objResultat.writeline MyArray(13) 
   End If 
   x=0 
Else 
   x=x+1 
End If 
Loop
 
objTextFile.close 
objResultat.close 
wscript.quit 


Il faut que le fichier base de données ait un nombre de lignes multiple de 20.

A+
1
nick_2428 Messages postés 31 Date d'inscription lundi 5 novembre 2012 Statut Membre Dernière intervention 5 juillet 2015
5 nov. 2012 à 14:21
Merci Heliotte d'avoir essayé de me donner un coup de main. Je sais que je n'utilise pas les bons mots pour exprimer ce que je veux et souvent ça me cause problèmes lors de mes recherches internet.

Yoda a réglé mon problème. C'est exactement ça que je cherchais à faire et tout marche parfaitement. Merci énormément du coup de main et je vois maintenant ou mon code n'était pas correct.

En apprenant de façon autodidacte, c'est pas toujours évident et même si je suis un habitué de se site (je lis très souvent les questions des autres pour en apprendre d'avantage), il s'agissait de ma 1ere question posé ici et je dois dire que tout le monde semble très respectueux et prêt à aider. Votre rapidité à répondre est très apprécié.

Merci à vous 2.

Dernière question, si je voulais mettre un titre aux résultats obtenus qui ne se répète pas à chaque résultats obtenus, comment faire? je sais qu'en marquant ceci, ça fonctionne, mais ça répète le titre à chaque boucle, donc 3500 fois, en plus des résultats obtenus. Ce qui n,est pas ce que je recherche à faire.

strSourceFile = "C:\.....txt"
strResultat = "C:\......ods"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.openTextFile(strSourceFile, 1,true)
Set objResultat = objFSO.openTextFile(strResultat, 8,true)
dim Myarray (20)

x=0
Do until objTextFile.AtEndOfStream
MyArray(x) = objTextFile.ReadLine
If x=19 Then
StrRetraite = Mid(MyArray(6),2,2)
If StrRetraite = 1 Then
objResultat.writeline "ADRESSES"
objResultat.writeline MyArray(13)
End If
x=0
Else
x=x+1
End If
Loop

objTextFile.close
objResultat.close
wscript.quit

J,aimerais que le titre soit marqué seulement à la ligne 1 du fichier des résultats obtenus et que les résultats obtenus viennent ensuite tour à tour. J,espère encore une vois avoir été assez claire pour me faire comprendre, mes excuses encore une fois.

Merci
0
Il faut ecrire ADRESSES avant d'entrer dans la boucle

strSourceFile = "C:\.....txt"
strResultat = "C:\......ods"
Set objFSO = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFSO.openTextFile(strSourceFile, 1,true)
Set objResultat = objFSO.openTextFile(strResultat, 8,true)
dim Myarray (20)

x=0
objResultat.writeline "ADRESSES"

Do until objTextFile.AtEndOfStream
MyArray(x) = objTextFile.ReadLine
If x=19 Then
StrRetraite = Mid(MyArray(6),2,2)
If StrRetraite = 1 Then
objResultat.writeline MyArray(13)
End If
x=0
Else
x=x+1
End If
Loop

objTextFile.close
objResultat.close
wscript.quit

A+.
0
nick_2428 Messages postés 31 Date d'inscription lundi 5 novembre 2012 Statut Membre Dernière intervention 5 juillet 2015
5 nov. 2012 à 16:34
Merci, je l'ai essayé avant de poser la question, mais j'avais fais une erreur de positionnement. Merci énormément encore.

a+
0