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. 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. 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)
    1. 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.
    2. Merci pour vos réponses.
      Je vais faire les tests.

      Cordialement,