PB ecriture dans fichier

Résolu
ben008 Messages postés 16 Date d'inscription samedi 20 décembre 2003 Statut Membre Dernière intervention 31 mars 2010 - 3 avril 2008 à 12:33
ben008 Messages postés 16 Date d'inscription samedi 20 décembre 2003 Statut Membre Dernière intervention 31 mars 2010 - 3 avril 2008 à 14:15
Bonjour ,

J'ai recuperer un script VBS de ce cher JCB :D modifié afin de mettre une liste d'imprimantes des differents serveurs d'impressions dans un fichier excel :

CODE :

Const SW_HIDE=0
Const SW_SHOWNORMAL=1
Dim shell,fso,attr,desc,net,args
Set shell = WScript.CreateObject("WScript.Shell")
Set fso   = WScript.CreateObject("Scripting.FileSystemObject")
Set net   = Wscript.CreateObject("WScript.Network")
Set args    = Wscript.Arguments
If args.count=0 Then
 computer=net.computername
Else
 computer=args(0)
 If computer="/?" Then
  msg=      "detection des imprimantes locales ou reseau" & VBCRLF
  msg=msg & "sur une machine locale ou distante" & VBCRLF
     msg=msg & "JCB  2002" & VBCRLF
  msg=msg & "---------------------------------------------" & VBCRLF
  msg=msg & "Syntaxe :" & VBCRLF
  msg=msg & "   enumprinter [<nom_de_machine>]" & VBCRLF 
  msg=msg & "Parametre :" & VBCRLF
  msg=msg & "   <nom_de_machine> : nom NetBIOS de l'ordinateur" & VBCRLF
  msg=msg & "                      si absent : machine locale" & VBCRLF
  wscript.echo msg
  wscript.quit
  End If
 End If
Testhost true
attr=array(1,2,4,8,16,32,64,128,256,512,1024,2048,4096,8192)
desc=array( _
 "Les travaux d'impression sont mis file d'attente", _
 "Les documents sont envoyés directement sur l'imprimante", _
 "Imprimante par defaut de l'ordinateur", _
 "Disponible en tant que ressource reseau partagée", _
 "Attachau reseau", _
 "Cache pour certains utilisateurs du reseau", _
 "Directement connecté a l'ordinateur", _
 "Mise en file d'attente activée si imprimante disponible", _
 "Le spooler ne supprime pas les documents apres impression", _
 "Commence en premier les travaux qui sont en fin de spool", _
 "Mise en file d'attente activée si imprimante indisponible", _
 "Active l'impression bidirectionnelle", _
 "Seuls les travaux de type de donnée brut sont spoolé", _
 "Imprimante public dans le service d'annuaire du reseau")
on error resume next 
set PrinterSet = GetObject("winmgmts:{impersonationLevel=impersonate}!//" & Computer).ExecQuery _
    ("SELECT * FROM Win32_Printer")
If err.number<>0 Then
 wscript.echo "Erreur : " & err.description
 wscript.quit
 End If
msg="Imprimantes disponibles sur " & ucase(computer)
wscript.echo msg
wscript.echo String(len(msg),"-")
num = 1
   chemin = "imp.xls"
   Set fso = CreateObject("Scripting.FileSystemObject" )
   Set Fic = fso.CreateTextFile(chemin, True)
   Fic.writeLine "ID;PWXL;N;E"
for each Printer in PrinterSet
 wscript.echo
 wscript.echo FormatStrR(num,2) & ")" & Printer.Caption
 Fic.writeLine "C;Y" & num & ";X1;K" & CHR(34) & Printer.ShareName & CHR(34) 
 Fic.writeLine "C;Y" & num & ";X2;K" & CHR(34) & Printer.PortName & CHR(34)
 Fic.Close
 num = num + 1
 next
Fic.writeLine "E"
Set Fic = Nothing
Set fso = Nothing
Wscript.quit

Mon souci semble se trouver ici :
Fic.writeLine "C;Y" & num & ";X1;K" & CHR(34) & Printer.ShareName & CHR(34) 
Fic.writeLine "C;Y" & num & ";X2;K" & CHR(34) & Printer.PortName & CHR(34)

etant donné qu'a la final mon fichier xls est erroné et ne possede que la premiere ligne.
pourtant dans la fenetre pendant le script je vois bien toutes le imprimantes aparaitre et Y est bien incrementé.

Merci d'avance pour votre aide.

2 réponses

Renfield Messages postés 17287 Date d'inscription mercredi 2 janvier 2002 Statut Modérateur Dernière intervention 27 septembre 2021 74
3 avril 2008 à 12:44
Fic.Close

est dans la boucle, se qui fait que ton fichier est fermé après la premièer ecriture...
3
ben008 Messages postés 16 Date d'inscription samedi 20 décembre 2003 Statut Membre Dernière intervention 31 mars 2010
3 avril 2008 à 14:15
Ralalalala ^^

J'allucine j'avais meme pas vu ca pourtant j'y suis bien reste 20 min a regarder.
Ca viendra avec le temp (ca fait un petit mois que je me suis mis au VB).

merci pour ta reponse (acceptée)
0
Rejoignez-nous