Remplacer un caractère par une patie d'une cellule

Bonjour, donc voila mon problème:

j'ai un fichier Excel avec dans la colonne A des donnée sous cette forme:

[ 1 ] Asd fdez

[ 2 ] AAaeeerrttt

et dans la colonne B des noms de personnes séparé par un point-virgule

Flament, F (Flament, F.) [ 1 ] ; Bazin, R (Bazin, R.) [ 2 ] ; Piot, B (Piot, B.) [ 1 ]

ce que je veux c'est de chercher dans la colonne A la ligne ou il y'a [1]..[2].... le copier et le collé a coté du nom qui a le même symbole en ajoutant "¤" a droite.

pour être plus clair la colonne B deviens :

Flament, F (Flament, F.)¤Asd fdez; Bazin, R (Bazin, R.)¤AAaeeerrttt; Piot, B (Piot, B.)¤Asd fdez

vous pouvez m'aider pour le code de la macro svp ?

Merci

Bonjour,

vous pouvez m'aider pour le code de la macro svp ?

Oui, no souci.

Mais, un classeur exemple est bien mieux que deux images.

Peux tu nous faire parvenir un classeur de test?

voila le classeur et merci pour votre réponse.

j'ai mis le résultat voulu dans la feuille 2 que j'ai fait manuellement.

Merci encore

Je pense qu'un erreur s'est glissée ici :

"[ 1 ] pologne

[ 2 ] suisse

[ 1 ] USA

[ 2 ] Chine"

Devrait plutôt être :

"[ 1 ] pologne

[ 2 ] suisse

[ 3 ] USA

[ 4 ] Chine"

N'est-il pas?


Si oui, avec restitution en feuille Feuil2 :

Sub Replace_Datas()
Dim DLig As Long, strDatas(), Lig As Long, Parties() As String, Indic As Integer
Dim Numero As String, Valeur As String
   'Stockage des données en mémoire
   DLig = Range("B" & Rows.Count).End(xlUp).Row
   strDatas = Range("A1:B" & DLig).Value
   'boucle sur toutes les lignes de données
   For Lig = LBound(strDatas, 1) To UBound(strDatas, 1)
      'boucle sur chacune des "sous-lignes" des cellules colonne A
      Parties = Split(strDatas(Lig, 1), Chr(10))
      For Indic = 0 To UBound(Parties)
         'extrait du numéro : [ x ]
         Numero = Split(Parties(Indic), "] ")(0) & "]"
         'extrait de la valeur : exemple : ¤France
         Valeur = "¤" & Split(Parties(Indic), "] ")(1)
         'remplacement dans la variable tableau 2ème colonne
         strDatas(Lig, 2) = Replace(strDatas(Lig, 2), Numero, Valeur)
      Next Indic
   Next Lig
   'restitution des données en feuil2
   Sheets("Feuil2").Range("A1").Resize(UBound(strDatas, 1), 2) = strDatas
End Sub

oui oui désolé !

Merci beaucoup pour la réponse mais quand j'execute la macro il me sort un message d'erreur " l'indice n'appartient pas a la sélection"

comment je peux résoudre ça ?

Merci

comment je peux résoudre ça ?

Je n'ai pas imaginé que tu puisses avoir une "sous-ligne" vide dans la colonne A.

Pourtant il y en a bien une dans le fichier test, je l'avais supprimée...

Essaye ceci :

    Sub Replace_Datas()
    Dim DLig As Long, strDatas(), Lig As Long, Parties() As String, Indic As Integer
    Dim Numero As String, Valeur As String
       'Stockage des données en mémoire
      DLig = Range("B" & Rows.Count).End(xlUp).Row
       strDatas = Range("A1:B" & DLig).Value
       'boucle sur toutes les lignes de données
      For Lig = LBound(strDatas, 1) To UBound(strDatas, 1)
          'boucle sur chacune des "sous-lignes" des cellules colonne A
         Parties = Split(strDatas(Lig, 1), Chr(10))
          For Indic = 0 To UBound(Parties)
             'extrait du numéro : [ x ]
            If Parties(Indic) <> "" Then
               Numero = Split(Parties(Indic), "] ")(0) & "]"
               'extrait de la valeur : exemple : ¤France
               Valeur = "¤" & Split(Parties(Indic), "] ")(1)
               'remplacement dans la variable tableau 2ème colonne
               strDatas(Lig, 2) = Replace(strDatas(Lig, 2), Numero, Valeur)
            End If
          Next Indic
       Next Lig
       'restitution des données en feuil2
      Sheets("Feuil2").Range("A1").Resize(UBound(strDatas, 1), 2) = strDatas
    End Sub

ça marche !! merci merci beaucoup !!!

Rechercher des sujets similaires à "remplacer caractere patie"