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 :

Trouver la 1ere lettre majuscule dans une chaine de caractères [XL-2003]


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Janvier 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 13
    Points : 10
    Points
    10
    Par défaut Trouver la 1ere lettre majuscule dans une chaine de caractères
    Bonjour a tous.

    J'ai une colonne Excel qui contient des noms de fonctions et celles ci sont toutes construites sur le modèle suivant : verbe d'action + Description

    Par exemple : getData1, searchData1

    Je souhaite regrouper les fonctions listée par catégorie (selon le verbe d'action) mais pour cela il faut que je puisse extraire le verbe d'action de la chaine. C'est à dire qu'il faut extraire la chaine de caractère à gauche de la 1ere lettre majuscule.

    Le problème c'est que je ne sais pas comment on peut savoir si une lettre est en majuscule ou non ?

    A moins de lister toute les lettres dans un tableau et de les comparer une à une ?

    Si quelqu'un à une autre idée ?

  2. #2
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Points : 9 402
    Points
    9 402
    Par défaut
    Bonjour,

    Tu peux tester caractere par caractere si le code ascii est compris entre 65 et 90 (cette fourchette bornant les 26 lettres en majuscule)

  3. #3
    Membre éclairé
    Homme Profil pro
    retraité
    Inscrit en
    Mai 2006
    Messages
    542
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Seine et Marne (Île de France)

    Informations professionnelles :
    Activité : retraité

    Informations forums :
    Inscription : Mai 2006
    Messages : 542
    Points : 712
    Points
    712
    Par défaut
    Bonjour à tous
    Bonjour ptitrault, jfontaine

    Je ne sais pas si j'ai bien compris, mais je ferais avec :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Set c = .Find("get", LookIn:=xlValues, Lookat:=xlPart)
    Eric

  4. #4
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Points : 9 402
    Points
    9 402
    Par défaut
    Une autre solution avec Like

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Dim i as Integer
     
    For i=1 to len(Range("A2").value)
     
         if mid(range("A2").value,i,1) like "[A-Z]" then msgbox "Position " & i
     
    next i

  5. #5
    Membre à l'essai
    Inscrit en
    Janvier 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Bien vu. ca marche nickel.

    merci

  6. #6
    Membre à l'essai
    Inscrit en
    Janvier 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    J'ai utilisé la solution de jFontaine

    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
     
    Public Function extractUpperCasePart(strString As String) As String
     
        Dim strCharcater    As String
     
        '*** On parcours la chaine de caractere ***
        For intCpt = 1 To Len(strString)
     
            strCharcater = Asc(Mid(strString, intCpt, 1))
     
            If strCharcater > 65 And strCharcatere < 90 Then
                '*** on extrait la partie de gauche ***
                extractUpperCasePart = Left(strString, intCpt - 1)
            End If
        Next
     
    End Function
    merci de votre aide a tous.

  7. #7
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 537
    Points
    5 537
    Par défaut
    Bonjour,

    Méfiance avec l'utilisation des codes ascii (quid de certaines lettres, telles des É ?)
    Je dirais qu'une lettre toto est en majuscules si
    et que

    - Lcase(toto) est compris entre a et z (fonction Like) ou que Lcase(toto) fait partie (instr) d'une chaîne de caractères composée de toutes les voyelles accentuées)

  8. #8
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Points : 9 402
    Points
    9 402
    Par défaut
    Petite précision A=65 et Z=90 ne pas oublier de les inclures dans le bornage

  9. #9
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 150
    Points : 100
    Points
    100
    Par défaut
    Citation Envoyé par jfontaine Voir le message
    Une autre solution avec Like

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Dim i as Integer
    
    For i=1 to len(Range("A2").value)
    
         if mid(range("A2").value,i,1) like "[A-Z]" then msgbox "Position " & i
    
    next i
    "[A-Z]" = expression régulière.

    Si c'est le cas tu viens de m'apprendre un truc de ouf.
    Je sais qu'il existe l'objet regexp sous vba
    mais je pensais pas que tu pouvais ecrire comme une recherche avec reg exp apres like

  10. #10
    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
    Bonjour,

    mais je pensais pas que tu pouvais ecrire comme une recherche avec reg exp apres like
    voir les remarques sur l'argument Pattern de l'opérateur LIke dans l'aide vba, il y en a une tartine plein de possibilités

    extrait :
    Caractère(s) dans pattern Correspondance dans l'argument string
    ? Tout caractère unique.
    * Aucun ou plusieurs caractères.
    # Tout chiffre unique (de 0 à 9).
    [charlist] Tout caractère unique compris dans l'argument charlist.
    [!charlist] Tout caractère unique non compris dans l'argument charlist.
    cordialement,

    Didier

  11. #11
    Membre à l'essai
    Inscrit en
    Janvier 2009
    Messages
    13
    Détails du profil
    Informations forums :
    Inscription : Janvier 2009
    Messages : 13
    Points : 10
    Points
    10
    Par défaut
    Merci a JFontaine et a tous de votre aide.

    Je clos la discussion.

  12. #12
    Membre régulier
    Profil pro
    Inscrit en
    Avril 2008
    Messages
    150
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Avril 2008
    Messages : 150
    Points : 100
    Points
    100
    Par défaut
    Citation Envoyé par Ormonth Voir le message
    Bonjour,



    voir les remarques sur l'argument Pattern de l'opérateur LIke dans l'aide vba, il y en a une tartine plein de possibilités

    extrait :


    cordialement,

    Didier

    F1 est mon ami

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

Discussions similaires

  1. Réponses: 8
    Dernier message: 28/11/2012, 15h49
  2. [RegEx] Trouver les mots en majuscule dans une chaine
    Par Boeing dans le forum Langage
    Réponses: 2
    Dernier message: 15/10/2007, 23h44
  3. Réponses: 6
    Dernier message: 14/08/2007, 16h44
  4. [RegEx] trouver un mot dans une chaine de caractère
    Par starr dans le forum Langage
    Réponses: 2
    Dernier message: 22/06/2007, 15h36
  5. Récuperer des caractères Majuscules dans une chaine
    Par Loïc59 dans le forum Général VBA
    Réponses: 3
    Dernier message: 17/05/2007, 00h14

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