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 :

Fonction permettant d'extraire les Lettres d'une chaine de caractères


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 54
    Points : 44
    Points
    44
    Par défaut Fonction permettant d'extraire les Lettres d'une chaine de caractères
    Bonjour

    Connaitriez vous une fonction qui permette d'extraire les lettres dans une chaine de caractère. D'une certaine manière similaire à la fonction [val] qui permet d'extraire les chiffres d'une chaine de caractère

    D'avance merci

  2. #2
    Membre régulier
    Inscrit en
    Août 2010
    Messages
    168
    Détails du profil
    Informations forums :
    Inscription : Août 2010
    Messages : 168
    Points : 123
    Points
    123
    Par défaut
    Tu aurais un exemple? parce que recuperer des lettres parmi d'autres lettres en soi y a plusieurs moyens de faire suivant ce que tu souhaites...

  3. #3
    Membre régulier
    Profil pro
    Inscrit en
    Mai 2010
    Messages
    97
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2010
    Messages : 97
    Points : 121
    Points
    121
    Par défaut
    Bonjour volubiliss,

    Je ne connais pas de telle fonction, je ne sais pas si elle existe, mais je peux t'aider à développer une fonction qui fasse ce que tu recherches.

    Tu souhaites récupérer les lettres d'une chaîne de caractère ? Il faut savoir qu'une lettre a un code ASCII compris entre 97 et 122 (pour les minuscules) et entre 65 et 90 (pour les majuscules)

    Il te suffit alors de créer une fonction du type

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    Dim Caractere as String * 1
    Dim ChaineDeDepart as String, ChaineExtraite as String
    Dim i as Integer
    Dim Asc_Chr as Byte
     
    ChaineExtraite = ""
    For i = 1 to len(ChaineDeDepart) Then
        Caractere = Mid(ChaineDeDepart, i, 1)
        Asc_Chr = Asc(Caractere)
        If (Asc_Chr >= 65 And Asc_Chr <= 90) Or (Asc_Chr >= 97 And Asc_Chr <= 122) Then
            ChaineExtraite = ChaineExtraite & Cararactere
        End If
    Next i
    avec ChaineDeDepart la chaîne dont tu veux extraire les lettres...

  4. #4
    Rédacteur/Modérateur

    Avatar de Jean-Philippe André
    Homme Profil pro
    Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Inscrit en
    Juillet 2007
    Messages
    14 641
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : Canada

    Informations professionnelles :
    Activité : Architecte Power Platform, ex-Développeur VBA/C#/VB.Net
    Secteur : Finance

    Informations forums :
    Inscription : Juillet 2007
    Messages : 14 641
    Points : 34 352
    Points
    34 352
    Par défaut
    Salut,
    peut-on avoir un exemple du format de donnee sur lequel tu travailles stp ?
    Les fonctions disponibles sont aussi :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Left()
    Mid()
    Right()

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Juin 2010
    Messages
    54
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juin 2010
    Messages : 54
    Points : 44
    Points
    44
    Par défaut
    merci pour vos retours

    En fait il s'agit d'extraire de cellules composées de chiffres et de lettres ( d'un nombre variable) uniquement les lettres exemples de cellule ( 256AGR) (2635DG) (875RDE)

    Merci pour le code je vais le tester

  6. #6
    Membre averti
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    389
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 389
    Points : 437
    Points
    437
    Par défaut
    Bonsoir,

    Je suppose qu'il n'y a pas de caractères accentués (é,à, è etc.)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Function sc(ByRef maChaine As String) As String
     
    Set rationelleExp = CreateObject("vbscript.regexp")
     
    rationelleExp.Global = True
    rationelleExp.Pattern = "[a-zA-Z]"
     
    Set trouve = rationelleExp.Execute(maChaine)
     
        For i = 0 To trouve.Count - 1
            sc = sc & trouve(i)
        Next i
     
    End Function

  7. #7
    Expert éminent
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Points : 6 699
    Points
    6 699
    Par défaut
    Citation Envoyé par volubiliss Voir le message

    En fait il s'agit d'extraire de cellules composées de chiffres et de lettres ( d'un nombre variable) uniquement les lettres exemples de cellule ( 256AGR) (2635DG) (875RDE)
    Si tout le monde te demande comment sont construites tes donnés, c'est que si tous les chiffres sont devant et si tous les chiffres sont au nombre de 3, ça change la donne au no=iveau traitement !

    cordialement,

    Didier

  8. #8
    Expert éminent sénior 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
    Points : 31 877
    Points
    31 877
    Par défaut
    Merci JPierreM, je viens d'apprendre une nouveauté.
    Ma proposition dans le même sens (après lecture)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Function sc(maChaine As String) As String
    Dim MonRegExp As Object
     
    Set MonRegExp = CreateObject("vbscript.RegExp")
    With MonRegExp
        .Global = True
        .Pattern = "[0-9]"
        sc = .Replace(maChaine, "")
    End With
    Set MonRegExp = Nothing
    End Function

  9. #9
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 147
    Points
    20 147
    Par défaut
    bonjour,

    Une autre possibilité, si j'ai bien compris la question :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    Dim Chaine As String
     
    Chaine = "255PR"
    Debug.Print Mid(Chaine, Len(Str(Val(Chaine))))
    bon week end
    michel

Discussions similaires

  1. Réponses: 8
    Dernier message: 31/07/2012, 14h16
  2. Réponses: 2
    Dernier message: 09/06/2011, 14h38
  3. Extraire des lettre d'une chaine
    Par Msysteme dans le forum C#
    Réponses: 4
    Dernier message: 25/06/2009, 13h32
  4. [MySQL] extraire les chiffres d'une chaine
    Par megane dans le forum Langage SQL
    Réponses: 4
    Dernier message: 23/08/2006, 14h29
  5. Extraire les mots d'une chaine
    Par hsouna dans le forum C++
    Réponses: 2
    Dernier message: 26/06/2006, 17h12

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