Bonjour
J’ai une application qui tourne sur un réseau d’entreprise et j’aurai besoin
de localiser l’utilisateur, afin de l’orienter différemment selon d’où il se
connecte. Pour cela il faudrait que je puisse récupérer, par VBA, son adresse
IP ?
Es-ce possible, et comment faire ?
Merci
Bonjour
J’ai une application qui tourne sur un réseau d’entreprise et j’aurai besoin
de localiser l’utilisateur, afin de l’orienter différemment selon d’où il se
connecte. Pour cela il faudrait que je puisse récupérer, par VBA, son adresse
IP ?
Es-ce possible, et comment faire ?
Merci
Bonjour
J’ai une application qui tourne sur un réseau d’entreprise et j’aurai besoin
de localiser l’utilisateur, afin de l’orienter différemment selon d’où il se
connecte. Pour cela il faudrait que je puisse récupérer, par VBA, son adresse
IP ?
Es-ce possible, et comment faire ?
Merci
Bonjour
J’ai une application qui tourne sur un réseau d’entreprise et j’aurai
besoin
de localiser l’utilisateur, afin de l’orienter différemment selon d’où il
se
connecte. Pour cela il faudrait que je puisse récupérer, par VBA, son
adresse
IP ?
Es-ce possible, et comment faire ?
Merci
Bonjour
J’ai une application qui tourne sur un réseau d’entreprise et j’aurai
besoin
de localiser l’utilisateur, afin de l’orienter différemment selon d’où il
se
connecte. Pour cela il faudrait que je puisse récupérer, par VBA, son
adresse
IP ?
Es-ce possible, et comment faire ?
Merci
Bonjour
J’ai une application qui tourne sur un réseau d’entreprise et j’aurai
besoin
de localiser l’utilisateur, afin de l’orienter différemment selon d’où il
se
connecte. Pour cela il faudrait que je puisse récupérer, par VBA, son
adresse
IP ?
Es-ce possible, et comment faire ?
Merci
Bonjour
J’ai une application qui tourne sur un réseau d’entreprise et j’aurai besoin
de localiser l’utilisateur, afin de l’orienter différemment selon d’où il se
connecte. Pour cela il faudrait que je puisse récupérer, par VBA, son adresse
IP ?
Es-ce possible, et comment faire ?
Merci
Bonjour
J’ai une application qui tourne sur un réseau d’entreprise et j’aurai besoin
de localiser l’utilisateur, afin de l’orienter différemment selon d’où il se
connecte. Pour cela il faudrait que je puisse récupérer, par VBA, son adresse
IP ?
Es-ce possible, et comment faire ?
Merci
Bonjour
J’ai une application qui tourne sur un réseau d’entreprise et j’aurai besoin
de localiser l’utilisateur, afin de l’orienter différemment selon d’où il se
connecte. Pour cela il faudrait que je puisse récupérer, par VBA, son adresse
IP ?
Es-ce possible, et comment faire ?
Merci
Bonjour,
Pour ce que j'en sais, il faut passer par internet pour récupérer son
adresse IP dite "publique". Du moins lorsqu'on est derrière un routeur
(et dans ce cas les solutions proposées renvoient l'adresse locale
attribuée par le routeur).
J'ai bidouillé un peu un code trouvé sur internet
(http://faq.vb.free.fr/index.php?question8) qui ne fonctionne pas
chez moi avec le site retenu. Je suis passé par http://www.mon-ip.com/
et ça paraît donner le résultat attendu :
'==========================(dans un module ordinaire)
'
' API permettant de récupérer le contenu d'une page Web dans un fichier
'
Private Declare Function URLDownloadToFile Lib "urlmon" _
Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szUrl As
String, _
ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB
As Long) As Long
'
' Exemple d'utilisation de GetPublicIP
'
Sub essai()
Dim ip As String
Dim ret As Boolean
ret = GetPublicIP(ip)
If ret Then
MsgBox "Votre IP publique est : " & ip
Else
MsgBox "impossible de lire l'adresse IP"
End If
End Sub
'
' Lit le contenu d'un fichier et retourne un buffer
'
Public Function readFromFile(ByVal szFileName As String, ByRef buf As
String) As Boolean
Dim f As Integer
On Error GoTo readFromFile_err
f = FreeFile
Open szFileName For Binary As #f
buf = Space$(LOF(f))
Get #f, , buf
Close #f
readFromFile = True
readFromFile_ok:
Exit Function
readFromFile_err:
Resume readFromFile_ok
End Function
'
' Appelle URLDownloadToFile et stocke le résultat dans un fichier
'
Function DownloadPage(ByVal url As String, ByVal FileName As String) As
Boolean
Dim done As Boolean
Dim value As Long
On Error Resume Next
done = True
If Dir$(FileName) <> "" Then
Kill FileName
End If
value = URLDownloadToFile(0, url, FileName, 0, 0)
If Dir$(FileName) = "" Then
done = False
End If
DownloadPage = done
End Function
'
' Retourne le contenu d'une page Web dans une chaine de caractères
'
Public Function getHtmlFromUrl(ByVal szUrl As String, ByRef szBuf As
String) As Boolean
Dim ret As Boolean
ret = DownloadPage(szUrl, "d:my_temp_ip.dat")
If ret Then
ret = readFromFile("d:my_temp_ip.dat", szBuf)
End If
getHtmlFromUrl = ret
Kill "d:my_temp_ip.dat"
End Function
'
' Retourne l'adresse IP publique
'
Public Function GetPublicIP(ByRef szIP) As Boolean
Dim szBuf As String, S As String
Dim p As Long
Dim ret As Boolean
ret = getHtmlFromUrl("http://www.mon-ip.com/", szBuf)
S = Left(Split(szBuf, "var Ip = """)(1), 20)
szIP = Split(S, """;")(0)
GetPublicIP = True
End Function
'========================= >
FS
Bonjour,
Pour ce que j'en sais, il faut passer par internet pour récupérer son
adresse IP dite "publique". Du moins lorsqu'on est derrière un routeur
(et dans ce cas les solutions proposées renvoient l'adresse locale
attribuée par le routeur).
J'ai bidouillé un peu un code trouvé sur internet
(http://faq.vb.free.fr/index.php?question8) qui ne fonctionne pas
chez moi avec le site retenu. Je suis passé par http://www.mon-ip.com/
et ça paraît donner le résultat attendu :
'==========================(dans un module ordinaire)
'
' API permettant de récupérer le contenu d'une page Web dans un fichier
'
Private Declare Function URLDownloadToFile Lib "urlmon" _
Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szUrl As
String, _
ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB
As Long) As Long
'
' Exemple d'utilisation de GetPublicIP
'
Sub essai()
Dim ip As String
Dim ret As Boolean
ret = GetPublicIP(ip)
If ret Then
MsgBox "Votre IP publique est : " & ip
Else
MsgBox "impossible de lire l'adresse IP"
End If
End Sub
'
' Lit le contenu d'un fichier et retourne un buffer
'
Public Function readFromFile(ByVal szFileName As String, ByRef buf As
String) As Boolean
Dim f As Integer
On Error GoTo readFromFile_err
f = FreeFile
Open szFileName For Binary As #f
buf = Space$(LOF(f))
Get #f, , buf
Close #f
readFromFile = True
readFromFile_ok:
Exit Function
readFromFile_err:
Resume readFromFile_ok
End Function
'
' Appelle URLDownloadToFile et stocke le résultat dans un fichier
'
Function DownloadPage(ByVal url As String, ByVal FileName As String) As
Boolean
Dim done As Boolean
Dim value As Long
On Error Resume Next
done = True
If Dir$(FileName) <> "" Then
Kill FileName
End If
value = URLDownloadToFile(0, url, FileName, 0, 0)
If Dir$(FileName) = "" Then
done = False
End If
DownloadPage = done
End Function
'
' Retourne le contenu d'une page Web dans une chaine de caractères
'
Public Function getHtmlFromUrl(ByVal szUrl As String, ByRef szBuf As
String) As Boolean
Dim ret As Boolean
ret = DownloadPage(szUrl, "d:my_temp_ip.dat")
If ret Then
ret = readFromFile("d:my_temp_ip.dat", szBuf)
End If
getHtmlFromUrl = ret
Kill "d:my_temp_ip.dat"
End Function
'
' Retourne l'adresse IP publique
'
Public Function GetPublicIP(ByRef szIP) As Boolean
Dim szBuf As String, S As String
Dim p As Long
Dim ret As Boolean
ret = getHtmlFromUrl("http://www.mon-ip.com/", szBuf)
S = Left(Split(szBuf, "var Ip = """)(1), 20)
szIP = Split(S, """;")(0)
GetPublicIP = True
End Function
'========================= >
FS
Bonjour,
Pour ce que j'en sais, il faut passer par internet pour récupérer son
adresse IP dite "publique". Du moins lorsqu'on est derrière un routeur
(et dans ce cas les solutions proposées renvoient l'adresse locale
attribuée par le routeur).
J'ai bidouillé un peu un code trouvé sur internet
(http://faq.vb.free.fr/index.php?question8) qui ne fonctionne pas
chez moi avec le site retenu. Je suis passé par http://www.mon-ip.com/
et ça paraît donner le résultat attendu :
'==========================(dans un module ordinaire)
'
' API permettant de récupérer le contenu d'une page Web dans un fichier
'
Private Declare Function URLDownloadToFile Lib "urlmon" _
Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szUrl As
String, _
ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB
As Long) As Long
'
' Exemple d'utilisation de GetPublicIP
'
Sub essai()
Dim ip As String
Dim ret As Boolean
ret = GetPublicIP(ip)
If ret Then
MsgBox "Votre IP publique est : " & ip
Else
MsgBox "impossible de lire l'adresse IP"
End If
End Sub
'
' Lit le contenu d'un fichier et retourne un buffer
'
Public Function readFromFile(ByVal szFileName As String, ByRef buf As
String) As Boolean
Dim f As Integer
On Error GoTo readFromFile_err
f = FreeFile
Open szFileName For Binary As #f
buf = Space$(LOF(f))
Get #f, , buf
Close #f
readFromFile = True
readFromFile_ok:
Exit Function
readFromFile_err:
Resume readFromFile_ok
End Function
'
' Appelle URLDownloadToFile et stocke le résultat dans un fichier
'
Function DownloadPage(ByVal url As String, ByVal FileName As String) As
Boolean
Dim done As Boolean
Dim value As Long
On Error Resume Next
done = True
If Dir$(FileName) <> "" Then
Kill FileName
End If
value = URLDownloadToFile(0, url, FileName, 0, 0)
If Dir$(FileName) = "" Then
done = False
End If
DownloadPage = done
End Function
'
' Retourne le contenu d'une page Web dans une chaine de caractères
'
Public Function getHtmlFromUrl(ByVal szUrl As String, ByRef szBuf As
String) As Boolean
Dim ret As Boolean
ret = DownloadPage(szUrl, "d:my_temp_ip.dat")
If ret Then
ret = readFromFile("d:my_temp_ip.dat", szBuf)
End If
getHtmlFromUrl = ret
Kill "d:my_temp_ip.dat"
End Function
'
' Retourne l'adresse IP publique
'
Public Function GetPublicIP(ByRef szIP) As Boolean
Dim szBuf As String, S As String
Dim p As Long
Dim ret As Boolean
ret = getHtmlFromUrl("http://www.mon-ip.com/", szBuf)
S = Left(Split(szBuf, "var Ip = """)(1), 20)
szIP = Split(S, """;")(0)
GetPublicIP = True
End Function
'========================= >
FS
Petite précision. Je n'ai posté ce code que pour faire avancer le
schmilblick, contrairement à ce que ma formulation pouvait laisser croire :
> (et dans ce cas les solutions proposées renvoient l'adresse locale
> attribuée par le routeur).
Ce qui était bien la demande de "StDonat" :)
FS
Petite précision. Je n'ai posté ce code que pour faire avancer le
schmilblick, contrairement à ce que ma formulation pouvait laisser croire :
> (et dans ce cas les solutions proposées renvoient l'adresse locale
> attribuée par le routeur).
Ce qui était bien la demande de "StDonat" :)
FS
Petite précision. Je n'ai posté ce code que pour faire avancer le
schmilblick, contrairement à ce que ma formulation pouvait laisser croire :
> (et dans ce cas les solutions proposées renvoient l'adresse locale
> attribuée par le routeur).
Ce qui était bien la demande de "StDonat" :)
FS
Salut Frédéric
mais tu as raison, on est de plus en plus souvent derrière un routeur et
c'est bien de savoir ce qu'on récupère !
j'archive ;-)
Misange
FS a écrit :Petite précision. Je n'ai posté ce code que pour faire avancer le
schmilblick, contrairement à ce que ma formulation pouvait laisser
croire :
> (et dans ce cas les solutions proposées renvoient l'adresse locale
> attribuée par le routeur).
Ce qui était bien la demande de "StDonat" :)
FS
Salut Frédéric
mais tu as raison, on est de plus en plus souvent derrière un routeur et
c'est bien de savoir ce qu'on récupère !
j'archive ;-)
Misange
FS a écrit :
Petite précision. Je n'ai posté ce code que pour faire avancer le
schmilblick, contrairement à ce que ma formulation pouvait laisser
croire :
> (et dans ce cas les solutions proposées renvoient l'adresse locale
> attribuée par le routeur).
Ce qui était bien la demande de "StDonat" :)
FS
Salut Frédéric
mais tu as raison, on est de plus en plus souvent derrière un routeur et
c'est bien de savoir ce qu'on récupère !
j'archive ;-)
Misange
FS a écrit :Petite précision. Je n'ai posté ce code que pour faire avancer le
schmilblick, contrairement à ce que ma formulation pouvait laisser
croire :
> (et dans ce cas les solutions proposées renvoient l'adresse locale
> attribuée par le routeur).
Ce qui était bien la demande de "StDonat" :)
FS
Bonjour Florence,
Si tu archives, je te suggère de préférer cette version, un peu plus
"compacte" et commentée :
'======================== > Private Declare Function URLDownloadToFile Lib "urlmon" _
Alias "URLDownloadToFileA" _
(ByVal pCaller As Long, _
ByVal szUrl As String, _
ByVal szFileName As String, _
ByVal dwReserved As Long, _
ByVal lpfnCB As Long) As Long
Private Declare Function DeleteUrlCacheEntry Lib "Wininet.dll" _
Alias "DeleteUrlCacheEntryA" _
(ByVal lpszUrlName As String) As Long
Sub essai()
MsgBox "Adresse IP publique : " & AdresseIP_Publique
End Sub
Function AdresseIP_Publique()
Dim sSourceURL As String, sLocalFile As String
Dim NumFile As Integer, LenFile As Long
Dim sVarFile As String, S As String
'site où récupérer l'adresse IP
sSourceURL = "http://www.mon-ip.com/"
'fichier temporaire où récupérer le contenu de la page html
sLocalFile = "c:ip.txt"
's'assurer que la page n'est pas en cache
DeleteUrlCacheEntry sSourceURL
'récupération du contenu de la page dans un fichier temporaire
If URLDownloadToFile(0, sSourceURL, sLocalFile, 0, 0) <> 0 Then
S = "Impossible d'atteindre l'adresse " & sSourceURL
Else
'affectation de l'ensemble du contenu du fichier à une variable
NumFile = FreeFile()
Open sLocalFile For Input As #NumFile
LenFile = FileLen(sLocalFile)
sVarFile = Input(LenFile, NumFile)
Close NumFile
'récupération de l'adresse dans le contenu du fichier
S = Split(Left(Split(sVarFile, "var Ip = """)(1), 20), """;")(0)
'nettoyage
Kill sLocalFile
End If
'et renvoi
AdresseIP_Publique = S
End Function
'======================== >
FS
Bonjour Florence,
Si tu archives, je te suggère de préférer cette version, un peu plus
"compacte" et commentée :
'======================== > Private Declare Function URLDownloadToFile Lib "urlmon" _
Alias "URLDownloadToFileA" _
(ByVal pCaller As Long, _
ByVal szUrl As String, _
ByVal szFileName As String, _
ByVal dwReserved As Long, _
ByVal lpfnCB As Long) As Long
Private Declare Function DeleteUrlCacheEntry Lib "Wininet.dll" _
Alias "DeleteUrlCacheEntryA" _
(ByVal lpszUrlName As String) As Long
Sub essai()
MsgBox "Adresse IP publique : " & AdresseIP_Publique
End Sub
Function AdresseIP_Publique()
Dim sSourceURL As String, sLocalFile As String
Dim NumFile As Integer, LenFile As Long
Dim sVarFile As String, S As String
'site où récupérer l'adresse IP
sSourceURL = "http://www.mon-ip.com/"
'fichier temporaire où récupérer le contenu de la page html
sLocalFile = "c:ip.txt"
's'assurer que la page n'est pas en cache
DeleteUrlCacheEntry sSourceURL
'récupération du contenu de la page dans un fichier temporaire
If URLDownloadToFile(0, sSourceURL, sLocalFile, 0, 0) <> 0 Then
S = "Impossible d'atteindre l'adresse " & sSourceURL
Else
'affectation de l'ensemble du contenu du fichier à une variable
NumFile = FreeFile()
Open sLocalFile For Input As #NumFile
LenFile = FileLen(sLocalFile)
sVarFile = Input(LenFile, NumFile)
Close NumFile
'récupération de l'adresse dans le contenu du fichier
S = Split(Left(Split(sVarFile, "var Ip = """)(1), 20), """;")(0)
'nettoyage
Kill sLocalFile
End If
'et renvoi
AdresseIP_Publique = S
End Function
'======================== >
FS
Bonjour Florence,
Si tu archives, je te suggère de préférer cette version, un peu plus
"compacte" et commentée :
'======================== > Private Declare Function URLDownloadToFile Lib "urlmon" _
Alias "URLDownloadToFileA" _
(ByVal pCaller As Long, _
ByVal szUrl As String, _
ByVal szFileName As String, _
ByVal dwReserved As Long, _
ByVal lpfnCB As Long) As Long
Private Declare Function DeleteUrlCacheEntry Lib "Wininet.dll" _
Alias "DeleteUrlCacheEntryA" _
(ByVal lpszUrlName As String) As Long
Sub essai()
MsgBox "Adresse IP publique : " & AdresseIP_Publique
End Sub
Function AdresseIP_Publique()
Dim sSourceURL As String, sLocalFile As String
Dim NumFile As Integer, LenFile As Long
Dim sVarFile As String, S As String
'site où récupérer l'adresse IP
sSourceURL = "http://www.mon-ip.com/"
'fichier temporaire où récupérer le contenu de la page html
sLocalFile = "c:ip.txt"
's'assurer que la page n'est pas en cache
DeleteUrlCacheEntry sSourceURL
'récupération du contenu de la page dans un fichier temporaire
If URLDownloadToFile(0, sSourceURL, sLocalFile, 0, 0) <> 0 Then
S = "Impossible d'atteindre l'adresse " & sSourceURL
Else
'affectation de l'ensemble du contenu du fichier à une variable
NumFile = FreeFile()
Open sLocalFile For Input As #NumFile
LenFile = FileLen(sLocalFile)
sVarFile = Input(LenFile, NumFile)
Close NumFile
'récupération de l'adresse dans le contenu du fichier
S = Split(Left(Split(sVarFile, "var Ip = """)(1), 20), """;")(0)
'nettoyage
Kill sLocalFile
End If
'et renvoi
AdresseIP_Publique = S
End Function
'======================== >
FS
Bonjour,
Pour ce que j'en sais, il faut passer par internet pour récupérer son
adresse IP dite "publique". Du moins lorsqu'on est derrière un routeur
(et dans ce cas les solutions proposées renvoient l'adresse locale
attribuée par le routeur).
J'ai bidouillé un peu un code trouvé sur internet
(http://faq.vb.free.fr/index.php?question8) qui ne fonctionne pas
chez moi avec le site retenu. Je suis passé par http://www.mon-ip.com/
et ça paraît donner le résultat attendu :
'==========================(dans un module ordinaire)
'
' API permettant de récupérer le contenu d'une page Web dans un fichier
'
Private Declare Function URLDownloadToFile Lib "urlmon" _
Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szUrl As
String, _
ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB
As Long) As Long
'
' Exemple d'utilisation de GetPublicIP
'
Sub essai()
Dim ip As String
Dim ret As Boolean
ret = GetPublicIP(ip)
If ret Then
MsgBox "Votre IP publique est : " & ip
Else
MsgBox "impossible de lire l'adresse IP"
End If
End Sub
'
' Lit le contenu d'un fichier et retourne un buffer
'
Public Function readFromFile(ByVal szFileName As String, ByRef buf As
String) As Boolean
Dim f As Integer
On Error GoTo readFromFile_err
f = FreeFile
Open szFileName For Binary As #f
buf = Space$(LOF(f))
Get #f, , buf
Close #f
readFromFile = True
readFromFile_ok:
Exit Function
readFromFile_err:
Resume readFromFile_ok
End Function
'
' Appelle URLDownloadToFile et stocke le résultat dans un fichier
'
Function DownloadPage(ByVal url As String, ByVal FileName As String) As
Boolean
Dim done As Boolean
Dim value As Long
On Error Resume Next
done = True
If Dir$(FileName) <> "" Then
Kill FileName
End If
value = URLDownloadToFile(0, url, FileName, 0, 0)
If Dir$(FileName) = "" Then
done = False
End If
DownloadPage = done
End Function
'
' Retourne le contenu d'une page Web dans une chaine de caractères
'
Public Function getHtmlFromUrl(ByVal szUrl As String, ByRef szBuf As
String) As Boolean
Dim ret As Boolean
ret = DownloadPage(szUrl, "d:my_temp_ip.dat")
If ret Then
ret = readFromFile("d:my_temp_ip.dat", szBuf)
End If
getHtmlFromUrl = ret
Kill "d:my_temp_ip.dat"
End Function
'
' Retourne l'adresse IP publique
'
Public Function GetPublicIP(ByRef szIP) As Boolean
Dim szBuf As String, S As String
Dim p As Long
Dim ret As Boolean
ret = getHtmlFromUrl("http://www.mon-ip.com/", szBuf)
S = Left(Split(szBuf, "var Ip = """)(1), 20)
szIP = Split(S, """;")(0)
GetPublicIP = True
End Function
'========================= >
FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/
StDonat a écrit :
> Bonjour
> J’ai une application qui tourne sur un réseau d’entreprise et j’aurai besoin
> de localiser l’utilisateur, afin de l’orienter différemment selon d’où il se
> connecte. Pour cela il faudrait que je puisse récupérer, par VBA, son adresse
> IP ?
> Es-ce possible, et comment faire ?
> Merci
>
.
Bonjour,
Pour ce que j'en sais, il faut passer par internet pour récupérer son
adresse IP dite "publique". Du moins lorsqu'on est derrière un routeur
(et dans ce cas les solutions proposées renvoient l'adresse locale
attribuée par le routeur).
J'ai bidouillé un peu un code trouvé sur internet
(http://faq.vb.free.fr/index.php?question8) qui ne fonctionne pas
chez moi avec le site retenu. Je suis passé par http://www.mon-ip.com/
et ça paraît donner le résultat attendu :
'==========================(dans un module ordinaire)
'
' API permettant de récupérer le contenu d'une page Web dans un fichier
'
Private Declare Function URLDownloadToFile Lib "urlmon" _
Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szUrl As
String, _
ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB
As Long) As Long
'
' Exemple d'utilisation de GetPublicIP
'
Sub essai()
Dim ip As String
Dim ret As Boolean
ret = GetPublicIP(ip)
If ret Then
MsgBox "Votre IP publique est : " & ip
Else
MsgBox "impossible de lire l'adresse IP"
End If
End Sub
'
' Lit le contenu d'un fichier et retourne un buffer
'
Public Function readFromFile(ByVal szFileName As String, ByRef buf As
String) As Boolean
Dim f As Integer
On Error GoTo readFromFile_err
f = FreeFile
Open szFileName For Binary As #f
buf = Space$(LOF(f))
Get #f, , buf
Close #f
readFromFile = True
readFromFile_ok:
Exit Function
readFromFile_err:
Resume readFromFile_ok
End Function
'
' Appelle URLDownloadToFile et stocke le résultat dans un fichier
'
Function DownloadPage(ByVal url As String, ByVal FileName As String) As
Boolean
Dim done As Boolean
Dim value As Long
On Error Resume Next
done = True
If Dir$(FileName) <> "" Then
Kill FileName
End If
value = URLDownloadToFile(0, url, FileName, 0, 0)
If Dir$(FileName) = "" Then
done = False
End If
DownloadPage = done
End Function
'
' Retourne le contenu d'une page Web dans une chaine de caractères
'
Public Function getHtmlFromUrl(ByVal szUrl As String, ByRef szBuf As
String) As Boolean
Dim ret As Boolean
ret = DownloadPage(szUrl, "d:my_temp_ip.dat")
If ret Then
ret = readFromFile("d:my_temp_ip.dat", szBuf)
End If
getHtmlFromUrl = ret
Kill "d:my_temp_ip.dat"
End Function
'
' Retourne l'adresse IP publique
'
Public Function GetPublicIP(ByRef szIP) As Boolean
Dim szBuf As String, S As String
Dim p As Long
Dim ret As Boolean
ret = getHtmlFromUrl("http://www.mon-ip.com/", szBuf)
S = Left(Split(szBuf, "var Ip = """)(1), 20)
szIP = Split(S, """;")(0)
GetPublicIP = True
End Function
'========================= >
FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/
StDonat a écrit :
> Bonjour
> J’ai une application qui tourne sur un réseau d’entreprise et j’aurai besoin
> de localiser l’utilisateur, afin de l’orienter différemment selon d’où il se
> connecte. Pour cela il faudrait que je puisse récupérer, par VBA, son adresse
> IP ?
> Es-ce possible, et comment faire ?
> Merci
>
.
Bonjour,
Pour ce que j'en sais, il faut passer par internet pour récupérer son
adresse IP dite "publique". Du moins lorsqu'on est derrière un routeur
(et dans ce cas les solutions proposées renvoient l'adresse locale
attribuée par le routeur).
J'ai bidouillé un peu un code trouvé sur internet
(http://faq.vb.free.fr/index.php?question8) qui ne fonctionne pas
chez moi avec le site retenu. Je suis passé par http://www.mon-ip.com/
et ça paraît donner le résultat attendu :
'==========================(dans un module ordinaire)
'
' API permettant de récupérer le contenu d'une page Web dans un fichier
'
Private Declare Function URLDownloadToFile Lib "urlmon" _
Alias "URLDownloadToFileA" (ByVal pCaller As Long, ByVal szUrl As
String, _
ByVal szFileName As String, ByVal dwReserved As Long, ByVal lpfnCB
As Long) As Long
'
' Exemple d'utilisation de GetPublicIP
'
Sub essai()
Dim ip As String
Dim ret As Boolean
ret = GetPublicIP(ip)
If ret Then
MsgBox "Votre IP publique est : " & ip
Else
MsgBox "impossible de lire l'adresse IP"
End If
End Sub
'
' Lit le contenu d'un fichier et retourne un buffer
'
Public Function readFromFile(ByVal szFileName As String, ByRef buf As
String) As Boolean
Dim f As Integer
On Error GoTo readFromFile_err
f = FreeFile
Open szFileName For Binary As #f
buf = Space$(LOF(f))
Get #f, , buf
Close #f
readFromFile = True
readFromFile_ok:
Exit Function
readFromFile_err:
Resume readFromFile_ok
End Function
'
' Appelle URLDownloadToFile et stocke le résultat dans un fichier
'
Function DownloadPage(ByVal url As String, ByVal FileName As String) As
Boolean
Dim done As Boolean
Dim value As Long
On Error Resume Next
done = True
If Dir$(FileName) <> "" Then
Kill FileName
End If
value = URLDownloadToFile(0, url, FileName, 0, 0)
If Dir$(FileName) = "" Then
done = False
End If
DownloadPage = done
End Function
'
' Retourne le contenu d'une page Web dans une chaine de caractères
'
Public Function getHtmlFromUrl(ByVal szUrl As String, ByRef szBuf As
String) As Boolean
Dim ret As Boolean
ret = DownloadPage(szUrl, "d:my_temp_ip.dat")
If ret Then
ret = readFromFile("d:my_temp_ip.dat", szBuf)
End If
getHtmlFromUrl = ret
Kill "d:my_temp_ip.dat"
End Function
'
' Retourne l'adresse IP publique
'
Public Function GetPublicIP(ByRef szIP) As Boolean
Dim szBuf As String, S As String
Dim p As Long
Dim ret As Boolean
ret = getHtmlFromUrl("http://www.mon-ip.com/", szBuf)
S = Left(Split(szBuf, "var Ip = """)(1), 20)
szIP = Split(S, """;")(0)
GetPublicIP = True
End Function
'========================= >
FS
--
Frédéric SIGONNEAU
Modules et modèles pour Excel :
http://frederic.sigonneau.free.fr/
StDonat a écrit :
> Bonjour
> J’ai une application qui tourne sur un réseau d’entreprise et j’aurai besoin
> de localiser l’utilisateur, afin de l’orienter différemment selon d’où il se
> connecte. Pour cela il faudrait que je puisse récupérer, par VBA, son adresse
> IP ?
> Es-ce possible, et comment faire ?
> Merci
>
.
merci !
Misange
FS a écrit :Bonjour Florence,
Si tu archives, je te suggère de préférer cette version, un peu plus
"compacte" et commentée :
'======================== >> Private Declare Function URLDownloadToFile Lib "urlmon" _
Alias "URLDownloadToFileA" _
(ByVal pCaller As Long, _
ByVal szUrl As String, _
ByVal szFileName As String, _
ByVal dwReserved As Long, _
ByVal lpfnCB As Long) As Long
Private Declare Function DeleteUrlCacheEntry Lib "Wininet.dll" _
Alias "DeleteUrlCacheEntryA" _
(ByVal lpszUrlName As String) As Long
Sub essai()
MsgBox "Adresse IP publique : " & AdresseIP_Publique
End Sub
Function AdresseIP_Publique()
Dim sSourceURL As String, sLocalFile As String
Dim NumFile As Integer, LenFile As Long
Dim sVarFile As String, S As String
'site où récupérer l'adresse IP
sSourceURL = "http://www.mon-ip.com/"
'fichier temporaire où récupérer le contenu de la page html
sLocalFile = "c:ip.txt"
's'assurer que la page n'est pas en cache
DeleteUrlCacheEntry sSourceURL
'récupération du contenu de la page dans un fichier temporaire
If URLDownloadToFile(0, sSourceURL, sLocalFile, 0, 0) <> 0 Then
S = "Impossible d'atteindre l'adresse " & sSourceURL
Else
'affectation de l'ensemble du contenu du fichier à une variable
NumFile = FreeFile()
Open sLocalFile For Input As #NumFile
LenFile = FileLen(sLocalFile)
sVarFile = Input(LenFile, NumFile)
Close NumFile
'récupération de l'adresse dans le contenu du fichier
S = Split(Left(Split(sVarFile, "var Ip = """)(1), 20), """;")(0)
'nettoyage
Kill sLocalFile
End If
'et renvoi
AdresseIP_Publique = S
End Function
'======================== >>
FS
merci !
Misange
FS a écrit :
Bonjour Florence,
Si tu archives, je te suggère de préférer cette version, un peu plus
"compacte" et commentée :
'======================== >> Private Declare Function URLDownloadToFile Lib "urlmon" _
Alias "URLDownloadToFileA" _
(ByVal pCaller As Long, _
ByVal szUrl As String, _
ByVal szFileName As String, _
ByVal dwReserved As Long, _
ByVal lpfnCB As Long) As Long
Private Declare Function DeleteUrlCacheEntry Lib "Wininet.dll" _
Alias "DeleteUrlCacheEntryA" _
(ByVal lpszUrlName As String) As Long
Sub essai()
MsgBox "Adresse IP publique : " & AdresseIP_Publique
End Sub
Function AdresseIP_Publique()
Dim sSourceURL As String, sLocalFile As String
Dim NumFile As Integer, LenFile As Long
Dim sVarFile As String, S As String
'site où récupérer l'adresse IP
sSourceURL = "http://www.mon-ip.com/"
'fichier temporaire où récupérer le contenu de la page html
sLocalFile = "c:ip.txt"
's'assurer que la page n'est pas en cache
DeleteUrlCacheEntry sSourceURL
'récupération du contenu de la page dans un fichier temporaire
If URLDownloadToFile(0, sSourceURL, sLocalFile, 0, 0) <> 0 Then
S = "Impossible d'atteindre l'adresse " & sSourceURL
Else
'affectation de l'ensemble du contenu du fichier à une variable
NumFile = FreeFile()
Open sLocalFile For Input As #NumFile
LenFile = FileLen(sLocalFile)
sVarFile = Input(LenFile, NumFile)
Close NumFile
'récupération de l'adresse dans le contenu du fichier
S = Split(Left(Split(sVarFile, "var Ip = """)(1), 20), """;")(0)
'nettoyage
Kill sLocalFile
End If
'et renvoi
AdresseIP_Publique = S
End Function
'======================== >>
FS
merci !
Misange
FS a écrit :Bonjour Florence,
Si tu archives, je te suggère de préférer cette version, un peu plus
"compacte" et commentée :
'======================== >> Private Declare Function URLDownloadToFile Lib "urlmon" _
Alias "URLDownloadToFileA" _
(ByVal pCaller As Long, _
ByVal szUrl As String, _
ByVal szFileName As String, _
ByVal dwReserved As Long, _
ByVal lpfnCB As Long) As Long
Private Declare Function DeleteUrlCacheEntry Lib "Wininet.dll" _
Alias "DeleteUrlCacheEntryA" _
(ByVal lpszUrlName As String) As Long
Sub essai()
MsgBox "Adresse IP publique : " & AdresseIP_Publique
End Sub
Function AdresseIP_Publique()
Dim sSourceURL As String, sLocalFile As String
Dim NumFile As Integer, LenFile As Long
Dim sVarFile As String, S As String
'site où récupérer l'adresse IP
sSourceURL = "http://www.mon-ip.com/"
'fichier temporaire où récupérer le contenu de la page html
sLocalFile = "c:ip.txt"
's'assurer que la page n'est pas en cache
DeleteUrlCacheEntry sSourceURL
'récupération du contenu de la page dans un fichier temporaire
If URLDownloadToFile(0, sSourceURL, sLocalFile, 0, 0) <> 0 Then
S = "Impossible d'atteindre l'adresse " & sSourceURL
Else
'affectation de l'ensemble du contenu du fichier à une variable
NumFile = FreeFile()
Open sLocalFile For Input As #NumFile
LenFile = FileLen(sLocalFile)
sVarFile = Input(LenFile, NumFile)
Close NumFile
'récupération de l'adresse dans le contenu du fichier
S = Split(Left(Split(sVarFile, "var Ip = """)(1), 20), """;")(0)
'nettoyage
Kill sLocalFile
End If
'et renvoi
AdresseIP_Publique = S
End Function
'======================== >>
FS