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

  • Initiateur de la discussion Initiateur de la discussion cibleo
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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

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
 
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 🙄
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
1
Affichages
699
Retour