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 :

Supprimer le texte à l'intérieur des parenthèses


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2006
    Messages : 192
    Par défaut Supprimer le texte à l'intérieur des parenthèses
    Bonjour à tous,

    Étant pas très fort dans les fonctions et macros excel, j'aurais besoin de votre aide sur le sujet suivant

    J'ai une page html qui contient les lignes suivantes:

    Code html : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    <option value="45">Php</option>
     
    <option value="10">Java</option>
     
    <option value="3">C#</option>
    ...

    Et je veux récupérer le texte qui est à l'intérieur des options,c-a-d

    php,java,c#

    J'ai pensé à tout simplement remplacer </option> par une chaine de caractère vide, mais le problème c'est avec les <option value=""> car c'est pas du texte statique. J'ai donc pensé à remplacer tout ce qui est à l'intérieur des <> par une chaine vide mais je ne sais pas comment faire cela dans excel.Avez-vous une idée comment je pourrais procéder ?

    Merci

  2. #2
    Expert confirmé
    Avatar de kiki29
    Homme Profil pro
    ex Observeur CGG / Analyste prog.
    Inscrit en
    Juin 2006
    Messages
    6 132
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : ex Observeur CGG / Analyste prog.

    Informations forums :
    Inscription : Juin 2006
    Messages : 6 132
    Par défaut
    Salut,

    Si s est la chaine de caracteres,il y aura peut-être à faire un Trim sur s
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
            PosD = InStr(s, ">")
            PosF = InStr(2, s, "<")
            sStr = Mid$(s, PosD + 1, PosF - PosD - 1)

  3. #3
    Expert éminent 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
    Par défaut
    Bonjour
    Une fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Function ListeMots(Str As String) As String
    Dim Res As String
     
    Do
        Str = Mid(Str, InStr(Str, ">") + 1)
        If InStr(Str, "<") = 0 Then Exit Do
        If Mid(Str, InStr(Str, "<") + 1, 1) = "/" Then Res = Res & "," & Left(Str, InStr(Str, "<") - 1)
    Loop
    If Len(Res) > 1 Then ListeMots = Mid(Res, 2)
    End Function
    à tester comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Test()
    Dim Txt As String
     
    Txt = Sheets("Feuil3").Range("A1").Value
    Debug.Print ListeMots(Txt)
    End Sub

  4. #4
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Je te propose un bout de code qui devrait te donner qq idées
    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
    Sub persia()
    Dim i2 As Long, i1 As Long
    Const s As String = "<option value=""45"">Php</option>" & vbLf & _
                        "<option value=""10"">Java</option>" & vbLf & _
                        "<option value=""3"">C#</option>"
     
    Debug.Print "Chaîne complète : " & vbCrLf & s
     
    i2 = InStr(1, s, "</option>")
     
    While i2 > 0
        i1 = InStrRev(s, ">", i2)
        If i1 > 0 Then
            'ici on peut lire 1 info
            Debug.Print "Option : " & Mid$(s, i1 + 1, i2 - i1 - 1)
        End If
        i2 = InStr(i2 + 1, s, "</option>")
    Wend
     
    End Sub
    On obtient dans la fenêtre d'exécution
    Chaîne complète :
    <option value="45">Php</option>
    <option value="10">Java</option>
    <option value="3">C#</option>
    Option : Php
    Option : Java
    Option : C#
    Cordialement,

    PGZ

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2006
    Messages : 192
    Par défaut
    Citation Envoyé par mercatog Voir le message

    à tester comme ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Test()
    Dim Txt As String
     
    Txt = Sheets("Feuil3").Range("A1").Value
    Debug.Print ListeMots(Txt)
    End Sub
    Merci pour ta réponse, mais est-ce qu'il ya un moyen d'afficher le résutlat dans la colone B par exemple étant donné que mes données sont dans la colonne A? car je dois exporter ses données vers une table sql plus tard.
    Avec le debug.print où je peux voir le résultat exactement? j'ai crée un bouton, et j'ai roulé la macro, mais la fenêtre de debug n'apparait pas, dsl mais je débute dans les macros et j'utilise Excel 2007

  6. #6
    Expert éminent 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
    Par défaut
    Bonsoir
    le Debug.print c'est pour voir le résultat dans la fenêtre d'exécution de l'éditeur vba.
    tu peux essayer ce code sur la feuille active
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Sub Test()
    Dim Txt As String
     
    Txt = Range("A1").Value
    Range("B1").Value = ListeMots(Txt)
    End Sub

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2006
    Messages
    192
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations forums :
    Inscription : Décembre 2006
    Messages : 192
    Par défaut
    J'ai un résultat qui s'affiche et c'est très positif , mais juste une toute petite dernière question, comment je pourrais appliquer le résultat sur les autres cellules ? car seule la colonne B1 est affecté.

    Résultats escomptés dans la colonne B:

    Merci

  8. #8
    Expert éminent 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
    Par défaut
    Essaies comme ceci avec la même fonction
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub Test()
    Dim Tb As Variant
     
    With Sheets("Feuil2")
        Tb = Split(ListeMots(.Range("A1").Value), ",")
        .Range("B1:B" & UBound(Tb) + 1).Value = Application.Transpose(Tb)
    End With
    End Sub
    Sinon, une autre manière:
    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
    Function ListeMots2(Str As String) As Variant
    Dim Res() As String
    Dim i As Integer
     
    Do
        Str = Mid(Str, InStr(Str, ">") + 1)
        If InStr(Str, "<") = 0 Then Exit Do
        If Mid(Str, InStr(Str, "<") + 1, 1) = "/" Then
            i = i + 1
            ReDim Preserve Res(1 To i)
            Res(i) = Left(Str, InStr(Str, "<") - 1)
        End If
    Loop
    ListeMots2 = Res
    End Function
     
    Sub Test2()
    Dim Tb As Variant
     
    With Sheets("Feuil1")
        Tb = ListeMots2(.Range("A1").Value)
        .Range("B1:B" & UBound(Tb)).Value = Application.Transpose(Tb)
    End With
    End Sub

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

Discussions similaires

  1. Supprimer les Carriage Return à l'intérieur des tags
    Par PipoWIL dans le forum XML/XSL et SOAP
    Réponses: 11
    Dernier message: 29/04/2014, 13h59
  2. [RegEx] RegExp - Supprimer tout ce qu'il y a dans des parenthèses
    Par ghostfile dans le forum Langage
    Réponses: 4
    Dernier message: 05/10/2012, 14h55
  3. [XL-2003] Modifications uniquement à l'intérieur des parenthèses
    Par Vadorblanc dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 11/04/2011, 22h31
  4. [XL-2003] Mettre en minuscules à l'intérieur des parenthèses
    Par Vadorblanc dans le forum Macros et VBA Excel
    Réponses: 8
    Dernier message: 04/04/2011, 20h56
  5. Supprimer dans un texte les parties entre parenthèses
    Par didideder dans le forum Général JavaScript
    Réponses: 6
    Dernier message: 08/06/2009, 11h11

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