Traitement d'une fonction Ping avec une liste de PC ds un fichier exl

Traitement d'une fonction Ping avec une liste de PC ds un fichier exl - VB/VBA/VBS - Programmation

Marsh Posté le 26-04-2007 à 16:41:09    

Bonjour je vousdrais traiter et ecrire dans un fichier excel avec mon script VBS
 
voici mon script
 
Set objFSO = CreateObject("Scripting.FileSystemObject" )
Set objFile = objFSO.OpenTextFile("Liste.txt",1)
Do Until ObjFile.AtEndOfStream
        StrComputer = objFile.ReadLine
        Ping()
Loop
ObjFile.Close
 
 
Function PING()
Set objWMIService = GetObject("winmgmts:\\" & "." & "\root\cimv2" )
Set colPings = objWMIService.ExecQuery _
    ("Select * From Win32_PingStatus where Address = '" & strComputer &"'" )
 
For Each objStatus in colPings
    If IsNull(objStatus.StatusCode) _
        or objStatus.StatusCode<>0 Then
        Msgbox strComputer & "Computer did not respond."
    Else
        Msgbox strComputer & "Computer responded."
    End If
Next
End Function
 
 
 
Je souhaiterais a la place de travailler dans un fichier TXT travailler dans un tableau Excel
 
Dans un premier temps
le programme utilise les information de la premiere colonne ' lecture'
et dans un 2eme tps il faudrais qu'il ecrive en face de chaque Pc si le ping est OK ou non donc 'ecriture'
mais je ne sais pas par ou m'orienter pour traiter un tableau excel
 
bien a vous et merci pour votre aide
 

Reply

Marsh Posté le 26-04-2007 à 16:41:09   

Reply

Marsh Posté le 27-04-2007 à 15:00:10    

Reply

Marsh Posté le 06-05-2007 à 11:46:54    

Set objExcel = CreateObject("Excel.Application" )
Set objWorkbook = objExcel.Workbooks.Open("C:\liste.xls" )
 
intRow = 1
 
'Lecture de la colonne 1
Do Until objExcel.Cells(intRow,1).Value = ""
    StrComputer = objExcel.Cells(intRow, 1).Value
    PING()
    intRow = intRow + 1
Loop
 
objExcel.Quit
 
'Fonction PING
Function PING()
Set objWMIService = GetObject("winmgmts:\\" & "." & "\root\cimv2" )
Set colPings = objWMIService.ExecQuery _
    ("Select * From Win32_PingStatus where Address = '" & strComputer &"'" )
 
 
For Each objStatus in colPings
    If IsNull(objStatus.StatusCode) _
        or objStatus.StatusCode<>0 Then
        objExcel.Workbooks.Add("C:\liste.xls" )
        msgbox intRow & "NOK" & strComputer
        objExcel.Cells(intRow, 2).Value = "NOK"
    Else
        objExcel.Workbooks.Add("C:\liste.xls" )
        msgbox intRow & "OK" & strComputer
        objExcel.Cells(intRow, 2).Value = "OK"
    End If
Next
End Function
 
 
 
Il me reste un ptit probleme comment agir sur le meme fichier xls  
mon prog me retourne l'enregistrement de d'autre fichier xls
etant donne qui utilise le fichier liste dans la premier boucle  
quelqu'un a une astuce pr se probleme  
sachant que je ne ve pas utilise un autre fichier excel


Message édité par PetitNewby le 06-05-2007 à 11:51:23
Reply

Marsh Posté le 06-07-2007 à 14:06:52    

Voici une solution, c'est pas très élègant, mais ça marche avec 1 seul fichier !
Vérifie que ton fichier est bien fermé avant, car sinon il y aura un prob de fichier en lecture seul.
Je l'ai testé et ça marche
Bonne journée (répond moi)

 

msgbox "Cliquez pour débuter les pings"
Set objExcel = CreateObject("Excel.Application" )
Set objWorkbook = objExcel.Workbooks.Open("C:\Documents and Settings\jmour\Mes documents\liste.xls" )
intRow = 1
 
'Lecture de la colonne 1
Do Until objExcel.Cells(intRow,1).Value = ""
    StrComputer = objExcel.Cells(intRow, 1).Value
    objworkbook.close
    PING()
    Set objworkbook = objExcel.Workbooks.Open("C:\liste.xls" )
    intRow = intRow + 1
Loop
objworkbook.close
msgbox "Pings terminés"
objExcel.Quit
 
'Fonction PING
Function PING()
Set objWMIService = GetObject("winmgmts:\\" & "." & "\root\cimv2" )
Set colPings = objWMIService.ExecQuery _
    ("Select * From Win32_PingStatus where Address = '" & strComputer &"'" )
 
 
For Each objStatus in colPings
    If IsNull(objStatus.StatusCode) _
        or objStatus.StatusCode<>0 Then
        set objworkbook1 = objExcel.Workbooks.Open("C:\liste.xls" )
        'msgbox intRow & " NOK " & strComputer
 objExcel.Cells(intRow, 3).Value = ""
        objExcel.Cells(intRow, 4).Value = "Ping Non OK"
 objworkbook1.save
 objworkbook1.close
    Else
        set objworkbook2 = objExcel.Workbooks.Open("C:\liste.xls" )
        'msgbox intRow & " OK " & strComputer
        objExcel.Cells(intRow, 3).Value = "Ping OK"
 objExcel.Cells(intRow, 4).Value = ""
 objworkbook2.save
 objworkbook2.close
    End If
Next
End Function


Message édité par jim150181 le 06-07-2007 à 14:09:15
Reply

Marsh Posté le 21-11-2013 à 13:52:26    

Bonjour, j'ai testé la solution : elle fonctionne tres bien, mais sous excel 2007 , apparement , apres chaque ping, excel demande 'Voulez vous enregistrer les modifs apportées à liste.xls".
Y'a t il un moyen d'eviter cette demande, j'ai plus de 600 adresses à 'Pinger' ?


---------------
Plus j'étudie, plus j'apprends, plus j'apprends, plus j'ai concience des mes lacunes.
Reply

Marsh Posté le 21-11-2013 à 14:19:02    

Petite precision : j'utilise un fichier source et un fichier destination different car sinon excel 2007 finit par bugger.


---------------
Plus j'étudie, plus j'apprends, plus j'apprends, plus j'ai concience des mes lacunes.
Reply

Marsh Posté le 21-11-2013 à 14:31:32    

Laissez tomber : la solution fonctionne tres bien quand on n'essaye pas de la bidouiller ( comme je l'ai fait, je suis une bille en vbs )  
Pardon,
Mes excuses à ceux qui ont cherché.


---------------
Plus j'étudie, plus j'apprends, plus j'apprends, plus j'ai concience des mes lacunes.
Reply

Sujets relatifs:

Leave a Replay

Make sure you enter the(*)required information where indicate.HTML code is not allowed