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

Macros et VBA Excel Discussion :

regexp pour détecter la présence de caractrères dans une cellule


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2002
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2002
    Messages : 329
    Par défaut regexp pour détecter la présence de caractrères dans une cellule
    Bonjour,

    Je cherche au final à récupérer la ligne des cellules dont le contenu contient des valeurs texte particulières du type, A1, A2, A2, ....,ou A9
    Le code suivant m'indique une erreur d'incompatibilité.
    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
    Private Sub Actualisation()
        'On actualise les résultats avec les valeurs des cellules de la feuille Nouveau Calendrier
        Dim colonne As Integer
        Dim plage As Range
        Dim c As Range
        colonne = 2 ' pour la colonne B
     
        With Worksheets("Nouveau Calendrier")
            For Each c In Columns(9)
                MsgBox MYMATCH(c.value, "A[0-9]{1}")
            Next c
        End With
    End Sub
     
    Function MYMATCH(strValue As String, strPattern As String, Optional blnCase As Boolean = True) As String
        Dim objRegEx As Object
        Dim strPosition As Integer
        Dim RegMC
     
        ' Create regular expression.
        Set objRegEx = CreateObject("VBScript.RegExp")
        With objRegEx
            .Pattern = strPattern
            .IgnoreCase = blnCase
            If .test(strValue) Then
                Set RegMC = .Execute(strValue)
                MYMATCH = RegMC(0).firstindex + 1
            Else
                MYMATCH = "no match"
            End If
        End With
    End Function
    Pourquoi?

  2. #2
    Membre éprouvé
    Homme Profil pro
    Technicien maintenance
    Inscrit en
    Juillet 2012
    Messages
    94
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Technicien maintenance
    Secteur : Industrie

    Informations forums :
    Inscription : Juillet 2012
    Messages : 94
    Par défaut
    A quelle ligne est l'erreur ? La valeur cherchée peut-elle s'écrire A0 ?

  3. #3
    Membre éclairé
    Homme Profil pro
    Enseignant
    Inscrit en
    Avril 2002
    Messages
    329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Vosges (Lorraine)

    Informations professionnelles :
    Activité : Enseignant
    Secteur : Enseignement

    Informations forums :
    Inscription : Avril 2002
    Messages : 329
    Par défaut
    Bonjour,

    Je viens de trouver mon erreur, comme à chaque fois au moment où je poste
    L'erreur était à la ligne 9 sur la boucle for each ... next.
    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
    Private Sub Actualisation()
        'On actualise les résultats avec les valeurs des cellules de la feuille Nouveau Calendrier
        Dim colonne As Integer
        Dim plage As Range
        Dim c As Range
        colonne = 9 ' pour la colonne I
     
        With Worksheets("Nouveau Calendrier")
            For Each c In .Range(Cells(6, colonne), Cells(38, colonne))
                MsgBox c.value & " - " & MYMATCH(c.value, "A[0-9]{1}")
            Next c
        End With
    End Sub
     
    Function MYMATCH(strValue As String, strPattern As String, Optional blnCase As Boolean = True) As String
        Dim objRegEx As Object
        Dim strPosition As Integer
        Dim RegMC
     
        ' Create regular expression.
        Set objRegEx = CreateObject("VBScript.RegExp")
        With objRegEx
            .Pattern = strPattern
            .IgnoreCase = blnCase
            If .test(strValue) Then
                Set RegMC = .Execute(strValue)
                MYMATCH = RegMC(0).firstindex + 1
            Else
                MYMATCH = "no match"
            End If
        End With
    End Function
    Merci

  4. #4
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Utilise plutôt
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each c In .Columns(9).Cells
    !!Toutes le cellules de la colonnes seront scrutées. mauvaise idée.

    Ou bien pour tenir compte seulement des cellules comportant des valeurs (une colonne vide engendre une erreur)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each c In .Columns(9).SpecialCells(xlCellTypeConstants)
    PS, Dans ta réponse, attention à l'écriture, il fallait faire
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .Range(.Cells(6, colonne), .Cells(38, colonne))
    les points avant Cells sont "obligatoires"

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

Discussions similaires

  1. Réponses: 4
    Dernier message: 28/09/2011, 12h04
  2. Détecter le retour à la ligne dans une cellule multiligne
    Par justgreat dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 22/10/2010, 18h26
  3. REGEXP pour détecter chiffres entre parenthèses
    Par noyau dans le forum Langage SQL
    Réponses: 6
    Dernier message: 29/01/2010, 11h18
  4. Pb pour se servir d'un tableau dans une autre unité
    Par libititi dans le forum Langage
    Réponses: 7
    Dernier message: 08/06/2005, 12h40
  5. Réponses: 8
    Dernier message: 14/03/2005, 22h43

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