Cette fonction sert à vérifier si une chaine entrée est une adresse IP valide.
Exemple: pour 500.123.0.0 , eer.123.152.123 elle revoie False.
Source / Exemple :
Public Function CheckIPFormat(IP As String, Optional CanPop As Boolean = False) As Boolean
Const msgIPFormat = "Une adresse IP doit être du format 'nombre.nombre.nombre.nombre' " _
& vbCr & "où 'nombre' est un entier d'au plus 3 chiffres variant de 0 à 255."
Dim strbuf$, i%, ii%, pos%, LastPos%, IPItem$, Problem As Boolean
If IP = "" Then
CheckIPFormat = False
Exit Function
Else
pos = 0
For i = 1 To 4
LastPos = pos + 1
Select Case i
Case 1, 2, 3: pos = InStr(LastPos, IP, ".")
If pos <> 0 Then IPItem = Mid(IP, LastPos, pos - LastPos)
'IPitem : Nombres séparés par les points
Case 4: IPItem = Mid(IP, LastPos, Len(IP) - pos)
End Select
'Rien que des chiffres
For ii = 1 To Len(IPItem)
strbuf = Mid(IPItem, ii, 1)
If Asc(strbuf) < 48 Or Asc(strbuf) > 57 Then
Problem = True
Exit For
Else: Problem = False
End If
Next ii
'Pos=0 :pas de "." dans la chaine ex: "125125"
'pos-lastpos >3 : nombre trop long ex: "1251.12.12.1"
'Problem : Pas rien que des chiffres ex: "12a.12.12.1"
If (pos = 0) Or ((pos - LastPos) > 3) Or Problem _
Or Not ((Val(IPItem) < 256) And (Val(IPItem) >= 0)) Then
If CanPop Then MsgBox msgIPFormat, vbOKOnly, "Mauvaise adresse IP"
CheckIPFormat = False
Exit Function
End If
Next i
CheckIPFormat = True
End If
End Function 'CheckIPFormat
Conclusion :
Ben, je l'ai fait de toutes pièces ... Vos remarques....