Récupérer l'IP dans une cellule

Résolu
Bonjour,

Est-ce possible de créer une macro qui récupére une valeur dans une cellule?

Exemple:
Host2 - 192.168.0.23 - Bat 2 - salle C24

Je souhaiterais récupérer uniquement la valeur " 192.168.0.23 "

J'ai trouvé la commande Sheets(1).Cells.Find("*.*.*.*", , , 1) pour repérer les cellules contenant des IP. Par contre, je ne parviens pas à récupérer uniquement l'IP...
Pouvez-vous m'aider svp?

Cordialement,

4 réponses

  1. Merci pour vos réponses.
    Je vais faire les tests.

    Cordialement,
    1. Modérateur
      Si tu es sur de n'avoir qu'une IP par cellule, essaie la fonction personnalisée (issue du tutoriel de caféine) :
      Ne pas oublier d'activer la référence Microsoft VBScript Regular Expressions dans Outils/références (sous l'éditeur VBA)
      'nécessite l'activation de la référence :
        'Microsoft VBScript Regular Expressions
        'Outils/Références
      
      Function IsoleIP(monRange As Range)
      Dim Regle As New VBScript_RegExp_55.RegExp
      Dim EstBon As VBScript_RegExp_55.Match
      Dim maCollec As VBScript_RegExp_55.MatchCollection
      
      Regle.Pattern = "((25[0-5]|2[0-4]\d|1?\d?\d)\.){3}(25[0-5]|2[0-4]\d|1?\d?\d)"
      Set maCollec = Regle.Execute(monRange.Value)
      For Each EstBon In maCollec
          IsoleIP = EstBon.Value
      Next
      Set maCollec = Nothing
      Set Regle = Nothing
      End Function 


      Pour son utilisation, dans la feuille :
      - en A1 : Host2 - 192.168.0.23 - Bat 2 - salle C24
      - en B1 : =IsoleIP(A1)
      1. Bonjour,

        Je pensais utiliser la fonction IsolateIP de cette manière :

        Sub For_Each_Next_Plage()
        Dim FL1 As Worksheet, Cell As Range, Plage As Range
        Dim Var1

        Set FL1 = Worksheets("Feuil2")
        With FL1

        Set Plage = .Range("W47:W200")
        For Each Cell In Plage

        'Valeur de la cellule lue
        Var1 = IsoleIP(Cell.Select)
        Next
        End With
        Set FL1 = Nothing
        Set Plage = Nothing
        End Sub

        L'idée était de parcourir la colonne W de la ligne 47 à 200 pour récupérer l'IP de la cellule.
        Cependant, cela n'a pas l'air de fonctionner. Avez-vous une idée du blocage?

        Cordialement,
      2. Modérateur
        Bonjour,

        Au lieu de :
        Var1 = IsoleIP(Cell.Select) 
        mettre :
        Var1 = IsoleIP(Cell) 
      3. Modérateur
        Bonjour,

        Alors?
        ça fonctionne?
      4. Bonjour,

        Merci beaucoup! cela fonctionne! Je n'ai pas pu travailler dessus hier. Désolé pour la réponse tardive.

        Cordialement,
    2. Bonjour,

      Merci pour la réponse.

      Cependant, il n'y a pas de schéma respecté.
      Les données sont souvent formulé de manière aléatoire.
      L'IP est toujours présente dans la cellule mais il y a également d'autre information dans cette même cellule.

      Cordialement,
      1. Modérateur
        Par schéma j'entendais ceci :
        - l'IP est toujours en "seconde position" dans la cellule,
        - l'IP est entourée de " - ", un avant et un après.

        " - " = enchainement de 3 caractères : "espace" "tiret du 6" "espace"
      2. Pour répondre à votre question, l'IP n'apparaît pas tout le temps en deuxième position.
    3. Modérateur
      Bonjour,

      Si le "schéma" de vos données est toujours de la forme info1 "espace" "tiret" "espace" IP "espace" "tiret" "espace" info3 "espace" "tiret" "espace" etc...
      L'adresse IP est :
      Split(ActiveCell.Value, " - ")(1)