Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Get/Set IP et qq soucis

1 réponse
Avatar
John Fuss
Bonjour à tous,

j'ai développé une macro pour obtenir et changer d'adresse IP & co. Avec
toutes une gestion de création de sites avec gestion des IPs de chaque site,
imprimante par defaut. Mon soucis est que mes fonctions ne fonctionnenet que
lorsque je suis raccordé au réseau et ça me pose quelques problèmes.

Connaissez-vous une autre manière d'obtenir/changer les IPs, DNS, WINS sans
devoir être raccordé ?

Merci d'avance.

John

Public Enum AddressIPType
IP_Adresse = 0
IP_SousReseau = 1
IP_Passerelle = 2
End Enum

'---------------------------------------------------------------------------
------------
' Procedure : GetIPAddress
' DateHeure : 18/10/2004 18:32
' Auteur : jmouchain
' Sujet : Pour obtenir les adresses IP locales
' Sans paramètres renvoi l'adresse IP de la session
'---------------------------------------------------------------------------
------------
'
Public Function GetIPAddress(Optional IPType As AddressIPType = IP_Adresse,
Optional Index As Integer = 0) As String
Dim Adapter As Object

On Error Resume Next
Set Adapter = GetObject("winmgmts:Win32_NetworkAdapterConfiguration=" &
Index)
Select Case IPType
Case IP_Adresse
GetIPAddress = Adapter.ipaddress(0)
Case IP_SousReseau
GetIPAddress = Adapter.IPSubnet(0)
Case IP_Passerelle
GetIPAddress = Adapter.DefaultIPGateway(0)
End Select
End Function

'---------------------------------------------------------------------------
------------
' Procedure : SetIPAdress
' DateHeure : 18/10/2004 18:33
' Auteur : jmouchain
' Sujet : Défini l'adresse IP locale (Index = n° de la carte réseau 0 :
si 1 seule)
' tabIP(0 to 2) => array contenant l'adresse Ip, le masque de
sous-réseau & passerelle
' tabDNS(0 to 1) => array contenant le(s) DNS
' tabWINS(0 to 1) => array contenant le(s) WINS
' DHCP : si True, tabIP ignoré et DHCP activé si False adresse
static
' DNS : si False, tabDNS est ignoré
' WINS : si False, tabWINS est ignoré
'---------------------------------------------------------------------------
------------
'
Public Function SetIPAdress(Optional tabIP As Variant = "", Optional tabDNS
As Variant = "", Optional tabWINS As Variant = "", Optional DHCP As Boolean
= False, Optional DNS As Boolean = False, Optional WINS As Boolean = False)
As Boolean
Dim objWMIService As Object, errGateways As Long
Dim colNetAdapters As Object, objNetAdapter As Variant
Dim objNetAdapters As Variant, Err As Long

