Fonction pour valider le format d'une adresse ip

2/5 (4 avis)

Snippet vu 5 017 fois - Téléchargée 40 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

20 juil. 2004 à 19:49
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

3 avril 2003 à 08:05
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

23 mars 2003 à 03:47
J'ai essayé l'IP suivante :192.168.1.

Réponse BONNE IP.
cs_Mémère
Messages postés
222
Date d'inscription
samedi 24 mars 2001
Statut
Membre
Dernière intervention
24 juin 2007

21 mars 2003 à 09:18
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.