suppression de lettre a droite de cellules

miremy

XLDnaute Nouveau
Bonjour à tous
Apres maintes recherches sur différents forums, je n'ai pas trouvé ce que je recherche.
Voilà: Dans une colonne dans chaque cellule je voudrais supprimer les dernières lettres si le mot se termine par
_Ex: (GER, BEL,USA, IRE, (()), () , etc...........)
Ces lettres sont en majuscules.
Ces colonnes peuvent contenir plus de 20 000 cellules
J'ai fais deux macros
_ " Effacement1" Fonctionne à peu près ne m'enlève pas toutes les lettres(Dans ce cas elle oublie les GB, E1,...)
_ "Effacement2" m'enlève toutes les lettres des mots entiers par exemple: " Belle de jour(GER)" devient" le de jour" alors que j'ai besoin d'enlever (GER) seulement.
En plus il me faut garder les doublons.
J'espère avoir été assez clair dans ma demande.
Je suis sous Excel 2000.
Merci d'avance.
Ci-joint Fichier pour une meilleure compréhension

Miremy
 

Pièces jointes

  • trav tcd.xls
    44.5 KB · Affichages: 63
Dernière édition:

Misange

XLDnaute Barbatruc
Re : suppression de lettre a droite de cellules

Bonjour
en C2 :
=GAUCHE(C2;NBCAR(C2)-4)
te supprime les 3 derniers caractères plus l'espace avant.
Si tes 3 lettres à supprimer sont toujours comme ça c'est OK. Il te restera à faire un recherche remplacer pour supprimer aussi les parenthèses qui restent.
 

Staple1600

XLDnaute Barbatruc
Re : suppression de lettre a droite de cellules

Bonjour à tous


Une autre piste (sans macro)
Données/Convertir Délimité Séparateur : (
et le tour est joué en deux clics, trois mouvements (ou vice et versa) ;)

(en espérant qu'il n'y ait pas d'autres ( dans la cellule)

PS: Bien sur on peut laisser tourner l'enregistreur de macros, si vraiment on estime qu'il faille passer par VBA.

EDITION: Bonjour Job75 ;)
 
Dernière édition:

job75

XLDnaute Barbatruc
Re : suppression de lettre a droite de cellules

Bonjour miremy, Misange, Jean-Marie,

Deux solutions possibles, suivant ce que vous voulez faire exactement.

En D1, à tirer vers le bas :

Code:
=SUPPRESPACE(GAUCHE(SUPPRESPACE(SUBSTITUE(SUBSTITUE(C1;"(";);")";));NBCAR(SUPPRESPACE(SUBSTITUE(SUBSTITUE(C1;"(";);")";)))-3*EXACT(DROITE(SUPPRESPACE(SUBSTITUE(SUBSTITUE(C1;"(";);")";));3);MAJUSCULE(DROITE(SUPPRESPACE(SUBSTITUE(SUBSTITUE(C1;"(";);")";));3)))))
En E1, à tirer vers le bas :

Code:
=SUPPRESPACE(GAUCHE(SUPPRESPACE(SUBSTITUE(SUBSTITUE(C1;"(";);")";));NBCAR(SUPPRESPACE(SUBSTITUE(SUBSTITUE(C1;"(";);")";)))-3*EXACT(SUPPRESPACE(DROITE(SUPPRESPACE(SUBSTITUE(SUBSTITUE(C1;"(";);")";));3));MAJUSCULE(DROITE(SUPPRESPACE(SUBSTITUE(SUBSTITUE(C1;"(";);")";));3)))))
Les différences entre les 2 solutions sont mises en évidence par une Mise en forme conditionnelle (MFC).

Fichier joint.

A+
 

Pièces jointes

  • trav tcd(1).xls
    44.5 KB · Affichages: 60

miremy

XLDnaute Nouveau
Re : suppression de lettre a droite de cellules

Je vous remercie de la rapidité de vos réponses.
La solution de job 75 fonctionne .je vais essayer de décortiquer la formule.

Quant à moi J'ai trouvé ce qui n'allait pas dans la macro1
Il suffisait de mettre True à la place de False à la fin de chaque élément

Selection.Replace What:=" GB", Replacement:="", LookAt:=xlWhole, _
SearchOrder:=xlByRows, MatchCase:=False

Encore mille fois merci:D
Miremy
 

job75

XLDnaute Barbatruc
Re : suppression de lettre a droite de cellules

Re,

Une solution VBA :

Code:
Sub SupMaj()
Dim P As Range, tablo, i&, t$, j%
Set P = Range("C1:D" & Cells(Rows.Count, "C").Row)
tablo = P 'matrice, plus rapide
For i = 1 To UBound(tablo)
  t = tablo(i, 1)
  For j = Len(t) To 1 Step -1
    If Mid(t, j, 1) <> UCase(Mid(t, j, 1)) Then Exit For
  Next
  tablo(i, 2) = Left(t, j)
Next
P = tablo
End Sub
La macro supprime toutes les majuscules à droite jusqu'à la 1ère minuscule.

Fichier joint.

A+
 

Pièces jointes

  • trav tcd VBA(1).xls
    49 KB · Affichages: 62

Discussions similaires