Créer un fichier excel sans l'ouvrir avec vbscript

sikasika Messages postés 74 Statut Membre -  
f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   -
ReBonjour tout le monde,

je galère avec VBS , j essaie de chercher mais ce n'est pas toujours claire.

J'ai besoin de créer un fichier excel sans l'ouvrir pour y importer des données à partir d'un fichier texte. Je dois aussi effectuant des opérations sur ces données pour les mettre dans des cellules spécifiques.

Ce que je cherche mnt : comment créer un fichier excel sans l'ouvrir (je ne sais pas si c'est clair)

Cordialement,

9 réponses

  1. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    vous devez creer le fichier excel en partant de ceci:

    http://www.activexperts.com/activmonitor/windowsmanagement/scripts/msoffice/excel/

    ensuite traiter votre fichier comme ceci:

    https://silkyroad.developpez.com/VBA/ClasseursFermes/
    0
  2. sikasika Messages postés 74 Statut Membre 3
     
    Merci f894009,

    ça aide beaucoup

    Bonne journée
    0
  3. sikasika Messages postés 74 Statut Membre 3
     
    Rebonjour,

    Mais il n'y a pas d'information sur comment lire un fichier texte et établir le lien avec un fichier excel pour le remplir

    Bonne journée
    0
  4. sikasika Messages postés 74 Statut Membre 3
     
    Bonjour :D

    J'ai écrits ce code : il m'ouvre un fichier excel et écrit "super et "bien" dans les cellules et feuilles voulues mais je n'arrive pas à faire le lien entre mon fichier texte "fichier1" et le nouveau fichier excel pour pouvoir copier le contenu du fichier1 dans la feuille 3

    '****************************************************************
    Const ForReading = 1, ForWriting = 2, ForAppending = 8 ,fichier1="C:\Test.txt"
    '****************************************************************

    'objet application text

    Set objText = CreateObject("Scripting.FileSystemObject")
    Set F1=objText.OpenTextFile(fichier1, ForReading)

    'definition fichier

    Set objExcel = CreateObject("Excel.Application")
    ObjExcel.Visible= True
    Set objclasseur= objExcel.workbooks.Add
    Set objfeuille1 =objclasseur.worksheets(1)
    Set objfeuille2 =objclasseur.worksheets(2)
    Set objfeuille3 =objclasseur.worksheets(3)

    objfeuille1.Cells(3,1).Value = "Super"
    objfeuille2.Cells(3,1).Value = "Bien"

    objclasseur.close
    objText.Quit
    wscript.Echo

    est il possible de m'aider ?? j'en ai vraiment besoin
    0
    1. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 772
       
      Bonjour,

      Regarde ce tuto ICI.
      0
    2. sikasika Messages postés 74 Statut Membre 3
       
      Bonjour,

      c'est du VBA je pense que c'est différent du vbscript nn??

      c'est difficile à adapter ??
      0
    3. pijaku Messages postés 13513 Date d'inscription   Statut Modérateur Dernière intervention   2 772
       
      je ne sais pas, mais la syntaxe ne doit pas être loin de ça :
      Open "D:\essai\monfichier.txt" For Input As intFic
      0
    4. sikasika Messages postés 74 Statut Membre 3
       
      ok , je te remercie je vais essayer d'adapter le code

      merci :D
      0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour a vous deux,

    sikasika:
    Votre probleme est quel format a votre fichier txt, comment recuperer les infos pour les redistribuer. Je serai pour que vous fassiez un code d'import de votre fichier txt avec de l'excel et l'enregistreur de macro, que vous adaptiez ce code au VBS par Set objExcel = CreateObject("Excel.Application"), ce que vous savez faire. De cette facon vous aurez la disposition de vos donnees et pourrez traiter celles qui vous interessent

    le principe: creer le fichier excel, importer le fichier txt dans ce fichier excel et traiter les infos dans ce meme fichier excel et enregistrer ce fichier
    0
  7. sikasika Messages postés 74 Statut Membre 3
     
    Merci f894009 pour ta réponse, mais je ne cherche à travailler qu'avec du vbs ( ce que j'ai écrit avant n'était qu'une partie du travail que j'aimerai effectuer)

    j'ai réussi à écrire ce code: il récupère les données du fichier texte et les met au niveau d'excel : (mon fichier texte ne contient que 5 colonnes mais le nombre de lignes peut varier)

    '**************************************************************
    Const ForReading = 1, ForWriting = 2, ForAppending = 8 ,fichier1="C:\Users\smaher\Desktop\Test.txt"
    '**************************************************************

    'objet application text

    Set objText = CreateObject("Scripting.FileSystemObject")
    Set F1=objText.OpenTextFile(fichier1, ForReading)

    Dim ligne,data
    Dim i,c3,c4,c5 As Integer
    i = 1

    Set objExcel = CreateObject("Excel.Application")
    ObjExcel.Visible= True
    Set objfeuille1 =objclasseur.worksheets(1)
    Set objfeuille2 =objclasseur.worksheets(2)
    Set objfeuille3 =objclasseur.worksheets(3)

    ligne = F1.ReadLine

    Do until F1.AtEndOfStream

    line =F1.ReadLine

    data1=Split(Line,";")

    c1=data1(0)
    c2=data1(1)
    c3=data1(2)
    c4=data1(3)
    c5=data1(4)

    Objfeuille3.Cells(i,1).Value = c1
    Objfeuille3.Cells(i,2).Value = c2
    Objfeuille3.Cells(i,3).Value = c3
    Objfeuille3.Cells(i,4).Value = c4
    Objfeuille3.Cells(i,5).Value = c5

    i=i+1
    loop

    wscript.Echo

    mais en fait les variables c3 et c4 sont des nombres qui représentent la ligne et la colonne ou je dois mettre la valeur de la variable c5 donc j'ai essayé de mettre ceci :
    Objfeuille3.Cells(c3,c4).Value = c5
    mais ça n'a pas marché

    si quelqu'un peut m'expliquer ce qui ne va pas :D
    0
  8. Polux31 Messages postés 7219 Statut Membre 1 204
     
    Bonjour à tous,

    Pijaku a donné une piste. VBS est un langage basé sur du Visual Basic, tout comme VBA (Visual Basic For Application) a été implanté dans les applications du pack Office pour permettre de manipuler les objets des applications avec du VB.

    Pour parcourir un fichier avec du VB, que ça soit en VBS ou VBA, ce fait de la façon suivant:
    Dim fp As Integer               'Pointeur du fichier
    Dim MonFichier As String     'Chemin complet et nom du fichier à lire
    Dim chaine As String           'Conteneur d'une ligne du fichier
    
         fp = Freefile       'Attribution du premier pointeur libre
         MonFichier = "C:\CCM\monfichier.txt"
    
         Open MonFichier For Input As #fp
         While Not EOF(fp)
              Line Input #fp, chaine
              MsgBox chaine
         Wend
    
         Close(fp)


    0
  9. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Bonjour,

    Polux31:
    Il y pas mal de differences entre le VBA et le VBS dans le traitement de fichier (entre autre sujet) et ce qui fait que du code VBA ne convient pas du tout en VBS

    sikasika:
    Vous utilisez bien du code excel via excel.application, donc ce que je vous ai ecrit conviendrait. Suffit de l'adapter.
    Mais vu que vous semblez pas emballer par la chose, je vais regarder avec le code que vous proposez
    0
    1. sikasika Messages postés 74 Statut Membre 3
       
      Bonjour f894009 ,
      ce n'est pas que je ne suis pas emballéemais c'est que j'ai du mal à l'adapter
      et merci beaucoup :D
      0
  10. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    Re,

    Qui dit fichier texte, y a pas de nombre(s), que des chaines de caracteres.
    Convertir en nombre les chaines que vous voulez en nombre.
    Ex: pour des entiers

    c1=CInt(data1(0))
    c2=CInt(data1(1))
    c3=CInt(data1(2))
    c4=CInt(data1(3))
    c5=CInt(data1(4))

    car:Cells(ligne,colonne) en nombre, pas en texte
    Objfeuille3.Cells(c3,c4).Value = c5 
    0
    1. sikasika Messages postés 74 Statut Membre 3
       
      Je vais le tester tout de suite
      Merci f894009 :D
      0
    2. sikasika Messages postés 74 Statut Membre 3
       
      ça a marché
      il reste juste un petit problème : la première ligne ne contient que des mots mais celles d'après ont des nombres à partir de la troisième colonne donc quand je mets C3=CInt(data1(2)) il me donne une erreur

      je tente de mettre une condition pour régler le problème
      0
    3. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
       
      Bonjour,

      testez le premier caractere (code ASCII), si < 48 ou > 57 ce n'est pas un nombre donc pas de conversion

      j'ai mis en exemple une conversion en entier, pour les colonnes et lignes ok, mais attention pour les autres donnees numeriques si decimaux
      0