Problème en vbs

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

  • Votes
  • Date
  • Date décroissante
  1. 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
    1. 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.
      1. 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
        1. 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é.
          1. 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.