Set objWMIService = GetObject("winmgmts:\\" & IIf(GetIPAddress = "",
".", GetIPAddress) & "\root\cimv2")
Set colNetAdapters = objWMIService.ExecQuery("Select * from
Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
For Each objNetAdapters In colNetAdapters
If DNS Then
Err = objNetAdapters.SetDNSServerSearchOrder(tabDNS)
Else
Err = objNetAdapters.SetDNSServerSearchOrder()
End If
Next
For Each objNetAdapter In colNetAdapters
If DHCP Then
Err = Err + objNetAdapter.EnableDHCP()
ElseIf IsArray(tabIP) Then
If UBound(tabIP) = 2 Then
Err = Err + objNetAdapter.EnableStatic(Array(tabIP(0)),
Array(tabIP(1)))
Err = Err + objNetAdapter.setgateways(Array(tabIP(2)),
Array(1))
Else
Err = 1
End If
Else
Err = 1
End If
If WINS And IsArray(tabWINS) Then
If UBound(tabWINS) = 1 Then
Err = Err + objNetAdapter.SetWINSServer(tabWINS(0),
tabWINS(1))
Else
Err = 1
End If
ElseIf Not WINS Then
Err = Err + objNetAdapter.SetWINSServer("", "")
Else
Err = 1
End If
SetIPAdress = Err = 0
Next
End Function

1 réponse

Avatar
John Fuss
D'ailleurs je viens de voir que ma fonction GetIPAdress ne marche pas sur
tous les postes. :'(

John

"John Fuss" a écrit dans le message de
news:clnjee$u2k$
Bonjour à tous,

j'ai développé une macro pour obtenir et changer d'adresse IP & co. Avec
toutes une gestion de création de sites avec gestion des IPs de chaque
site,

imprimante par defaut. Mon soucis est que mes fonctions ne fonctionnenet
que

lorsque je suis raccordé au réseau et ça me pose quelques problèmes.

Connaissez-vous une autre manière d'obtenir/changer les IPs, DNS, WINS
sans

devoir être raccordé ?

Merci d'avance.

John

Public Enum AddressIPType
IP_Adresse = 0
IP_SousReseau = 1
IP_Passerelle = 2
End Enum


'---------------------------------------------------------------------------

------------
' Procedure : GetIPAddress
' DateHeure : 18/10/2004 18:32
' Auteur : jmouchain
' Sujet : Pour obtenir les adresses IP locales
' Sans paramètres renvoi l'adresse IP de la session

'---------------------------------------------------------------------------

------------
'
Public Function GetIPAddress(Optional IPType As AddressIPType IP_Adresse,
Optional Index As Integer = 0) As String
Dim Adapter As Object

On Error Resume Next
Set Adapter = GetObject("winmgmts:Win32_NetworkAdapterConfiguration="
&

Index)
Select Case IPType
Case IP_Adresse
GetIPAddress = Adapter.ipaddress(0)
Case IP_SousReseau
GetIPAddress = Adapter.IPSubnet(0)
Case IP_Passerelle
GetIPAddress = Adapter.DefaultIPGateway(0)
End Select
End Function


'---------------------------------------------------------------------------

------------
' Procedure : SetIPAdress
' DateHeure : 18/10/2004 18:33
' Auteur : jmouchain
' Sujet : Défini l'adresse IP locale (Index = n° de la carte réseau 0
:

si 1 seule)
' tabIP(0 to 2) => array contenant l'adresse Ip, le masque de
sous-réseau & passerelle
' tabDNS(0 to 1) => array contenant le(s) DNS
' tabWINS(0 to 1) => array contenant le(s) WINS
' DHCP : si True, tabIP ignoré et DHCP activé si False adresse
static
' DNS : si False, tabDNS est ignoré
' WINS : si False, tabWINS est ignoré

'---------------------------------------------------------------------------

------------
'
Public Function SetIPAdress(Optional tabIP As Variant = "", Optional
tabDNS

As Variant = "", Optional tabWINS As Variant = "", Optional DHCP As
Boolean

= False, Optional DNS As Boolean = False, Optional WINS As Boolean False)
As Boolean
Dim objWMIService As Object, errGateways As Long
Dim colNetAdapters As Object, objNetAdapter As Variant
Dim objNetAdapters As Variant, Err As Long

Set objWMIService = GetObject("winmgmts:" & IIf(GetIPAddress = "",
".", GetIPAddress) & "rootcimv2")
Set colNetAdapters = objWMIService.ExecQuery("Select * from
Win32_NetworkAdapterConfiguration where IPEnabled=TRUE")
For Each objNetAdapters In colNetAdapters
If DNS Then
Err = objNetAdapters.SetDNSServerSearchOrder(tabDNS)
Else
Err = objNetAdapters.SetDNSServerSearchOrder()
End If
Next
For Each objNetAdapter In colNetAdapters
If DHCP Then
Err = Err + objNetAdapter.EnableDHCP()
ElseIf IsArray(tabIP) Then
If UBound(tabIP) = 2 Then
Err = Err + objNetAdapter.EnableStatic(Array(tabIP(0)),
Array(tabIP(1)))
Err = Err + objNetAdapter.setgateways(Array(tabIP(2)),
Array(1))
Else
Err = 1
End If
Else
Err = 1
End If
If WINS And IsArray(tabWINS) Then
If UBound(tabWINS) = 1 Then
Err = Err + objNetAdapter.SetWINSServer(tabWINS(0),
tabWINS(1))
Else
Err = 1
End If
ElseIf Not WINS Then
Err = Err + objNetAdapter.SetWINSServer("", "")
Else
Err = 1
End If
SetIPAdress = Err = 0
Next
End Function