[EXCEL] suppression de caractères

Résolu/Fermé
6FoursPlaya83 - Modifié par 6FoursPlaya83 le 21/06/2012 à 17:31
Le Pingou Messages postés 12042 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 24 avril 2024 - 22 juin 2012 à 18:01
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
A voir également:

5 réponses

michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
21 juin 2012 à 18:33
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
Le Pingou Messages postés 12042 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 24 avril 2024 1 426
21 juin 2012 à 18:06
Bonjour,
Au passage, combien de cellules à traiter ... ?
0
Le Pingou Messages postés 12042 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 24 avril 2024 1 426
21 juin 2012 à 21:48
Bonjour,
Je me fais une copie pour étudier cette superbe procédure.
Merci.
0
michel_m Messages postés 16603 Date d'inscription lundi 12 septembre 2005 Statut Contributeur Dernière intervention 16 décembre 2023 3 303
22 juin 2012 à 08:47
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
Le Pingou Messages postés 12042 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 24 avril 2024 1 426
22 juin 2012 à 14:38
Boujour michel_m,
C'est avec plaisir que je vais prendre du temps sur mes heures de retraité... !
Salutations.
Le Pingou
0
6FoursPlaya83
22 juin 2012 à 09:33
Super merci beaucoup ça marche nickel !!!!
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Le Pingou Messages postés 12042 Date d'inscription mercredi 11 août 2004 Statut Contributeur Dernière intervention 24 avril 2024 1 426
22 juin 2012 à 18:01
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