Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Général VBA
Général VBA Forum général VBA . Pour les logiciels spécifiques (Access, Excel, Word, ...), postez dans les bons sous forums.
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 15/05/2007, 10h37   #1
Invité de passage
 
Inscription : avril 2007
Messages : 8
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 8
Points : 4
Points : 4
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 :
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.
Loïc59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2007, 00h17   #2
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
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
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/05/2007, 10h33   #3
Invité de passage
 
Inscription : avril 2007
Messages : 8
Détails du profil
Informations forums :
Inscription : avril 2007
Messages : 8
Points : 4
Points : 4
Dans ce cas là, comment faire pour extraire des caractères majuscules d'une chaine ?

Merci
Loïc59 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/05/2007, 00h14   #4
Inactif
 
Avatar de ouskel'n'or
 
Inscription : février 2005
Messages : 12 466
Détails du profil
Informations forums :
Inscription : février 2005
Messages : 12 466
Points : 11 930
Points : 11 930
Bon, tu me fais de la peine, je regarde.

Edit
Tiens
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
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+
ouskel'n'or est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 06h50.


 
 
 
 
Partenaires

Hébergement Web