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 :

Extraction de données code plus complexe


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 36
    Par défaut Extraction de données code plus complexe
    Bonjour voila en fait je dispose du code suivant
    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
    Sub Ext_Straddlevs()
     
    Dim code As String
    Dim maturity As String
    Dim tenor As String
    Dim instrum As String
    Dim Last As String
    Dim pos1 As Integer
    Dim pos2 As Integer
    Dim pos3 As Integer
     
    code = "100m10y @123 vs 2040"
     
    pos1 = InStr(code, "m") Or InStr(code, "y")
    pos2 = InStr(pos1 + 1, code, "y")
    pos3 = InStr(code, "@")
    pos4 = InStr(pos3 + 1, code, "vs")
     
    maturity = Trim(Left(code, pos1))
    tenor = Trim(Mid(code, pos1 + 1, pos2 - pos1))
    instrum = "Straddle"
    Last = Trim(Mid(code, pos3 + 1, pos4 - pos3 - 1))
    straddle = Trim(Mid(code, pos4 + 2))
     
    MsgBox "Maturite :" & maturity & vbLf & vbLf & " Tenor :" & tenor & vbLf & vbLf & "Instrument :" & instrum & vbLf & vbLf & "Last :" & Last & vbLf & vbLf & "Strad :" & straddle
     
    End Sub
    toutefois ce programme reste difficile a modifier au cas ou mon code de depart soit de la forme
    code: "100y10y @123 vs 2040" certes juste le y change mais je suis bloque car j aimerais extraire d une part le 100y d autre part le 10y hors mon programme ne me le permets pas
    j aimerais savoir comment le modifier pour obtenir ce que je cherche

  2. #2
    Expert confirmé
    Homme Profil pro
    Inscrit en
    Août 2010
    Messages
    3 453
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations forums :
    Inscription : Août 2010
    Messages : 3 453
    Par défaut
    Bonjour,

    Une piste avec la fonction Split(). Ceci te permet déjà de scinder en blocs sur lesquels il te sera plus facile de travailler ensuite, avec Left et Right tu épure Enfin, comme dit, c'est une piste :
    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
     
    Sub Ext_Straddlevs()
     
        Dim code As String
        Dim Code1 As String
        Dim Code2 As String
        Dim Code3 As String
        Dim Code4 As String
        Dim Code5 As String
     
        code = "100y10y @123 vs 2040"
     
        Code1 = Left(Split(code, " ")(0), 4)
        Code2 = Right(Split(code, " ")(0), 3)
        Code3 = Split(code, " ")(1)
        Code4 = Split(code, " ")(2)
        Code5 = Split(code, " ")(3)
     
        MsgBox "Code 1 : " & Code1 & vbLf & vbLf & _
               "Code 2 : " & Code2 & vbLf & vbLf & _
               "Code 3 : " & Code3 & vbLf & vbLf & _
               "Code 4 : " & Code4 & vbLf & vbLf & _
               "Code 5 : " & Code5
     
    End Sub
    Hervé.

  3. #3
    Membre averti
    Profil pro
    Inscrit en
    Mars 2013
    Messages
    36
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mars 2013
    Messages : 36
    Par défaut
    Merci theze pour ta reponse toutefois , cela ne marchera pas dans un cas plus général , psk le code dont je dispose peut avoir un nombre d elements variables (j ai juste donne un exemple) mais j aimerais le faire dans le cas ou je ne connais pas forcement la longueur de ma chaine de caractere

  4. #4
    Invité
    Invité(e)
    Par défaut
    Bonjour,
    Si le split fonctionne très bien, c’est l’énoncé qui fonctionne pas bien :
    Avec la longueur du tableau Ubound(Split1) on peut savoir le nombre d’occurrences
    Split m par exemple :
    "100m10y P10% @123" le tableau va nous retourner 100 ; 10y P10% @123
    "100m10m P10% @123" le tableau va nous retourner 100 ; 10 ; P10% @123


    Split y par exemple :
    "100m10y P10% @123" le tableau va nous retourner 100m10 ; P10% @123
    "100y10y P10% @123" le tableau va nous retourner 100 ; 10 ; P10% @123
    "100y10m P10% @123" le tableau va nous retourner 100 ; 10m P10% @123

    Si les exemples sont simples la solution est simple
    Si les exemples sont complexes la solution est complexe
    Il nous faut plusieurs exemples à décoder car on peut avoir besoin d’imbriquer de split !

    En suite si le code est totalement anarchique "X" par exemple ???

Discussions similaires

  1. Extraction des données du PDF vers MySql : code Java
    Par Colonel-Essaid dans le forum Général Java
    Réponses: 1
    Dernier message: 08/04/2011, 14h37
  2. Réponses: 0
    Dernier message: 25/11/2009, 09h51
  3. [Blog] Code pour extraction de données
    Par pjourda dans le forum EDI, CMS, Outils, Scripts et API
    Réponses: 2
    Dernier message: 23/03/2009, 16h47
  4. Réponses: 4
    Dernier message: 07/11/2007, 15h44
  5. Extraction de données sur des fichiers excel
    Par iupgeii dans le forum MFC
    Réponses: 3
    Dernier message: 23/01/2004, 13h53

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