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

Soyez le premier à donner votre avis sur cette source.

Snippet vu 3 489 fois - Téléchargée 39 fois

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

Ajouter un commentaire Commentaires
Messages postés
71
Date d'inscription
samedi 28 décembre 2002
Statut
Membre
Dernière intervention
11 novembre 2004

Si t'apelle ça de la competition... :)
Messages postés
1491
Date d'inscription
dimanche 19 novembre 2000
Statut
Modérateur
Dernière intervention
7 juillet 2014

Houla j'ai de la compétition :) J'avais pas trop penser au port, mais faudrais que tu remettre le On Error Goto Marchepas, sinon le programme va afficher des erreurs dans le cas d'une adresse IP incomplète.

@+

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.