[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,
    Au passage, combien de cellules à traiter ... ?
    0
    1. 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,
        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. Super merci beaucoup ça marche nickel !!!!
        0
        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