Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Excel > Macros et VBA Excel
Macros et VBA Excel Vos questions relatives aux macros Excel, à l'utilisation de VBA et à l'automatisation de vos classeurs Excel.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 06/12/2011, 19h02   #1
Futur Membre du Club
 
cedric
Inscription : novembre 2008
Messages : 43
Détails du profil
Informations personnelles :
Nom : cedric

Informations forums :
Inscription : novembre 2008
Messages : 43
Points : 17
Points : 17
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
octane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 06/12/2011, 22h25   #2
Modérateur
 
Avatar de AlainTech
 
Homme Alain Gerard
Consultant informatique
Inscription : mai 2005
Messages : 3 675
Détails du profil
Informations personnelles :
Nom : Homme Alain Gerard
Âge : 58
Localisation : Belgique

Informations professionnelles :
Activité : Consultant informatique
Secteur : Finance

Informations forums :
Inscription : mai 2005
Messages : 3 675
Points : 7 668
Points : 7 668
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!
AlainTech est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 07/12/2011, 13h58   #3
Futur Membre du Club
 
cedric
Inscription : novembre 2008
Messages : 43
Détails du profil
Informations personnelles :
Nom : cedric

Informations forums :
Inscription : novembre 2008
Messages : 43
Points : 17
Points : 17
c'est quoi une expression rationnelle.
regexp d'apres certain site ce sont des expression regulieres.
C'est la meme chose ?
octane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2011, 17h24   #4
Futur Membre du Club
 
cedric
Inscription : novembre 2008
Messages : 43
Détails du profil
Informations personnelles :
Nom : cedric

Informations forums :
Inscription : novembre 2008
Messages : 43
Points : 17
Points : 17
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 :
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
octane est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 07/12/2011, 21h25   #5
Expert Confirmé Sénior
 
Avatar de Qwazerty
 
Homme Stéphane
La très haute tension :D
Inscription : avril 2002
Messages : 2 446
Détails du profil
Informations personnelles :
Nom : Homme Stéphane
Âge : 32
Localisation : France

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

Informations forums :
Inscription : avril 2002
Messages : 2 446
Points : 4 620
Points : 4 620
Envoyer un message via MSN à Qwazerty
Salut
essai comme ça

Code :
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
HammerFest
Ma page perso DVP - Dernier Tutoriel : VBA & Internet Explorer
Qwazerty est déconnecté   Envoyer un message privé Réponse avec citation 10
Vieux 08/12/2011, 13h35   #6
Futur Membre du Club
 
cedric
Inscription : novembre 2008
Messages : 43
Détails du profil
Informations personnelles :
Nom : cedric

Informations forums :
Inscription : novembre 2008
Messages : 43
Points : 17
Points : 17
impec ca marche merci
octane est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 21h59.


 
 
 
 
Partenaires

Hébergement Web