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

Fermé
sikasika Messages postés 71 Date d'inscription vendredi 14 décembre 2012 Statut Membre Dernière intervention 10 juillet 2014 - 7 juil. 2014 à 17:44
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 - 10 juil. 2014 à 17:18
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,
A voir également:

9 réponses

f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
7 juil. 2014 à 18:23
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
sikasika Messages postés 71 Date d'inscription vendredi 14 décembre 2012 Statut Membre Dernière intervention 10 juillet 2014 3
8 juil. 2014 à 11:18
Merci f894009,

ça aide beaucoup

Bonne journée
0
sikasika Messages postés 71 Date d'inscription vendredi 14 décembre 2012 Statut Membre Dernière intervention 10 juillet 2014 3
8 juil. 2014 à 11:21
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
sikasika Messages postés 71 Date d'inscription vendredi 14 décembre 2012 Statut Membre Dernière intervention 10 juillet 2014 3
8 juil. 2014 à 12:51
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
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
8 juil. 2014 à 13:15
Bonjour,

Regarde ce tuto ICI.
0
sikasika Messages postés 71 Date d'inscription vendredi 14 décembre 2012 Statut Membre Dernière intervention 10 juillet 2014 3
8 juil. 2014 à 13:59
Bonjour,

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

c'est difficile à adapter ??
0
pijaku Messages postés 12263 Date d'inscription jeudi 15 mai 2008 Statut Modérateur Dernière intervention 4 janvier 2024 2 743
Modifié par pijaku le 8/07/2014 à 14:03
je ne sais pas, mais la syntaxe ne doit pas être loin de ça :
Open "D:\essai\monfichier.txt" For Input As intFic
0
sikasika Messages postés 71 Date d'inscription vendredi 14 décembre 2012 Statut Membre Dernière intervention 10 juillet 2014 3
8 juil. 2014 à 14:06
ok , je te remercie je vais essayer d'adapter le code

merci :D
0

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

Posez votre question
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
Modifié par f894009 le 8/07/2014 à 14:15
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
sikasika Messages postés 71 Date d'inscription vendredi 14 décembre 2012 Statut Membre Dernière intervention 10 juillet 2014 3
9 juil. 2014 à 14:07
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
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
9 juil. 2014 à 15:06
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
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
9 juil. 2014 à 17:14
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
sikasika Messages postés 71 Date d'inscription vendredi 14 décembre 2012 Statut Membre Dernière intervention 10 juillet 2014 3
10 juil. 2014 à 15:19
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
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
Modifié par f894009 le 9/07/2014 à 18:15
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
sikasika Messages postés 71 Date d'inscription vendredi 14 décembre 2012 Statut Membre Dernière intervention 10 juillet 2014 3
10 juil. 2014 à 15:20
Je vais le tester tout de suite
Merci f894009 :D
0
sikasika Messages postés 71 Date d'inscription vendredi 14 décembre 2012 Statut Membre Dernière intervention 10 juillet 2014 3
10 juil. 2014 à 15:55
ç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
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
10 juil. 2014 à 17:18
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