[EXCEL] suppression de caractères

Résolu
6FoursPlaya83 -  
Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   -
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. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    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
  2. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    Bonjour,
    Au passage, combien de cellules à traiter ... ?
    0
  3. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    Bonjour,
    Je me fais une copie pour étudier cette superbe procédure.
    Merci.
    0
    1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
       
      Bonjour Le Pingou
      Merci! si tu as le temps essaies le code conservant les doublons (je dois partir)
      ce code avait été réalisé à partir de ce tuto:
      https://cafeine.developpez.com/access/tutoriel/regexp/
      0
    2. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
       
      Boujour michel_m,
      C'est avec plaisir que je vais prendre du temps sur mes heures de retraité... !
      Salutations.
      Le Pingou
      0
  4. 6FoursPlaya83
     
    Super merci beaucoup ça marche nickel !!!!
    0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Le Pingou Messages postés 12276 Date d'inscription   Statut Contributeur Dernière intervention   1 478
     
    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