Public IP, Site, Fichier, ContenuLigne, NumIp
Private Declare Function OpenProcess Lib "kernel32" _
(ByVal dwDesiredAccess As Long, ByVal bInheritHandle As Long, _
ByVal dwProcessId As Long) As Long
Private Declare Function GetExitCodeProcess Lib "kernel32" _
(ByVal hProcess As Long, lpExitCode As Long) As Long
Private Const PROCESS_QUERY_INFORMATION As Long = &H400
Private Const STILL_ACTIVE As Long = &H103
Sub ExtraitIP()
[B2:C1000].ClearContents
Fichier = ThisWorkbook.Path & "\IP.txt" ' Déclaration fichier temporaire
For L = 2 To [A1000].End(xlUp).Row ' Pour toutes les lignes
T0 = Timer
Site = Cells(L, "A") ' On récupère le site
EcritFichier ' On lance un ping dessus
LireFichier ' On lit le fichier, la seconde ligne contient l'IP
NumIp = Split(Split(ContenuLigne, "[")(1), "]")(0) ' On extrait l'IP, encadré par [ et ]
Cells(L, "B") = NumIp ' On écrit l'IP
Cells(L, "C") = Format(Timer - T0, "0.000s") ' On écrit le temps, à supprimer
Next L
End Sub
Sub LireFichier()
On Error GoTo FinLect ' Si le site n'existe pas
IndexFichier = FreeFile()
Open Fichier For Input As #IndexFichier 'ouvre le fichier
Line Input #IndexFichier, ContenuLigne ' 1ere ligne vide
Line Input #IndexFichier, ContenuLigne ' 2eme ligne, contient l' IP entouré de [ et ]
Close #IndexFichier ' ferme le fichier
Exit Sub
FinLect:
ContenuLigne = "xx[Error]xx": Exit Sub ' Renvoie Erreur car site non trouvé
End Sub
Sub EcritFichier() ' Lance le Shell pour mettre le ping dans un fichier et attend la fin du process Shell
' Copyright Faves sur developpez.net
Dim lIDApp As Long
Dim lPtrProcess As Long
Dim lExitCode As Long
Dim lResult As Long
lIDApp = Shell("cmd /c ping " & Site & " > " & Fichier) ' Exécution de l'application externe.
lPtrProcess = OpenProcess(PROCESS_QUERY_INFORMATION, 0&, lIDApp) ' Récupère le Handle du processus de l'application externe.
Do ' Attend la fin de l'exécution du processus.
lResult = GetExitCodeProcess(lPtrProcess, lExitCode)
DoEvents
Loop While lExitCode = STILL_ACTIVE
End Sub
Function FichierExiste(Fichier)
If Len(Dir(Fichier)) > 0 Then FichierExiste = True Else FichierExiste = False
End Function