VBA remplace caractères par formule

Résolu
caro -  
 caroouline -

Bonjour,

J'ai un petit souci sur ma VBA.

J'ai des cellules qui contiennent trop de mot. Je voudrais donc modifier la cellule avec une partie de celle-là. (propager dans toutes les cellules de la colonne).

J'ai par exemple une cellule avec VIR MARCHAND X MARCHAND VIR, je voudrais qu'elle se modifie en MARCHAND VIR avec une formule pour que chaque nom différent de MARCHAND.

J'ai le même souci avec une cellule indiquant VIREMENT POUR MARCHAND COMPTE  1233123 MARCHAND VIR, j'aimerais transformer en MARCHAND VIR

Actuellement j'ulise une fonction qui marche avec le texte, mais n'arrive pas à intégrer une formule :

Selection.Replace What:="*VIR MARCHAND*", Replacement:="VIR MARCHAND", LookAt:= _
        xlPart, SearchOrder:=xlByRows, MatchCase:=False, SearchFormat:=False, _
        ReplaceFormat:=False

Avec ce VBA ça m'oblige à créer une ligne par marchand. Ce qui n'est pas très rapide.

Pour le premier prendre à partir du X espace et l'autre entre VIREMENT POUR ET COMPTE en rajouter espace VIR après, simplifirais les choses.

Avez-vous une idée,

Merci beaucoup,

A voir également:

3 réponses

yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 584
 

bonjour,

Dans ta description, tu expliques que tu veux obtenir "MARCHAND VIR".  Si je lis bien ta formule, cela crée "VIR MARCHAND".

Je me trompes?

Tes exemples et ta description ne sont pas clairs.  Donne des exemples plus complets, avec plusieurs situations.

Que veux-tu dire par " Ce qui n'est pas très rapide."?  Tu as une liste des marchands, que tu voudrais utiliser dans une boucle?

0
caro
 

par exemple jai plusieurs cellule suivantes :

VIR MARCHAND X MARCHAND VIR

VIR VENDEUR X VENDEUR VIR

VIR IMPORT X IMPORT VIR

VIR EXPORT X EXPORT VIR

VIREMENT POUR MARCHAND COMPTE  1233123 MARCHAND VIR

VIREMENT POUR VENDEUR COMPTE  1233123 VENDEUR VIR

VIREMENT POUR EXPORT COMPTE  1233123 EXPORT VIR

VIREMENT POUR IMPORT COMPTE  1233123 IMPORT VIR

Je veux REMPLACER ces cellules par celle ci-dessous :

MARCHAND VIR

VENDEUR VIR

IMPORT VIR

EXPORT VIR

MARCHAND VIR

VENDEUR VIR

EXPORT VIR

IMPORT VIR

Le problème, c'est que c'est une longue liste, du coup, je voudrais utiliser le principe de remplacement en ulisant une formule pour prendre seulement les caractères après le X ou la série de chiffre.

0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584
 

Tout ces exemples commencent et se terminent par VIR.

Pourrait-on faire ainsi:

  • pour chaque cellule de la sélection, 
  • si les trois premiers caractères sont "VIR" et les quatre derniers sont " VIR",
  • alors on ne garde que les deux derniers mots
0
caroouline Messages postés 35 Date d'inscription   Statut Membre Dernière intervention   > yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention  
 

Bonjour,

oui en macro, ce serait parfait.

Tu as une idée ?

Merci

0
yg_be Messages postés 23541 Date d'inscription   Statut Contributeur Dernière intervention   1 584 > caroouline Messages postés 35 Date d'inscription   Statut Membre Dernière intervention  
 

une idée:

Dim rg As Range, cl As Range, n As Integer
Set rg = Selection
For Each cl In rg
    If Left(cl, 3) = "VIR" And Right(cl, 4) = " VIR" Then
        n = InStrRev(Left(cl, Len(cl) - 4), " ")
        cl = Right(cl, Len(cl) - n)
    End If
Next cl
1
caroouline
 

Bonjour yg-be,

Je te remercie, ça marche parfaitement. C'est magique!!!

Je te souhaite une bonne journée.

0