Fonction pour valider le format d'une adresse ip

Soyez le premier à donner votre avis sur cette source.

Snippet vu 4 539 fois - Téléchargée 38 fois

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

Ajouter un commentaire

Commentaires

JoVB
Messages postés
87
Date d'inscription
lundi 4 novembre 2002
Statut
Membre
Dernière intervention
10 mars 2009
-
Super fonction ! Merci

Et merci aussi de commenter la source ;)

9/10

@+ Bonne prog

//JoVB
SamDotNet
Messages postés
11
Date d'inscription
lundi 24 février 2003
Statut
Membre
Dernière intervention
15 avril 2006
-
SPLIIIIIIT () !!!!
Je l'avais oublié celui-là ! Ca simplifie monstrueusement les choses!
Merci pour le conseil... [8D]
RAMASSPIPO
Messages postés
4
Date d'inscription
vendredi 17 janvier 2003
Statut
Membre
Dernière intervention
24 septembre 2003
-
J'ai essayé l'IP suivante :192.168.1.

Réponse BONNE IP.
cs_Mémère
Messages postés
223
Date d'inscription
samedi 24 mars 2001
Statut
Modérateur
Dernière intervention
24 juin 2007
-
T'as split() qui est pas mal ausi. Mais C tjrs plus amusant de tout refaire.

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.