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

VBA Discussion :

Récuperer des caractères Majuscules dans une chaine


Sujet :

VBA

  1. #1
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Points : 7
    Points
    7
    Par défaut Récuperer des caractères Majuscules dans une chaine
    Bonjour, je suis en train de developper une petite application et j'aimerais pouvoir extraire et stocker les chaines qui sont en majuscules :

    Exemple :

    le fichier xyz.ab contient :
    ENV:/u01/<psid>/ssy/
    KLK
    ORA
    BFE:/u02/
    /u03/<pSID>/FIND/appl

    je dois donc récupérer ENV, KLK, ORA, BFE, FIND

    j'ai commencé ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
     
    Open "P:\xyz.ab" For Input As intFichIn2
    Do While Not EOF(intFichIn2)
    Line Input #intFichIn2, Env
    If Env Like "*[A-Z]*" Or "*[A-Z]:*" Then
    ' c'est ici que je coince pour recupérer mes chaines en majuscules 
    MsgBox (Env)
    Loop
    Close intFichIn2
    Avez vous une idée pour contourner ce problème ? Merci.

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Like peut te dire si le mot contient des majuscules ou des minuscules mais ne te donnera pas la chaîne de caractère.
    Les majuscules vont du code ascii 65 à 90. En testant chaque caractère, et encore, tu auras un pb avec <pSID> chaîne de laquelle tu vas récupérer SID, à moins que tu supprimes toutes les chaînes comprises entre < et >
    Juste une idée

  3. #3
    Futur Membre du Club
    Profil pro
    Inscrit en
    Avril 2007
    Messages
    8
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Avril 2007
    Messages : 8
    Points : 7
    Points
    7
    Par défaut
    Dans ce cas là, comment faire pour extraire des caractères majuscules d'une chaine ?

    Merci

  4. #4
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Bon, tu me fais de la peine, je regarde.

    Edit
    Tiens
    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
    Sub ChercherLeMot()
    Dim LeMot() As String, LaChaine
    Dim i As Byte
    Dim j As Byte
    Dim ok As Boolean
        LaChaine = Array("ENV:/u01/<psid>/ssy/", "KLK", "ORA", "BFE:/u02/", "/u03/<pSID>/FIND/appl")
        For k = 0 To UBound(LaChaine)
            i = 1
            If InStr(LaChaine(k), "<") <> 0 Then LaChaine(k) = _
                Left(LaChaine(k), InStr(LaChaine(k), "<") - 1) & _
                Right(LaChaine(k), Len(LaChaine(k)) - InStr(LaChaine(k), ">"))
                MsgBox LaChaine(k)
                Do
                    If Mid(LaChaine(k), i, 1) Like "[A-Z]" Then
                        ReDim Preserve LeMot(j)
                        LeMot(j) = LeMot(j) + Mid(LaChaine(k), i, 1)
                        ok = True
                    End If
                    i = i + 1
                Loop While i <= Len(LaChaine(k))
                If ok Then
                    j = j + 1
                    ok = False
                End If
        Next
        For i = 0 To UBound(LeMot)
            MsgBox LeMot(i)
        Next
    End Sub
    Pour le tableau des chaînes, tu peux le créer en dynamique comme j'ai fait pour le tableau des mots, avec Redim Preserve. Tu ne dis rien sur la façon que tu as de les récupérer.

    Edit(re)
    Tu peux également transformer la macro en faisant une fonction à laquelle tu passes LaChaine en paramètre, et qui retournerait LeMot pour chaque chaîne. Auquel cas tu supprimes la boucle For k = 1 to ... Next et utilises LaChaine à la place de LaChaine(k)
    Cette dernière option ne fonctionnera pas telle quelle si tu peux avoir plusieurs mots dans la même chaîne.
    A+

Discussions similaires

  1. Réponses: 8
    Dernier message: 28/11/2012, 15h49
  2. Remplacer des caractères spéciaux dans une chaine
    Par enzostar dans le forum Langage
    Réponses: 5
    Dernier message: 29/09/2012, 23h16
  3. [PHP 5.2] Additionner des nombres entiers dans une chaine de caractères
    Par lecaptain dans le forum Langage
    Réponses: 2
    Dernier message: 23/10/2009, 12h12
  4. [XL-2003] Trouver la 1ere lettre majuscule dans une chaine de caractères
    Par ptitrault dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 05/10/2009, 10h59
  5. Réponses: 2
    Dernier message: 28/03/2008, 18h24

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