Partage
  • Partager sur Facebook
  • Partager sur Twitter

[VBA] suppression de termes

    21 juin 2011 à 9:39:17

    Bonjour,

    Je souhaite créer une macro supprimant certains termes dans des cellules par exemple: avoir tous les noms d'entreprises sans leurs statuts.
    Exemple:
    "protect 2000 SA" deviendra Protect 2000.
    Mon problème n'est pas de supprimer le terme "SA" qui est simple MAIS trop simple... dans le cas de la société "salopette & cie" après ma maco le nom de la société deviendra "lopette & cie". Ce qui n'est pas le but recherché.
    Donc j'ai identifié 3 cas possible pour le SA que je peux supprimer:
    le underscore correspond à un espace:
    -"SA_"
    -"_SA"
    -"_SA_"

    Avec ses trois cas la je suis sur de supprimer le bon SA à condition, et c'est là que j'ai besoin de vous, que les deux premiers cas fonctionnent respectivement en début et fin de cellule.

    Je voudrais que le premier cas "SA_" ne soit comparable qu'en début de cellule sinon dans la cas de l'entreprise "Visa et cie" se transformera en "Vis et cie".

    Merci d'avance pour votre aide.

    • Partager sur Facebook
    • Partager sur Twitter
      21 juin 2011 à 11:26:57

      Si les regex sont dispo en VBA, tente le pattern "\bSA\b" . \b, dans l'implémentation .NET, si je me goure pas, c'est la détection des "contours de mots" (word boundaries)...Il te permettra de faire des concordances avec des début/fin de mot (dépendant de s'il est placé avant ou après ton mot) avec un filtrage spécial pour le début/fin de chaine de caractère. Il est complètement différent de \s? qui va seulement rechercher s'il y a ou non un espace (et qui concorderait aussi avec "Salopette" donc)

      Edit : Je pense que ça pourrait fonctionner : Petit article :

      Citation


      To match a boundary between a word character (\w) and a non-word character (\W) use \b. The match will occur at the first or last character in words separated by any nonalphanumeric characters. For example, the following Regular Expression matches one or more word characters followed by a word boundary followed by a hyphen (-) followed by another word boundary followed by one or more word characters.

      Text: Anna Jones and John William-Scott went to lunch- with an anaconda
      Regex: \w+\b-\b\w+
      Options: IgnoreCase
      Matches: Anna Jones and John William-Scott went to lunch- with an anaconda
      William-Scott

      Use \B to specify that a match must not occur on a \b boundary.

      • Partager sur Facebook
      • Partager sur Twitter
        21 juin 2011 à 21:45:40

        Salut,

        Ce n'est pas la technologie que je maîtrise le plus mais... Il s'agit bien de macros Excel là, non ? Auquel cas, je transfèrerai dans le forum adéquat ^^
        • Partager sur Facebook
        • Partager sur Twitter
        Directeur technique, créateur de jeux HTML5 et fan de JavaScript | La suite de OnHack est sur les rails !

        [VBA] suppression de termes

        × Après avoir cliqué sur "Répondre" vous serez invité à vous connecter pour que votre message soit publié.
        × Attention, ce sujet est très ancien. Le déterrer n'est pas forcément approprié. Nous te conseillons de créer un nouveau sujet pour poser ta question.
        • Editeur
        • Markdown