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

Signaler
Messages postés
71
Date d'inscription
vendredi 14 décembre 2012
Statut
Membre
Dernière intervention
10 juillet 2014
-
Messages postés
15749
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
1 mai 2021
-
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

Messages postés
15749
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
1 mai 2021
1 487
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/
Messages postés
71
Date d'inscription
vendredi 14 décembre 2012
Statut
Membre
Dernière intervention
10 juillet 2014
3
Merci f894009,

ça aide beaucoup

Bonne journée
Messages postés
71
Date d'inscription
vendredi 14 décembre 2012
Statut
Membre
Dernière intervention
10 juillet 2014
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
Messages postés
71
Date d'inscription
vendredi 14 décembre 2012
Statut
Membre
Dernière intervention
10 juillet 2014
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
Messages postés
12251
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2021
2 604
Bonjour,

Regarde ce tuto ICI.
Messages postés
71
Date d'inscription
vendredi 14 décembre 2012
Statut
Membre
Dernière intervention
10 juillet 2014
3
Bonjour,

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

c'est difficile à adapter ??
Messages postés
12251
Date d'inscription
jeudi 15 mai 2008
Statut
Modérateur
Dernière intervention
17 mars 2021
2 604
je ne sais pas, mais la syntaxe ne doit pas être loin de ça :
Open "D:\essai\monfichier.txt" For Input As intFic
Messages postés
71
Date d'inscription
vendredi 14 décembre 2012
Statut
Membre
Dernière intervention
10 juillet 2014
3
ok , je te remercie je vais essayer d'adapter le code

merci :D
Messages postés
15749
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
1 mai 2021
1 487
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
Messages postés
71
Date d'inscription
vendredi 14 décembre 2012
Statut
Membre
Dernière intervention
10 juillet 2014
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
Messages postés
6917
Date d'inscription
mardi 25 septembre 2007
Statut
Membre
Dernière intervention
1 novembre 2016
1 159
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)


Messages postés
15749
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
1 mai 2021
1 487
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
Messages postés
71
Date d'inscription
vendredi 14 décembre 2012
Statut
Membre
Dernière intervention
10 juillet 2014
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
Messages postés
15749
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
1 mai 2021
1 487
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 
Messages postés
71
Date d'inscription
vendredi 14 décembre 2012
Statut
Membre
Dernière intervention
10 juillet 2014
3
Je vais le tester tout de suite
Merci f894009 :D
Messages postés
71
Date d'inscription
vendredi 14 décembre 2012
Statut
Membre
Dernière intervention
10 juillet 2014
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
Messages postés
15749
Date d'inscription
dimanche 25 novembre 2007
Statut
Membre
Dernière intervention
1 mai 2021
1 487
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