Problème en vbs

nick_2428 Messages postés 30 Date d'inscription   Statut Membre Dernière intervention   -  
Polux31 Messages postés 7219 Statut Membre -
Bonjour à tous,

j'aimerais pouvoir effectuer une addition de plusieurs variable dans un fichier texte en vbscript. J,ai par exemple, un fichier texte contenant un nombre sur chaque ligne du genre:

(ligne 1) 15
(ligne 2) 20
(ligne 3) 30
(ligne 4) 15

À quoi devrait ressembler le bout de code pour être en mesure d'avoir 80 comme résultat final, considérant que mon fichier n'as pas un nombre fixe de ligne à chaque journée où le code sera utiliser pour recueillir l'information?

Merci d'avance du coup de main

5 réponses

  1. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Bonjour,

    Un truc comme ça peut être:

    Dim cpt As Integer
    Dim fp As Integer
    Dim str As String
    
    fp = Freefile
    
    Open "C:\monfichier.txt" For Input As #fp 
    While Not EOF(#fp)
         Input #fp, str
         cpt = cpt + CInt(str)
    Wend
    
    Close #fp
    
    MsgBox cpt

    «Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
    Nicolas Boileau
    0
  2. nick_2428 Messages postés 30 Date d'inscription   Statut Membre Dernière intervention  
     
    Salut, merci de la réponse. Est-ce que c'es bien du vbs? J'ai tester tel quel et ça ne fonctionne pas.

    J'ai ensuite adapter le code pour qu'il soit fonctionnel, mais il n'affiche rien comme résultat.

    strSourceFile = "C:\monfichier.txt"

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

    Dim cpt
    Dim fp
    Dim str

    fp = objTextFile.readall

    While Not objTextFile.AtEndOfStream
    Input fp, str
    cpt = cpt + CInt(str)
    Wend

    objTextFile.close

    MsgBox cpt

    Merci encore d'y jeter un oeil.
    0
  3. Polux31 Messages postés 7219 Statut Membre 1 204
     
    C'est du VB, ça donne des pistes, et ça ouvre la possibilité de faire des recherches...

    ReadAll
    lit tout le fichier, ce n'est pas ce que tu cherches à faire, puisque tu veux additionner chaque ligne de ton fichier.

    Dim cpt As Integer
    Dim str As String
    Dim strSourceFile As String
    Dim objFSO As Object
    Dim objTextFile As Object
    
    'Initialisation des variables et création des objets
    strSourceFile = "C:\monfichier.txt" 
    Set objFSO = CreateObject("Scripting.FileSystemObject") 
    Set objTextFile = objFSO.openTextFile(strSourceFile, 1) 
    
    'Boucle sur les lignes du fichier
    While Not objTextFile.AtEndOfStream 
          str = objTextFile.ReadLine
          cpt = cpt + CInt(str) 
    Wend
    
    'Fermeture des objets et libération de la mémoire
    objTextFile.Close
    Set objFSO = Nothing
    Set objTextFile = Nothing
    
    'Echo du résultat
    wscript.echo cpt


    Un conseil : Type toutes tes variables.

    «Ce que l'on conçoit bien s'énonce clairement, Et les mots pour le dire arrivent aisément.»
    Nicolas Boileau
    0
  4. nick_2428 Messages postés 30 Date d'inscription   Statut Membre Dernière intervention  
     
    Salut, quand tu parle de typer toutes les variables, C'est bien la portion en gras que tu parle? C'est quoi l'impact de les avoirs ou non? J'ai tenté d'exécuter ce que tu m,as mis plus haut et ça me donne un message d'erreur. Le code attend la fin des instructions, pourtant si j'enlève la partie en gras, ça marche parfaitement. Résultat donné: 80

    Dim cpt As Integer
    Dim str As String
    Dim strSourceFile As String
    Dim objFSO As Object
    Dim objTextFile As Object

    'Création des objets
    strSourceFile = "C:\monfichier.txt"
    Set objFSO = CreateObject("Scripting.FileSystemObject")
    Set objTextFile = objFSO.openTextFile(strSourceFile, 1)

    'Boucle sur les lignes du fichier
    While Not objTextFile.AtEndOfStream
    str = objTextFile.ReadLine
    cpt = cpt + CInt(str)
    Wend

    'Fermeture des objets et libération de la mémoire
    objTextFile.Close
    Set objFSO = Nothing
    Set objTextFile = Nothing

    'Echo du résultat
    wscript.echo cpt

    Merci du coup de main. Très apprécié.
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Oui c'est ce qui est en gras.
    Ça impact la mémoire, normalement (chaque variable occupant un espace mémoire défini par son type) ... je n'ai pas trop manipulé le VBS et je n'en connais pas toutes les spécificités ... peut être ne faut-il pas déclarer les variables, ce qui est possible.
    0