Validation d'une adresse ip : amelioration de celle de max12 : support de ports

Contenu du snippet

Voila le code amelioré. La source originale est de max12
pour la consulter : <a href='http://www.vbfrance.com/article.aspx?Val=7776'>SOURCE DE MAX12( http://www.vbfrance.com/article.aspx?Val=7776 )</a>
  • Supporte maintenant l'ip du type "123.213.222.111:456"

Source / Exemple :


Private Sub Form_Load()
MsgBox ValideIP("212.239.196.86:4662") 'Affiche un msgbox avec False si invalide, True si valide
End Sub

Public Function ValideIP(Texte As String) As Boolean
On Error GoTo MarchePas 'Si erreur : ip invalide
Dim Br1 As String, Br2 As String, Br3 As String, Br4 As String, BrPort As String 'Declaration de variables
If InStr(Texte, ":") <> 0 Then 'Recherche si un port est present, si oui, met le port dans la variable "brport" et l'ip normale dans texte2, sinon, copie texte dans text2
    BrPort = Mid(Texte, InStr(Texte, ":") + 1, Len(Texte) - InStr(Texte, ":") + 1)  'Decoupe l'ip en 2 : BrPrt pour le port
    Texte2 = Mid$(Texte, 1, Len(Texte) - (Len(Texte) - InStr(Texte, ":") + 1)) ' et texte2 pour l'ip sans le port
ElseIf InStr(Texte, ":") = 0 Then ' Si port pas present, alors simplement met texte dans texte2
    Texte2 = Texte
End If

If InStr(Texte2, ".") = 0 Then ValideIP = False: Exit Function 'Decoupe chaque partie de l'ip normale
    Br1 = Mid(Texte2, 1, InStr(Texte2, ".") - 1)
    Br2 = Mid(Texte2, Len(Br1) + 2, (Len(Texte2) - InStr(Texte2, ".")) + 1)
    Br2 = Left(Br2, InStr(Br2, ".") - 1)
    Br3 = Mid(Texte2, Len(Br1) + Len(Br2) + 3, Len(Texte2))
    Br3 = Left(Br3, InStr(Br3, ".") - 1)
    Br4 = Mid(Texte2, Len(Br1) + Len(Br2) + Len(Br3) + 4, Len(Texte2))
    
    If IsNumeric(Br1) = False Or IsNumeric(Br2) = False Or IsNumeric(Br3) = False Or IsNumeric(Br4) = False Then ValideIP = False: Exit Function 'Verifie si ce sont bien des chiffres
    If Not (CInt(Br1) >= 0 And CInt(Br1) <= 255) Or Not (CInt(Br2) >= 0 And CInt(Br2) <= 255) Or Not (CInt(Br3) >= 0 And CInt(Br3) <= 255) Or Not (CInt(Br4) >= 0 And CInt(Br4) <= 255) Then ValideIP = False: Exit Function 'Verifie si ils sont inferieurs à 255
    ValideIP = True 'Ok, c bon
If BrPort <> "" Then 'nom verifie le port, si il y'en a un
        If IsNumeric(BrPort) = False Then ValideIP = False 'numerik ou pas ?
        If Val(BrPort) >= 0 And Val(BrPort + 1 & "a") <= 65536 Then ValideIP = True Else ValideIP = False 'Compris entre 6556 et 0 ?
End If
Exit Function 'Quite la fonction

MarchePas: 'Si erreur, alors va ici
ValideIP = False
End Function

A voir également

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.