Public Function CBin(ip_dec) As String
' initiatlisation des variables
Ip_Bin_001 = 0
IP_Bin_002 = 0
IP_Bin_003 = 0
IP_Bin_004 = 0
Ip_Bin_005 = 0
Ip_Bin_006 = 0
Ip_Bin_007 = 0
Ip_Bin_008 = 0
Reste = ip_dec
' pour le premier bit
If (ip_dec >= 128) Then
Ip_Bin_001 = 1
Reste = ip_dec - 128
Else
Ip_Bin_001 = 0
End If
' pour la 2ème
'MsgBox "Reste=" & Reste
If (Reste >= 64) Then
IP_Bin_002 = 1
Reste = Reste - 64
Else
IP_Bin_002 = 0
End If
' pour la 3ème
If (Reste >= 32) Then
IP_Bin_003 = 1
Reste = Reste - 32
Else
IP_Bin_003 = 0
End If
' pour la 4ème
If (Reste >= 16) Then
IP_Bin_004 = 1
Reste = Reste - 16
Else
IP_Bin_004 = 0
End If
' pour le 5ème
If (Reste >= 8) Then
Ip_Bin_005 = 1
Reste = Reste - 8
Else
Ip_Bin_005 = 0
End If
' pour le 6ème
If (Reste >= 4) Then
Ip_Bin_006 = 1
Reste = Reste - 4
Else
Ip_Bin_006 = 0
End If
' pour la 7ème
If (Reste >= 2) Then
Ip_Bin_007 = 1
Reste = Reste - 2
Else
Ip_Bin_007 = 0
End If
' pour la 8ème et dernière
If (Reste >= 1) Then
Ip_Bin_008 = 1
Reste = Reste - 1
Else
Ip_Bin_008 = 0
End If
' on concatène
CBin = Ip_Bin_001 & IP_Bin_002 & IP_Bin_003 & IP_Bin_004 & Ip_Bin_005 & Ip_Bin_006 & Ip_Bin_007 & Ip_Bin_008
End Function
Private Sub Btn_MSR_Click()
Select Case CInt(IP_Dec_01)
Case 1 To 126
MSR_Dec_01 = 255
MSR_Dec_02 = 0
MSR_Dec_03 = 0
MSR_Dec_04 = 0
Case 128 To 191
MSR_Dec_01 = 255
MSR_Dec_02 = 255
MSR_Dec_03 = 0
MSR_Dec_04 = 0
Case 192 To 223
MSR_Dec_01 = 255
MSR_Dec_02 = 255
MSR_Dec_03 = 255
MSR_Dec_04 = 0
End Select
End Sub
Public Function IsPrivate(IP_Dec_01, IP_Dec_02) As Boolean
Dim prive(10)
' prive(1) = "10."
' prive(2) = "172.16."
' prive(3) = "192.168."
' adr = "11.0.0.1"
' function qui va dire si l'adresse ip passé en paramètres est une adresse privée ou non
'MsgBox ("prive=" & prive(1) & " | ip_dec =" & ip_dec)
' strcomp --> -1 si adrese privée
' isegal = StrComp(adr, prive(1), 1)
' MsgBox ("isegal=" & isegal)
'par défaut, on met isprivate à faux
IsPrivate = False
Select Case CInt(IP_Dec_01)
Case 10
IsPrivate = True
Case 172
If CInt(IP_Dec_02) = 16 Then
IsPrivate = True
End If
Case 192
If CInt(IP_Dec_02) = 168 Then
IsPrivate = True
End If
End Select
' IsPrivate = isegal
End Function
'Public Function Nature(segment As Integer) As String
' Select Case segment
' Case 0
' Nature = "d'un réseau"
' Case 1 To 254
' Nature = "d'une carte réseau"
' Case 255
' Nature = "de Broadcast"
' End Select
'End Function
Private Sub Exe_Click()
Dim classe
Dim ip_dec
ip_dec = IP_Dec_01 & "." & IP_Dec_02 & "." & IP_Dec_03 & "." & IP_Dec_04
' Conversion de l'adresse Ip en binaire
IP_Bin_01 = CBin(IP_Dec_01)
IP_Bin_02 = CBin(IP_Dec_02)
IP_Bin_03 = CBin(IP_Dec_03)
IP_Bin_04 = CBin(IP_Dec_04)
' Conversion du masque de sous réseau en binaire
MSR_Bin_01 = CBin(MSR_Dec_01)
MSR_Bin_02 = CBin(MSR_Dec_02)
MSR_Bin_03 = CBin(MSR_Dec_03)
MSR_Bin_04 = CBin(MSR_Dec_04)
' pour les informations :
' pour la classe:
ipn = CInt(IP_Dec_01)
Select Case ipn
Case 1 To 126
classe = "A"
cl_deb = "1.0.0.1"
cl_fin = "126.0.0.254"
nb_ordi_possible = 16777214
Case 128 To 191
classe = "B"
cl_deb = "128.0.0.1"
cl_fin = "191.0.0.254"
nb_ordi_possible = 65534
Case 192 To 223
classe = "C"
cl_deb = "192.0.0.1"
cl_fin = "223.0.0.254"
nb_ordi_possible = 254
End Select
' Tableau contenant les adresses privés
Dim TabAdPri()
info = ""
' info = "Cette adresse est l'adresse " & Nature(IP_Dec_04) & "." & Chr(13)
info = info & "Cette adresse IP est de classe " & classe & "." & Chr(13)
info = info & FormatNumber(nb_ordi_possible, 0, 0, vbFalse) & " adresses maximum dans cette classe, "
info = info & "dont les adresses vont de " & cl_deb & " à " & cl_fin & "." & Chr(13)
privo = IsPrivate(IP_Dec_01, IP_Dec_02)
If privo = True Then
info = info & " C'est une adresse privée." & Chr(13)
Else
info = info & "C'est une adresse publique du réseau internet." & Chr(13)
End If
End Sub
Public Function ClasseDe(ip_dec) As Integer
Select Case ip_dec
Case 1 To 126
ClasseDe = "A"
Case 128 To 191
ClasseDe = "B"
Case 192 To 223
ClasseDe = "C"
End Select
End Function