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,

3 réponses

  1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   Ambassadeur 1 588
     

    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
  2. 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
    1. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588
       

      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
      1. caroouline Messages postés 37 Statut Membre > yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention  
         

        Bonjour,

        oui en macro, ce serait parfait.

        Tu as une idée ?

        Merci

        0
      2. yg_be Messages postés 23437 Date d'inscription   Statut Contributeur Dernière intervention   1 588 > caroouline Messages postés 37 Statut Membre
         

        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
  3. caroouline
     

    Bonjour yg-be,

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

    Je te souhaite une bonne journée.

    0