[VBA] Inversion REGEX - extraction température

Bonjour à tous !

J'essai en vain de créer une REGEX afin de récupérer la température (sans l'unité, c'est à dire 26.5 dans mon exemple ci-dessous) d'une chaîne de caractère. J'arrive à cibler la valeur de la température en elle-même avec la REGEX suivante : \d+(?:\.\d+) mais impossible de faire l'inverse afin de récupérer tous le reste pour le supprimer. Je pourrai y arriver en utiliser la fonction .Execute mais j'aimerai éviter car ça m'oblige à utiliser une boucle

Voici le code en entier qui permet de supprimer la température :

Sub RgxTemp()

    txt = "Température moyenne : 26.5°C prise le 21-Nov-2022 à 14:20:03"

    Set RegEx = CreateObject("VBScript.RegExp")

    RegEx.Global = True

    RegEx.Pattern = "\d+(?:\.\d+)"

    resultat = RegEx.Replace(txt, "")

    MsgBox resultat

End Sub

Saurez-vous m'aider ? Merci d'avance !

Bonne journée,

Baboutz

Bonsoir Baboutz

Et tu veux absolument te servir de REGEX()

Sub RecupTemp()
  Dim Tmp As String
  txt = "Température moyenne : 26.5°C prise le 21-Nov-2022 à 14:20:03"
  Tmp = Left(txt, InStr(1, txt, "°C") - 1)
  Tmp = Right(Tmp, Len(Tmp) - InStr(1, Tmp, ": ") - 1)
  MsgBox Tmp
End Sub

A+

bonsoir,

remplace cette instruction

resultat = RegEx.Replace(txt, "")

par celle-ci

resultat = RegEx.execute(txt)(0)

Bonjour à tous et merci pour vos réponses !

@BrunoM45 En effet, je pourrai passer par ces fonctions mais cette macro s'inscrit dans une plus grande macro recquierant les REGEX, donc autant les utiliser et puis cela permet de m'améliorer sur ce sujet !

@h2so4 Merci ! On s'abstient de boucle de cette manière effectivement. Je laisse néanmoins le sujet ouvert, si quelqu'un arrive à trouver l'inverse de ma REGEX actuelle, je suis preneur afin de pouvoir mieux comprendre leurs utilisation et pour pouvoir apprendre

Merci et bonne journée !

Baboutz

Rechercher des sujets similaires à "vba inversion regex extraction temperature"