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 :

identifier format d'un text dans une cellule [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 48
    Par défaut identifier format d'un text dans une cellule
    Bonjour la communauté,
    J'ai des difficultés à programmer un controle de format de cellule.
    Je voudrais verifier que le contenu d'une cellule est du format :
    3 lettres - 3 lettres - 6 chiffres - 1 chiffre et n'importe quoi apres
    Ex :
    EQU-TAT-111102-1X

    si ce format est respecté je ne fait rien sinon je copie le contenu de la cellule dans un autre onglet.
    Comment detecter si le format est respecté?
    Merci

  2. #2
    Modérateur
    Avatar de AlainTech
    Homme Profil pro
    Consultant informatique
    Inscrit en
    Mai 2005
    Messages
    4 235
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : Belgique

    Informations professionnelles :
    Activité : Consultant informatique
    Secteur : Finance

    Informations forums :
    Inscription : Mai 2005
    Messages : 4 235
    Par défaut
    Bonjour,

    Les Expressions rationnelles sont tout-à-fait indiquées pour ce genre de vérification.

    Fais une recherche dans le forum et/ou sur Google avec le mot clé regexp.
    N'oubliez pas de cliquer sur quand vous avez obtenu ou trouvé vous-même la réponse à votre question.
    Si vous trouvez seul, pensez à poster votre solution. Elle peut servir à d'autres!
    Pensez aussi à voter pour les réponses qui vous ont aidés.
    ------------
    Je dois beaucoup de mes connaissances à mes erreurs!

  3. #3
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 48
    Par défaut
    c'est quoi une expression rationnelle.
    regexp d'apres certain site ce sont des expression regulieres.
    C'est la meme chose ?

  4. #4
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 48
    Par défaut
    j'ai ecrit un code grace a ta recommendation avec la fonction reg exp.
    Mon code marche mais renvoie faux pour la variable trouve alors que le format est bon type AAA-AAA-111111-1

    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
     
    Set rationelleExp = CreateObject("vbscript.regexp")
    LastLig1 = Worksheets("2011 Livraison").Cells(Worksheets("2011 Livraison").Rows.Count, "A").End(xlUp).Row
    rationelleExp.Global = True
    rationelleExp.Pattern = "(^[A-Z]{3}-[A-Z]{3}-[0-9]\d{6}-[0-9]\d{1,2}[A-Z]{0,2}$)"
    For Each c In sh4.Range("A2:A" & LastLig1)
        If c.Value <> "" Then
        machaine = c.Value
        trouve = rationelleExp.test(machaine)
            If trouve = 1 Then
            Else
            Set dest = Sheets("anomalies").Range("A65536").End(xlUp).Offset(1, 0)
            dest = machaine
            dest.Offset(0, 1) = "Format du numero de transaction non conforme "
            End If
        Else
        End If
    Next c
    Mon pattern est faux?
    En gros la question est mon patern est il bon pour un format type:
    AAA-AAA-111111-1
    apres le -1 je peux, mais ce n'est pas systématique, avoir -AA

  5. #5
    Expert confirmé
    Avatar de Qwazerty
    Homme Profil pro
    La très haute tension :D
    Inscrit en
    Avril 2002
    Messages
    4 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 45
    Localisation : France

    Informations professionnelles :
    Activité : La très haute tension :D
    Secteur : Service public

    Informations forums :
    Inscription : Avril 2002
    Messages : 4 124
    Par défaut
    Salut
    essai comme ça

    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
    Sub ExpressionReguliere()
    'Activer les références Outils->Références et cocher dans la liste Microsoft VBScript RegularExpression
    Dim RationelleExp As New RegExp
    Dim LastLig1 As Integer
    Dim c As Range, Dest As Range
    Dim MaChaine As String
    Dim Trouve As Boolean
    'Set RationelleExp = CreateObject("vbscript.regexp")
     
    With ThisWorkbook.Worksheets("2011 Livraison")
        LastLig1 = .Cells(.Rows.Count, "A").End(xlUp).Row
    End With
     
    RationelleExp.Global = True
    RationelleExp.Pattern = "(^[A-Z]{3}-[A-Z]{3}-[0-9]{6}-[0-9]{1,2}[A-Z]{0,2}$)"
    For Each c In Feuil1.Range("A2:A" & LastLig1)
        If c.Value <> "" Then
        MaChaine = c.Value
        Trouve = RationelleExp.test(MaChaine)
            If Trouve Then
            Else
                With ThisWorkbook.Sheets("anomalies").Cells(.Rows.Count, "A").End(xlUp).Offset(1, 0)
                    .Value = MaChaine
                    .Offset(0, 1) = "Format du numero de transaction non conforme "
                End With
            End If
        Else
        End If
    Next c
     
    End Sub
    J'ai activé la référence correspondante et modifié un peu le code, mais si ça te pose problème, prend juste l'expression régulière corrigée

    ++
    Qwaz

    MagicQwaz := Harry Potter la baguette en moins
    Le monde dans lequel on vit
    Ma page perso DVP
    Dernier et Seul Tutoriel : VBA & Internet Explorer
    Dernière contribution : Lien Tableau Structuré et UserForm
    L'utilisation de l’éditeur de message

  6. #6
    Membre averti
    Inscrit en
    Novembre 2008
    Messages
    48
    Détails du profil
    Informations forums :
    Inscription : Novembre 2008
    Messages : 48
    Par défaut
    impec ca marche merci

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

Discussions similaires

  1. Identifier une partie d'un text dans une cellule
    Par markinho04 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/09/2010, 16h21
  2. formatage d'un text dans une cellule stringgrid en float
    Par iam dans le forum Bases de données
    Réponses: 4
    Dernier message: 26/04/2006, 15h05
  3. [VBA-E]séparateur de texte dans une cellule
    Par desdenova dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 11/04/2006, 16h44
  4. [VBA] aligner le texte dans une cellule
    Par Invité dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 19/01/2006, 17h07
  5. Faire défiler un texte dans une cellule de tableau
    Par Furius dans le forum Général JavaScript
    Réponses: 18
    Dernier message: 01/12/2005, 17h06

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