Fonction pour valider le format d'une adresse ip

Contenu du snippet

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....

A voir également