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

Messages postés
39
Date d'inscription
mercredi 9 mai 2012
Statut
Membre
Dernière intervention
9 juillet 2012
- - Dernière réponse : cs_JMO
Messages postés
1855
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!


Afficher la suite 

19 réponses

Meilleure réponse
Messages postés
1855
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
23
3
Merci
 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

Dire « Merci » 3

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

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

Commenter la réponse de cs_JMO
Messages postés
1855
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
23
3
Merci
 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

Dire « Merci » 3

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

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

Commenter la réponse de cs_JMO
Messages postés
14486
Date d'inscription
vendredi 14 mars 2003
Statut
Modérateur
Dernière intervention
17 juin 2019
131
0
Merci
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
Commenter la réponse de NHenry
Messages postés
39
Date d'inscription
mercredi 9 mai 2012
Statut
Membre
Dernière intervention
9 juillet 2012
0
Merci
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!!!!!!!!!!!!!!!!!!
Commenter la réponse de belouniss
Messages postés
1855
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
23
0
Merci
 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
Commenter la réponse de cs_JMO
Messages postés
39
Date d'inscription
mercredi 9 mai 2012
Statut
Membre
Dernière intervention
9 juillet 2012
0
Merci
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!!!!!!!!
Commenter la réponse de belouniss
Messages postés
1855
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
23
0
Merci
re-bonjour belouniss





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



Que contient tabsum ?

jean-marc
Commenter la réponse de cs_JMO
Messages postés
39
Date d'inscription
mercredi 9 mai 2012
Statut
Membre
Dernière intervention
9 juillet 2012
0
Merci
tabsum contient les sommes de mes tab!
Commenter la réponse de belouniss
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
209
0
Merci
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
Commenter la réponse de ucfoutu
Messages postés
794
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
12 juin 2012
5
0
Merci
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!
Commenter la réponse de rvblog
Messages postés
39
Date d'inscription
mercredi 9 mai 2012
Statut
Membre
Dernière intervention
9 juillet 2012
0
Merci
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!
Commenter la réponse de belouniss
Messages postés
794
Date d'inscription
vendredi 4 mars 2005
Statut
Membre
Dernière intervention
12 juin 2012
5
0
Merci
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!
Commenter la réponse de rvblog
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Modérateur
Dernière intervention
11 avril 2018
209
0
Merci
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
Commenter la réponse de ucfoutu
Messages postés
1855
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
23
0
Merci
 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
Commenter la réponse de cs_JMO
Messages postés
39
Date d'inscription
mercredi 9 mai 2012
Statut
Membre
Dernière intervention
9 juillet 2012
0
Merci
Grand merci à vous tous surtt Jean-marc!!
Merci beaucoup
Commenter la réponse de belouniss
Messages postés
39
Date d'inscription
mercredi 9 mai 2012
Statut
Membre
Dernière intervention
9 juillet 2012
0
Merci
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!?
Commenter la réponse de belouniss
Messages postés
39
Date d'inscription
mercredi 9 mai 2012
Statut
Membre
Dernière intervention
9 juillet 2012
0
Merci
et pour un tableau à deux dimension?
Commenter la réponse de belouniss
Messages postés
39
Date d'inscription
mercredi 9 mai 2012
Statut
Membre
Dernière intervention
9 juillet 2012
0
Merci
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!
Commenter la réponse de belouniss
Messages postés
1855
Date d'inscription
jeudi 23 mai 2002
Statut
Membre
Dernière intervention
24 juin 2018
23
0
Merci
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
Commenter la réponse de cs_JMO