Récupérer son adresse ip internet (version simple et qui fonctionne)

Contenu du snippet

Il y a déjà de nombreux codes vb traitant ce sujet, j'en suis conscient, mais beaucoup s'avèrent complexes, nécessitent des modules ou d'autres choses bien lourdes ou trop vagues, et on a de la chance quand on trouve un code qui fonctionne bien sur ce sujet... Je trouve ridicule de devoir pondre autant de lignes pour récupérer une simple IP Internet.

C'est donc la raison pour laquelle je poste cette petite source de ma composition, d'un niveau gros débutant, certes, mais qui a le mérite de fonctionner à 100% et qui se présente sous la forme d'une fonction facile à comprendre et à exploiter. Si vous avez trouvé plus simple que moi, soyez indulgents svp, et postez vos solutions, ça fera avancer le chmillblick ;)

Source / Exemple :


Function InternetIP() As String

'Cette fonction nécessite 2 controles:
'Un Rich Text Box (que j'ai nommé dans cette source rt1) et un Inet (que j'ai nommé inet1)
'Le controle Inet permet de se connecter à un site ou un ftp, et le controle Rich Text permet de stocker des caractères,
'comme une variable chaine de caractères, mais avec une beaucoup plus grande capacité (ce controle ressemble beaucoup au
'bloc-note de windows au niveau de ses propriétés)

'Si l'on n'arrive pas à se connecter, une erreur surviendra.
'On récupère ici cette erreur pour prévenir l'utilisateur qu'il n'est pas connecté (voir les 2 dernières lignes de la fonction)
On Error GoTo PasDeNet
                
            'On se connecte à un site fournissant l'ip (mon-ip.com dans cet exemple) à travers Inet
            With Inet1
            .AccessType = icUseDefault 'On spécifie un accès aux données par défaut
            .Protocol = icHTTP 'On spécifie que l'on travaille en HTTP
            .RequestTimeout = 5 'On spécifie le temps accordé pour la tentative de connexion
            RT1.Text = .OpenURL("http://www.mon-ip.com/", icString) 'On spécifie l'Url et la cible (le rich text box) dans laquelle on stocke les données
            Do Until .StillExecuting = False 'StillExecuting permet d'attendre que toutes les données de la page soient chargées
            DoEvents
            Loop
            End With
                
'Les variables suivantes servent à repérer l'emplacement de l'ip dans le texte récupéré dans le rich text box
Dim DebuT, FiN As String
DebuT = "<DIV class=IP>Votre adresse IP est "
FiN = "</DIV>"
l1 = InStr(1, RT1.Text, DebuT, vbTextCompare)
l2 = InStr(l1, RT1.Text, FiN, vbTextCompare)
l1 = l1 + Len(DebuT)
l2 = l2 - l1

'On renvoie l'ip trouvée
InternetIP = Mid(RT1.Text, l1, l2)
Exit Function

PasDeNet:
InternetIP = "Pas de connexion internet détectée ou site de référence offline"

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.