Lire les données d'un programme vbs sous au autre format csv ou .txt

Résolu
belouniss Messages postés 39 Date d'inscription mercredi 9 mai 2012 Statut Membre Dernière intervention 9 juillet 2012 - 31 mai 2012 à 13:52
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 - 12 juin 2012 à 11:26
Bonjour, je suis trés novice en programmation et j'aimerais pouvoir lire les tableaux generés par mon programme vbs pour que je puisse verifier mes resultats.
Dim TabSum()
Dim Tab()


For i= 1 to 1000 ' première boucle
ReDim Preserve  Tab(i) ' Redimensionnement de mon tableau
tab(i)= rnd*0.5 
sum=0 

for j= 1 to UBound(tab) 
sum= sum+tab(j) 
next 
ReDim Preserve	tabsum(i) ' Redimensionnement de mon tableau
tabsum(i)=sum 
Next


'' et maintenant je voudrais pouvoir afficher toutes les valeurs de mon tableau sous le format .txt ou csv!


19 réponses

cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
31 mai 2012 à 16:24
 Bonjour,

Pour compléter l'aide de NHenry


Option Explicit
Const MyFile = "H:\Test.txt"
Dim objFso, objTextFile
Dim MyArray
MyArray = Array("line1","line2","line3")

Set objFso = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFso.CreateTextFile(MyFile,True)
objTextFile.WriteLine Join(MyArray, vbCrLf) 
objTextFile.Close
Set objTextFile = Nothing
Set objFso = Nothing



jean-marc
3
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
6 juin 2012 à 18:04
 Bonjour belouniss,

Ajout d'une boucle dans l'écriture des fichiers pour éviter la 1ère ligne vide.


Option Explicit
Const cstFileTablo = "D:\monTest1.txt"
Const cstFileTabSum = "D:\monTest2.txt"
ReDim arrTablo(1000)
ReDim arrTabloSum(1000)
Dim sum, i

Sum = 0
For i = 1 To 1000
   arrTablo(i) = Rnd * 0.5 
   sum = sum + arrTablo(i)
   arrTabloSum(i) = sum
Next

Call WriteTextFile(arrTablo, cstFileTablo)
Call WriteTextFile(arrTabloSum, cstFileTabSum)

Sub WriteTextFile(ArgArray, ArgFile)
   Dim objFso, objTextFile
   Dim j
   Set objFso = CreateObject("Scripting.FileSystemObject")
   Set objTextFile = objFso.CreateTextFile(ArgFile,True)
   For j = 1 To UBound(ArgArray)
      objTextFile.WriteLine ArgArray(j) 
   Next 
   objTextFile.Close
   Set objTextFile = Nothing
   Set objFso = Nothing
End Sub



jean-marc
3
NHenry Messages postés 15112 Date d'inscription vendredi 14 mars 2003 Statut Modérateur Dernière intervention 13 avril 2024 159
31 mai 2012 à 14:23
Bonjour,

MonResult=Join(MonTableau,"Separateur")

