Vba : rempacer les virgules d'une chaine par 1 tiret préfixé d'un espace

cibleo

XLDnaute Impliqué
Bonsoir le forum,

A la 1ère itération, temp renvoie "banane, pomme, pamplemousse, citron"

J'aimerais remplacer toutes les virgules par 1 tiret préfixé par un espace et obtenir
la chaine suivante "banane - pomme - pamplemousse - citron" renvoyée dans la variable Mavar.

Dans le code, j'ai un souci avec cette instruction :
Code:
If p Then Mid(temp, i, 1) = Mid(" -", p, 1)
Mavar renvoie "banane pomme pamplemousse citron" :(
VB:
Sub Remplace()
Dim i As Long, p As Long, temp As String, Mavar As String, Cel As Range, Plg As Range
  Set Plg = Range("A1:A15")
    For Each Cel In Plg
      temp = Cel.Value
      For i = 1 To Len(temp)
        p = InStr(",", Mid(temp, i, 1))
        If p Then Mid(temp, i, 1) = Mid("-", p, 1)
      Next
     Mavar = temp
    Next
End Sub
Si je remplace par cette instruction :
Code:
If p Then Mid(temp, i, 1) = Mid("-", p, 1)
Mavar renvoie "banane- pomme- pamplemousse- citron" mais je n'ai pas l'espace avant le tiret.
Je pense m'y prendre vraiment trés mal, pouvez-vous m'éclairer ?
Pour info, je ne souhaite pas effectuer de remplacement dans la colonn A, je souhaite renvoyer la chaine dans une variable de type string

Cibleo
 

Pièces jointes

  • Remplacer.xls
    24 KB · Affichages: 35
  • Remplacer.xls
    24 KB · Affichages: 40
  • Remplacer.xls
    24 KB · Affichages: 44

Yaloo

XLDnaute Barbatruc
Re : Vba : rempacer les virgules d'une chaine par 1 tiret préfixé d'un espace

Bonsoir cibleo,

Pourquoi pas tout simplement ça :

VB:
Set Plg = Range("A1:A15")
    For Each Cel In Plg
      Cel.Offset(, 1) = Replace(Cel, ", ", " - ")
    Next

A+

Martial
 

cibleo

XLDnaute Impliqué
Re : Vba : rempacer les virgules d'une chaine par 1 tiret préfixé d'un espace

Bonsoir yaloo,

Je crois que je vais aller me coucher :rolleyes:
VB:
Sub Remplace()
Dim temp As String, Cel As Range, Plg As Range
Set Plg = Range("A1:A15")
  For Each Cel In Plg
    temp = Replace(Cel, ", ", " - ")
  Next
End Sub
Merci à toi
cibleo
 

Statistiques des forums

Discussions
312 322
Messages
2 087 288
Membres
103 508
dernier inscrit
max5554