[EXCEL] suppression de caractères

Résolu
Bonjour,

je souhaiterai pouvoir supprimer tout les mots de moins de XXX lettres dans une cellule de texte
Ex: Cellule avant traitement " Salut ça va c'est moi"
Cellule après traitement (si XXX=3) : "Salut c'est moi"

Merci par avance pour votre aide
Cordialement,
greg

5 réponses

  1. Bonjour michel_m,
    Je pense que je commence à comprendre le fonctionnement, c'est super intéressant, alors si on ajoute le caractère (`) apostrophe au motif (Pattern) soit :
    reg.Pattern = "(\b[a-zA-Z0-9çàâäéèêëïîôöùû']{" & seuil & ",})"

    Pour l'exemple " Salut ça va c'est moi"
    on obtiendra " Salut c'est moi"
    et non pas " Salut est moi"
    A une prochaine
    0
    1. Super merci beaucoup ça marche nickel !!!!
      0
      1. Bonjour,
        Je me fais une copie pour étudier cette superbe procédure.
        Merci.
        0
        1. Boujour michel_m,
          C'est avec plaisir que je vais prendre du temps sur mes heures de retraité... !
          Salutations.
          Le Pingou
          0
      2. Contributeur
        bonjour

        fonction personnalisée: ne garde que les mots dans la cellule (texto) de plus de XXX lettres (seuil)
        actuellement, elle supprime les doublons de mots: me dire si on veut les garder

        Option Explicit
         
        Function extraire_mots(texto As String, seuil As Byte)
         'Michel_M mai 2006
            Dim reg As Object
            Dim texte As Object
            Dim mot As Object
            Dim coll As Collection
            Dim cptr As Byte
             
             'instancie
                Set coll = New Collection
                Set reg = CreateObject("vbscript.regexp")
            ' on travaille sur tout le texte
                reg.Global = True
            'définition du modèle : on cherche des mots  d'au moins  N caractères {seuil, infini } avec les accentués
                reg.Pattern = "(\b[a-zA-Z0-9çàâäéèêëïîôöùû]{" & seuil & ",})"
            
            'exécution de la recherche
            Set texte = reg.Execute(texto)
            'collecte les mots  sans doublons
            For Each mot In texte
                On Error Resume Next
                coll.Add mot.Value, mot.Value
                On Error GoTo 0
            Next mot
           'extrait les mots de longueur >= seuil
           For cptr = 1 To coll.Count
                extraire_mots = extraire_mots & coll(cptr) & "  "
           Next
           Set reg = Nothing
           Set coll = Nothing
        End Function
        
        1
        1. Bonjour,
          Au passage, combien de cellules à traiter ... ?
          0