Supprimer mot en colonne C si présent en B

tagatao Messages postés 21 Statut Membre -  
ccm81 Messages postés 11033 Statut Membre -
Bonjour à tous,

Je souhaite faire un nettoyage d'une base excel de 1500 lignes à peu près....

Alors voilà, je ovus explique mon souci :

Je travaille sur 2 colonnes :

B C
BERGSON (RUE HENRI BERGSON)
BERLIOZ (RUE HECTOR BERLIOZ)
BERRY (RUE DU BERRY)
BERTHELOT (IMPASSE MARCELLIN BERTHELOT)

B fait donc apparaitre le dernier mot de C.

Mon but est donc d'enlever ce dernier mot de C de sorte à arriver à celà :

B C
BERGSON (RUE HENRI )
BERLIOZ (RUE HECTOR )
BERRY (RUE DU )
BERTHELOT (IMPASSE MARCELLIN )

J'ai tenté 2 pistes :
- enlever en C tout mot se situant avant la parenthèse ), avec la fonction rechercher, mais ca marche pas
-faire une rechercheV entre B et C, mais là non plus je m'en sors pas....

Auriez vous une idée pour me faire avancer ?

Merci à vous !

3 réponses

  1. Vaucluse Messages postés 27336 Date d'inscription   Statut Contributeur Dernière intervention   6 453
     
    Bonjour
    avec cette formule peut être pour créer une colonne D, sur ligne D2:

    =GAUCHE(B2;NBCAR(B2)-NBCAR(A2)-2))&")"

    passer à -1 plutôt que -2 si vous voulez un blanc avant la dernière parenthèse

    Vous pouvez ensuite copier cette colonne et faire un collage spécial valeur sur la colonne B et enfin supprimer les formules.
    crdlmnt
    --
    Demandons nous si nous ne sommes pas seuls à comprendre ce que l'on explique?
    2
  2. tagatao Messages postés 21 Statut Membre
     
    Super, t'es un champion, pas con l'idée de soustraire le Nb de caractère de chaque cellule, ca marche pour tous les cas.....

    Yeepee
    0
  3. ccm81 Messages postés 11033 Statut Membre 2 434
     
    bonjour à tous les deux

    ou une solution avec macro (alt-F11 pour acceder à l'éditeur puis coller le code)

    Option Explicit 
    
    Sub supprime() 
    Const lideb = 1 
    Const co1 = "B" 
    Const co2 = "C" 
    Dim li As Long, lifin As Long 
    Dim mot1 As String, mot2 As String 
    lifin = Range(co1 & 65536).End(xlUp).Row 
    For li = lideb To lifin 
      mot1 = Range(co1 & lideb + li - 1).Value 
      mot2 = Range(co2 & lideb + li - 1).Value 
      mot2 = Replace(mot2, mot1, "") 
      Range(co2 & lideb + li - 1).Value = mot2 
    Next li 
    End Sub

    bonne suite
    0