---------------------------------------------------------------------
[list=ordered][*]Pour poser correctement une question et optimiser vos chances d'obtenir des réponses, pensez à lire le règlement CS, celui-ci pour bien poser votre question ou encore celui-ci pour les PFE et autres exercices[*]Quand vous postez un code, merci d'utiliser la coloration syntaxique (3ième icône en partant de la droite : )
[*]En VB.NET pensez à activer Option Explicit et Option Strict (propriété du projet) et à retirer l'import automatique de l'espace de nom Microsoft.VisualBasic (onglet Références dans les propriétés du projet).
[*]Si votre problème est résolu (et uniquement si c'est le cas), pensez à mettre "Réponse acceptée" sur le ou les messages qui vous ont aidés./list
---
Mon site
0
belouniss Messages postés 39 Date d'inscription mercredi 9 mai 2012 Statut Membre Dernière intervention 9 juillet 2012
1 juin 2012 à 10:42
JMO, en éxécutant votre script
Option Explicit
Const MyFile = "H:\monTest.vbs"
Dim objFso, objTextFile
Dim MyArray
MyArray = Array("line1","line2","line3")

Set objFso = CreateObject("Scripting.FileSystemObject")
Set objTextFile = objFso.CreateTextFile(MyFile,True)
objTextFile.WriteLine Join(MyArray, vbCrLf) 
objTextFile.Close
Set objTextFile = Nothing
Set objFso = Nothing

Mon programme monTest.vbs s'est écrasé et au lieu d'avoir ses données de tableau sous .csv outxt pour que je puisse les lire j'ai eu monTest.vbs:
line1","line2","line3")
!
je ne comprends vraiment pas comment je peut extraire les données de mes tableaux generées par mes programes!!!!!!!!!!!!!!!!!!
0

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

Posez votre question
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
1 juin 2012 à 11:01
 Bonjour

tabsum sera écrit dans le fichier monTest.txt


Dim TabSum()
Dim Tab()


For i= 1 to 1000 ' première boucle
ReDim Preserve  Tab(i) ' Redimensionnement de mon tableau
tab(i)= rnd*0.5 
sum=0 

for j= 1 to UBound(tab) 
sum= sum+tab(j) 
next 
ReDim Preserve	tabsum(i) ' Redimensionnement de mon tableau
tabsum(i)=sum 
Next
Call WriteTextFile(tabsum)

Sub WriteTextFile(tabsum)
    Const MyFile = "C:\monTest.txt"
    Dim objFso, objTextFile

   Set objFso = CreateObject("Scripting.FileSystemObject")
   Set objTextFile = objFso.CreateTextFile(MyFile,True)
   objTextFile.WriteLine Join(tabsum, vbCrLf) 
   objTextFile.Close
   Set objTextFile = Nothing
   Set objFso = Nothing
End Sub





jean-marc
0
belouniss Messages postés 39 Date d'inscription mercredi 9 mai 2012 Statut Membre Dernière intervention 9 juillet 2012
1 juin 2012 à 13:03
Merci JMO!
mais mon programme est monTest.vbs! et les données du tableau j'aimerai pouvoir toutes les afichées sou *.csv! mais dans votre programme je la voi pas cette extension *.csv!
Navrée mais je suis vraiment novice je n'ai jamais fait cela aupar avant et je ne trouve pas de doc dessus!!!!!!!!
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
1 juin 2012 à 13:18
re-bonjour belouniss





Sub WriteTextFile(tabsum)
    Const MyFile = "C:\MonFichierEnSortie.csv"



Que contient tabsum ?

jean-marc
0
belouniss Messages postés 39 Date d'inscription mercredi 9 mai 2012 Statut Membre Dernière intervention 9 juillet 2012
4 juin 2012 à 11:46
tabsum contient les sommes de mes tab!
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
4 juin 2012 à 12:42
Bonjour à tous,
On peut connaître le sens de :
ReDim Preserve tabsum(i)

idem pour
ReDim Preserve Tab(i)

dans cette boucle for I ?
Où, selon toute évidence, on peut d'emblée dimensionner le tableau à 1000 (valeur max de I) ?
C'est là la raison principale de mon mutisme depuis le début.
Quelqu'un pour m'expliquer ceci gentiment ?

________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
4 juin 2012 à 14:18
Salut Belouniss, salut à tous,

je pense que le mutisme de Ucfoutu est de rigueur, c'est le moins qu'on puisse dire!

Il semble que ce programme n'est qu'un bouchon de test de la mise en oeuvre du langage et n'ait pas d'utilité fonctionnelle!

Le redimensionnement du 1er tableau n'est là que pour permettre à la boucle j de varier!

Le redimensionnement du 2ème n'a aucune utilité!

Belouniss, si le besoin est d'écrire dans un fichier, l'exemple (les 3 devrais-je dire) fourni par JMO est très bien, non?

Il serait, à mon sens, inutile de faire bosser encore plus les bonnes âmes du Forum juste pour te convaincre qu'un langage comme vbs peut exporter le contenu de variables dans des fichiers! Qu'en penses-tu?

à+





rvblogn
Je veux ton bien....et je l'aurais....mieux vaut tard...que trop tard!
0
belouniss Messages postés 39 Date d'inscription mercredi 9 mai 2012 Statut Membre Dernière intervention 9 juillet 2012
4 juin 2012 à 14:36
Bonsoir à vous tous! Merci pour votre aide!
rvblog: c'est vraix que mon prorgamme etait juste un test pour avoir à chaque boucle de j un nouveaux tableau tab() mais aussi un nouveau tableau tabsum() qui somme à chaque fois les valeures de mon tab() et c'est pour cela que j'utilise
redim tabsum()
! il se redimensionne à chaque nvlle boucle de j aussi!!
maintenant que j'ai réussi à avoir mon tabsum final j'aurais aimé pouvoir l'affiché sous .csv!

éxcusez mon ignorance mais je débute en vbs et c'est vraiment pas de la tarte pour moi!!

Merci encor à vous tous!
0
rvblog Messages postés 792 Date d'inscription vendredi 4 mars 2005 Statut Membre Dernière intervention 12 juin 2012 7
4 juin 2012 à 16:45
OK,

ben pour avoir le vrai csv (comma separated values), tu modifies un peu le code de JMO :
objTextFile.WriteLine Join(MyArray, ",")


et pour le csv courant d'Excel :
objTextFile.WriteLine Join(MyArray, ";")


à adapter en fonction de ce que tu veux avoir en ligne ou en colonne.

à+
rvblogn
Je veux ton bien....et je l'aurais....mieux vaut tard...que trop tard!
0
ucfoutu Messages postés 18038 Date d'inscription lundi 7 décembre 2009 Statut Modérateur Dernière intervention 11 avril 2018 211
4 juin 2012 à 17:32
Je reviens avec cette histoire de boucles et re redim preserve :
ceci :
Dim tabloSum(1 To 1000)
Dim Tablo(1 To 1000)
Sum = 0
 For i = 1 To 1000
   Tablo(i) = rnd*0.5 
   Sum = Sum + Tablo(i)
   tabloSum(i) = Sum
 Next

fait exactement la même chose, avec une seule boucle et sans redim preserve




________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
4 juin 2012 à 18:26
 Bonjour belouniss,

Bonjour rvblog et ucfoutu,

Adaptation de la boucle de ucfoutu de vb6 pour vbs


'Dim tabloSum(1 To 1000)
'Dim Tablo(1 To 1000)
ReDim tabloSum(1000)
ReDim Tablo(1000)
Sum = 0
For i = 1 To 1000
   Tablo(i) = rnd*0.5 
   Sum = Sum + Tablo(i)
   tabloSum(i) = Sum
Next
MsgBox "Tablo : " & Space(1) & Tablo(1) & vbTab & "tabloSum : " & tabloSum(1) &vbCrLf&_
       "Tablo : " & Space(1) & Tablo(2) & vbTab & "tabloSum : " & tabloSum(2) &vbCrLf&_
       "Tablo : " & Space(1) & Tablo(3) & vbTab & "tabloSum : " & tabloSum(3) _
       ,,"UBound Tablo : " & UBound(Tablo) & Space(4) & "UBound tabloSum : " & UBound(tabloSum)



jean-marc
0
belouniss Messages postés 39 Date d'inscription mercredi 9 mai 2012 Statut Membre Dernière intervention 9 juillet 2012
6 juin 2012 à 13:06
Grand merci à vous tous surtt Jean-marc!!
Merci beaucoup
0
belouniss Messages postés 39 Date d'inscription mercredi 9 mai 2012 Statut Membre Dernière intervention 9 juillet 2012
6 juin 2012 à 15:51
j'ai implementer le code je jean-marc il marche trés bien, encore une derniére question svp!

comme j'ai plusieurs tableaux dans mes scripts et que je voudrais tous les affichés j'ai réutilisé le code de JMO comme suite:
Dim TabSum()
Dim Tab()


For i= 1 to 1000 ' première boucle
ReDim Preserve  Tab(i) ' Redimensionnement de mon tableau
tab(i)= rnd*0.5 
sum=0 

for j= 1 to UBound(tab) 
sum= sum+tab(j) 
next 
ReDim Preserve	tabsum(i) ' Redimensionnement de mon tableau
tabsum(i)=sum 
Next
Call WriteTextFile(tabsum)

Sub WriteTextFile(tabsum)
    Const MyFile = "C:\monTest1.txt"
    Dim objFso, objTextFile

   Set objFso = CreateObject("Scripting.FileSystemObject")
   Set objTextFile = objFso.CreateTextFile(MyFile,True)
   objTextFile.WriteLine Join(tabsum, vbCrLf) 
   objTextFile.Close
   Set objTextFile = Nothing
   Set objFso = Nothing
End Sub

Call WriteTextFile(tab)

Sub WriteTextFile(tab)
    Const MyFile = "C:\monTest2.txt"
    Dim objFso, objTextFile

   Set objFso = CreateObject("Scripting.FileSystemObject")
   Set objTextFile = objFso.CreateTextFile(MyFile,True)
   objTextFile.WriteLine Join(tab, vbCrLf) 
   objTextFile.Close
   Set objTextFile = Nothing
   Set objFso = Nothing
End Sub




afin de pouvoir affiché et tabsum et tab mais le hic c'est que cela ne marche pas y'a que tab qui est creé! pas les deux!?
0
belouniss Messages postés 39 Date d'inscription mercredi 9 mai 2012 Statut Membre Dernière intervention 9 juillet 2012
12 juin 2012 à 10:12
et pour un tableau à deux dimension?
0
belouniss Messages postés 39 Date d'inscription mercredi 9 mai 2012 Statut Membre Dernière intervention 9 juillet 2012
12 juin 2012 à 10:14
et pour un tbleau à deux dimension? je n'arrive pas à l'afficher avec ce code j'imagine que je dois le parcourire pour les deux dimensions mais je n'y arrive pas j'ai tjrs des erreurs de syntax!!!
Merci encore pour tte vos repnses!
0
cs_JMO Messages postés 1854 Date d'inscription jeudi 23 mai 2002 Statut Membre Dernière intervention 24 juin 2018 27
12 juin 2012 à 11:26
Bonjour le Forum,
Bonjour belouniss

Exemple

Option Explicit
Const MyFile = "D:\Tableau.txt"

'Le fichier Tableau contient
'ligne1;comment1;libelle1
'ligne2;comment2;libelle2
'ligne3;comment3;libelle3

Dim objFso, objTextStream, arrLine, liste, imax, i

Set objFso = CreateObject("Scripting.FileSystemObject")
Set objTextStream = objFso.OpenTextFile(MyFile, 1) 

Do While Not ObjTextStream.AtEndOfStream
   arrLine = Split(objTextStream.ReadLine,";") 
   imax = imax + 1
   ReDim Preserve Tableau(3, imax)
   Tableau(1, imax) = arrLine(0)
   Tableau(2, imax) = arrLine(1)
   Tableau(3, imax) = arrLine(2)
Loop
objTextStream.Close
Set objTextStream = Nothing
Set objFso  = Nothing 

For i = 1 To imax
    liste = liste & vbCrLf & Tableau(1, i) & vbTab &_
            Tableau(2, i) & vbTab & Tableau(3, i)
Next
MsgBox liste,,"Exemple"




jean-marc
0
Rejoignez-nous