VBA remplace caractères par formule

Résolu
caro - 14 févr. 2024 à 11:31
 caroouline - 15 mars 2024 à 08:41

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 23336 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 novembre 2024 Ambassadeur 1 551
14 févr. 2024 à 13:24

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

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 23336 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 novembre 2024 1 551
15 févr. 2024 à 10:34

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 mardi 5 mai 2020 Statut Membre Dernière intervention 15 février 2024 > yg_be Messages postés 23336 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 novembre 2024
15 févr. 2024 à 15:24

Bonjour,

oui en macro, ce serait parfait.

Tu as une idée ?

Merci

0
yg_be Messages postés 23336 Date d'inscription lundi 9 juin 2008 Statut Contributeur Dernière intervention 18 novembre 2024 1 551 > caroouline Messages postés 35 Date d'inscription mardi 5 mai 2020 Statut Membre Dernière intervention 15 février 2024
15 févr. 2024 à 15:39

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

Bonjour yg-be,

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

Je te souhaite une bonne journée.

0