IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

VBA Access Discussion :

Expression régulière et vba


Sujet :

VBA Access

  1. #1
    Membre du Club
    Homme Profil pro
    Webmaster
    Inscrit en
    Juin 2007
    Messages
    126
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Webmaster

    Informations forums :
    Inscription : Juin 2007
    Messages : 126
    Points : 57
    Points
    57
    Par défaut Expression régulière et vba
    Bonjour,

    Je voudrai, grâce aux expressions régulières trouver tous les mots qui sont compris entre certaines balises, par exemple si j'ai
    <b>toto</b><b>tata</b>
    je voudrai avoir toto et tata en résultat.

    Pour cela j'utilise l'expression suivante mais malheureusement j'obtiens toto</b><b>tata, comment faire pour obtenir le résultat que je veux?

    Je précise (je ne sais pas si il y a une grande importance), j'utilise VBA et Access.

    Merci pour votre aide.

  2. #2
    Membre chevronné

    Profil pro
    Inscrit en
    Avril 2006
    Messages
    1 399
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2006
    Messages : 1 399
    Points : 2 221
    Points
    2 221
    Par défaut
    bonjour,

    une solution parmi d'autres à tester :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
     
    Public Function testsb()
       Dim asRes() As String
       Dim i As Integer
       asRes = SansBalise("<b>toto</b><b>tata</b>", ">", "<")
       Debug.Print UBound(asRes)
       For i = 1 To UBound(asRes)
          Debug.Print asRes(i)
       Next i
    End Function
     
    Public Function SansBalise(ByVal sText As String, ByVal sLimGauche As String, _
                               ByVal sLimDroite As String) As String()
       Dim i As Integer, j As Integer, iNbRes As Integer
       Dim asResults() As String, sRes As String
     
       i = InStr(sText, sLimGauche)
       Do While i > 0
          j = InStr(i + 1, sText, sLimDroite)
          If j > 0 Then
             sRes = Trim$(Mid$(sText, i + 1, j - i - 1))
             If sRes <> vbNullString Then
                iNbRes = iNbRes + 1
                ReDim Preserve asResults(1 To iNbRes)
                asResults(iNbRes) = sRes
             End If
             i = InStr(j + 1, sText, sLimGauche)
          Else
             Exit Do
          End If
       Loop
       SansBalise = asResults
    End Function
    philippe

  3. #3
    Membre émérite

    Profil pro
    Inscrit en
    Février 2005
    Messages
    1 751
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 1 751
    Points : 2 368
    Points
    2 368
    Par défaut
    Bonjour qltmi et philben,
    Pour rester sur une solution qui utilise les expressions régulières...
    Citation Envoyé par qltmi Voir le message
    Je voudrai, grâce aux expressions régulières trouver tous les mots qui sont compris entre certaines balises, par exemple si j'ai

    je voudrai avoir toto et tata en résultat.

    Pour cela j'utilise l'expression suivante mais malheureusement j'obtiens toto</b><b>tata, comment faire pour obtenir le résultat que je veux?
    Tu es confronté au comportement "gourmand" du quantificateur "*".
    Par "gourmand", on entend que le quantificateur est appliqué à une chaîne de caractères de la plus grande taille possible.

    Mais il est aussi possible d'utiliser une version "non gourmande" du quantificateur en lui ajoutant le caractère "?".
    Dans une utilisation "non gourmande" (ou encore dite "paresseuse"), le quantificateur est appliqué à la première chaîne de caractères qui se conforme au modèle.

    Donc pour ton besoin on utiliserait le modèle suivant:
    Des liens pour en savoir plus:
    Dépannage des expressions régulières en Visual Basic
    Syntaxe d'une expression régulière
    _

  4. #4
    Expert éminent
    Avatar de cafeine
    Inscrit en
    Juin 2002
    Messages
    3 904
    Détails du profil
    Informations forums :
    Inscription : Juin 2002
    Messages : 3 904
    Points : 6 781
    Points
    6 781
    Par défaut
    Hello,

    pour la forme, je me sens obligé de mentionner mon tuto ...
    http://cafeine.developpez.com/access/tutoriel/regexp/

    et en utilisant la fonction qui est dans le Tuto
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    17
    18
    Allregexp "<b>toto</b><b>tata</b>","<b>(.*?)</b>","$1" & vbcrlf
    ==================================
          Travaux liés à .Execute
    ==================================
    nombre d'occurences : 2
    source >>     <b>toto</b>
    [$1]          toto
    source >>     <b>tata</b>
    [$1]          tata
    ==================================
            Travaux liés à .Test
    ==================================
    Vrai
    ==================================
          Travaux liés à .Replace
    ==================================
    toto
    tata

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. Expression régulière en VBA
    Par abso_ dans le forum Algorithmes et structures de données
    Réponses: 0
    Dernier message: 22/01/2014, 13h46
  2. [XL-2007] Expression régulière vba excel
    Par jeanne2 dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 17/06/2010, 06h27
  3. Expression régulière en vba?
    Par Kikumaru dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 30/08/2007, 14h38
  4. VBA et expressions régulières
    Par zoidy dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 16/08/2007, 15h29
  5. [RegEx] Traduire des "expression régulières" VBA en PHP
    Par jcachico dans le forum Langage
    Réponses: 13
    Dernier message: 19/01/2006, 14h02

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo