Espace par Point Virgule

Le
newsX
Bonjour,

Dans une cellule j'ai les chaines de caractère suivantes :
Club Pts J G N P F Bp Bc Pé Dif
et
Lens 2 60 26 9 8 9 0 30 35 0 -5

Je souhaiterais remplacer les 10 espaces en partant de la droite par 10
points virgule (ou autre symbole de séparateur).

Dans un premier temps j'ai pensé que je pouvais m'en sortir avec une macro
en mode enregistrement et faire les manipulations suivantes :
ActiveCell.FormulaR1C1 puis avec CTRL SHIFT FLECHE remplacer chacun des 10
espaces par Point Virgule

j'ai obtenu comme résultat :
Club;Pts;J;G;N;P;F;Bp;Bc;Pé;Dif
Ce qui en soit est bon pour cette chaine de caractère mais en aucun cas pour
la suivante.
Au total je devrais avoir à répéter cette macro sur 21 chaines de caractère
au maximum.


Si vous avez une solution à me suggérer
Merci

Xavier
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses Page 1 / 2
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
fetnat
Le #4393081
Bonjour,

Peut-être avec cette fonction trouvée dans un post:

Voici une fonction VBA qui effectue un
remplacement de caractère: ( par exemple : =StrReplace(A25; "!"; "")
================================================ Function StrReplace(cible, anc, nouv)
z = 1
travail = cible
StrReplace = ""
While Len(travail) > 0
zz = InStr(z, travail, anc)
If (zz = 0) Then GoTo fin
StrReplace = StrReplace & Left(travail, zz - 1) & nouv
travail = Right(travail, Len(travail) - zz - Len(anc) + 1)
Wend
fin: StrReplace = StrReplace & travail
End Function
============================================

Fetnat


Bonjour,

Dans une cellule j'ai les chaines de caractère suivantes :
Club Pts J G N P F Bp Bc Pé Dif
et
Lens 2 60 26 9 8 9 0 30 35 0 -5

Je souhaiterais remplacer les 10 espaces en partant de la droite par 10
points virgule (ou autre symbole de séparateur).

Dans un premier temps j'ai pensé que je pouvais m'en sortir avec une macro
en mode enregistrement et faire les manipulations suivantes :
ActiveCell.FormulaR1C1 puis avec CTRL SHIFT FLECHE remplacer chacun des 10
espaces par Point Virgule

j'ai obtenu comme résultat :
Club;Pts;J;G;N;P;F;Bp;Bc;Pé;Dif
Ce qui en soit est bon pour cette chaine de caractère mais en aucun cas pour
la suivante.
Au total je devrais avoir à répéter cette macro sur 21 chaines de caractère
au maximum.


Si vous avez une solution à me suggérer
Merci

Xavier




Modeste
Le #4393071
Bonsour® newsX avec ferveur ;o))) vous nous disiez :

Bonjour,

Dans une cellule j'ai les chaines de caractère suivantes :
Club Pts J G N P F Bp Bc Pé Dif
et
Lens 2 60 26 9 8 9 0 30 35 0 -5

Je souhaiterais remplacer les 10 espaces en partant de la droite par 10
points virgule (ou autre symbole de séparateur).



par formule
=SUBSTITUE(A1;" ";CAR(59))

par VBA
Sub changeNewX()
For Each cellule In Range("A1:A21")
cellule.Value = Application.Substitute(cellule, " ", Chr(59))
Next
End Sub

--
--
@+
;o)))

Daniel
Le #4393061
Bonjour.
Je n'ai pas trop compris ton problème... Si tu sélectionnes la plage et que
tu fais un "remplacer" " " par ";" ?
Cordialement.
Daniel
"newsX" evkpfd$5o7$
Bonjour,

Dans une cellule j'ai les chaines de caractère suivantes :
Club Pts J G N P F Bp Bc Pé Dif
et
Lens 2 60 26 9 8 9 0 30 35 0 -5

Je souhaiterais remplacer les 10 espaces en partant de la droite par 10
points virgule (ou autre symbole de séparateur).

Dans un premier temps j'ai pensé que je pouvais m'en sortir avec une macro
en mode enregistrement et faire les manipulations suivantes :
ActiveCell.FormulaR1C1 puis avec CTRL SHIFT FLECHE remplacer chacun des 10
espaces par Point Virgule

j'ai obtenu comme résultat :
Club;Pts;J;G;N;P;F;Bp;Bc;Pé;Dif
Ce qui en soit est bon pour cette chaine de caractère mais en aucun cas
pour la suivante.
Au total je devrais avoir à répéter cette macro sur 21 chaines de
caractère au maximum.


Si vous avez une solution à me suggérer
Merci

Xavier



Le #4393011
Bonjour "Daniel"
Bonjour.
Je n'ai pas trop compris ton problème... Si tu sélectionnes la plage et que tu fais un "remplacer" " " par ";" ?
Cordialement.
Daniel
"newsX"

Quand le nom du club contient des espaces ils sont également remplacés, ce qui n'est pas l'effet souhaité
Lens 2 --> Lens;2

--
Ricky [MVP] Visitez les FAQ...
http://www.faqoe.com
http://www.excelabo.net
http://faqword.free.fr

newsX
Le #4392991
Mon problème est que sur la 1ère chaine j'ai 10 espaces
Club Pts J G N P F Bp Bc Pé Dif = 10 espaces
et 11 dans la 2sd
Lens 2 60 26 9 8 9 0 30 35 0 -5 = 11 espaces
Seul les 10 espaces en partant de la droite doivent avoir un séparateur
("Lens 2" étant dans ce cas le contenu d'une cellule)
et j'ai des cas où ...
Saint Etienne 2 57 27 7 10 10 0 41 37 0 4 = 12 espaces
Seul les 10 espaces en partant de la droite doivent avoir un séparateur
("Saint Etienne 2" étant dans ce cas le contenu d'une cellule)

La finalité étant de reconstituer un classement en mode de 11 colonnes.

voici un exemple complet :

Club Pts J G N P F Bp Bc Pé Dif = 10 espaces
Rennes 2 76 27 13 10 4 0 48 28 0 20 = 11 espaces
Villemomble 74 27 13 8 6 0 32 24 0 8 = 10 espaces
Boisguillaume 71 27 11 11 5 0 29 16 0 13 = 10 espaces
Auxerre 2 70 27 12 7 8 0 37 28 0 9 = 11 espaces
Pacy S/e 67 27 10 10 7 0 27 22 0 5 = 11 espaces
Moissy Cramay 67 27 10 10 7 0 31 22 0 9 = 11 espaces
Guingamp 2 66 27 10 9 8 0 30 31 0 -1 = 11 espaces
Rouen 66 27 10 9 8 0 24 23 0 1 = 10 espaces
Ste Genevieve 65 27 9 11 7 0 33 28 0 5 = 11 espaces
Poissy 63 27 9 9 9 0 36 38 0 -2 = 10 espaces
Red Star Fc93 61 26 7 14 5 0 29 22 0 7 = 12 espaces
Quevilly 60 27 8 9 10 0 37 36 0 1 = 10 espaces
Plabennec 58 27 7 10 10 0 25 31 0 -6 = 10 espaces
Pontivy 56 27 8 5 14 0 26 45 0 -19 = 10 espaces
Vitre 55 27 6 10 11 0 27 32 0 -5 = 10 espaces
Dieppe 53 27 6 8 13 0 22 31 0 -9 = 10 espaces
Paris Sg 2 52 26 5 11 10 0 25 37 0 -12 = 12 espaces
Concarneau 45 27 3 9 15 0 20 44 0 -24 = 10 espaces

Xavier


"Daniel" %
Bonjour.
Je n'ai pas trop compris ton problème... Si tu sélectionnes la plage et
que tu fais un "remplacer" " " par ";" ?
Cordialement.
Daniel
"newsX" evkpfd$5o7$
Bonjour,

Dans une cellule j'ai les chaines de caractère suivantes :
Club Pts J G N P F Bp Bc Pé Dif
et
Lens 2 60 26 9 8 9 0 30 35 0 -5

Je souhaiterais remplacer les 10 espaces en partant de la droite par 10
points virgule (ou autre symbole de séparateur).

Dans un premier temps j'ai pensé que je pouvais m'en sortir avec une
macro en mode enregistrement et faire les manipulations suivantes :
ActiveCell.FormulaR1C1 puis avec CTRL SHIFT FLECHE remplacer chacun des
10 espaces par Point Virgule

j'ai obtenu comme résultat :
Club;Pts;J;G;N;P;F;Bp;Bc;Pé;Dif
Ce qui en soit est bon pour cette chaine de caractère mais en aucun cas
pour la suivante.
Au total je devrais avoir à répéter cette macro sur 21 chaines de
caractère au maximum.


Si vous avez une solution à me suggérer
Merci

Xavier







newsX
Le #4392951
Merci,

j'ai pas tout compris mais je vais néanmoins essayer.
Pourrais je répéter la fonction sur plusieurs lignes ?

Xavier

"fetnat" %
Bonjour,

Peut-être avec cette fonction trouvée dans un post:

Voici une fonction VBA qui effectue un
remplacement de caractère: ( par exemple : =StrReplace(A25; "!"; "")
================================================ > Function StrReplace(cible, anc, nouv)
z = 1
travail = cible
StrReplace = ""
While Len(travail) > 0
zz = InStr(z, travail, anc)
If (zz = 0) Then GoTo fin
StrReplace = StrReplace & Left(travail, zz - 1) & nouv
travail = Right(travail, Len(travail) - zz - Len(anc) + 1)
Wend
fin: StrReplace = StrReplace & travail
End Function
============================================ >

Fetnat


Bonjour,

Dans une cellule j'ai les chaines de caractère suivantes :
Club Pts J G N P F Bp Bc Pé Dif
et
Lens 2 60 26 9 8 9 0 30 35 0 -5

Je souhaiterais remplacer les 10 espaces en partant de la droite par 10
points virgule (ou autre symbole de séparateur).

Dans un premier temps j'ai pensé que je pouvais m'en sortir avec une
macro en mode enregistrement et faire les manipulations suivantes :
ActiveCell.FormulaR1C1 puis avec CTRL SHIFT FLECHE remplacer chacun des
10 espaces par Point Virgule

j'ai obtenu comme résultat :
Club;Pts;J;G;N;P;F;Bp;Bc;Pé;Dif
Ce qui en soit est bon pour cette chaine de caractère mais en aucun cas
pour la suivante.
Au total je devrais avoir à répéter cette macro sur 21 chaines de
caractère au maximum.


Si vous avez une solution à me suggérer
Merci

Xavier




newsX
Le #4392941
Merci

la formule fonction très bien mais j'obtiens partiellement le résultat
souhaité.
explication :
Club Pts J G N P F Bp Bc Pé Dif
devient
Club;Pts;J;G;N;P;F;Bp;Bc;Pé;Dif = OK

Lens 2 60 26 9 8 9 0 30 35 0 -5
devient
Lens;2;60;26;9;8;9;0;30;35;0;-5 = KO
le résultat souhaité est
Lens 2;60;26;9;8;9;0;30;35;0;-5 (Lens 2 au lieu de Lens;2)
Je souhaite remplacer seulement les 10er espaces en partant de la droite par
10 séparateurs et pas un de plus


Xavier


"Modeste"
Bonsour® newsX avec ferveur ;o))) vous nous disiez :

Bonjour,

Dans une cellule j'ai les chaines de caractère suivantes :
Club Pts J G N P F Bp Bc Pé Dif
et
Lens 2 60 26 9 8 9 0 30 35 0 -5

Je souhaiterais remplacer les 10 espaces en partant de la droite par 10
points virgule (ou autre symbole de séparateur).



par formule
=SUBSTITUE(A1;" ";CAR(59))

par VBA
Sub changeNewX()
For Each cellule In Range("A1:A21")
cellule.Value = Application.Substitute(cellule, " ", Chr(59))
Next
End Sub

--
--
@+
;o)))





Modeste
Le #4392901
Bonsour® newsX avec ferveur ;o))) vous nous disiez :

Je souhaite remplacer seulement les 10er espaces en partant de la droite par
10 séparateurs et pas un de plus


attention !!!!!
il ne doit pas y avoir 2 espaces contigüs, ni d'espace final
!!!!!!

Sub changeNewX()
For Each cellule In Range("A1:A21")
nbpv = 0
cible = cellule.Value
For Position = Len(cible) To 1 Step -1
If Mid(cible, Position, 1) = " " Then
Mid(cible, Position, 1) = ";"
nbpv = nbpv + 1
End If
If nbpv > 9 Then Exit For
Next
cellule.Value = cible
Application.StatusBar = cible
DoEvents
Next
End Sub

--
--
@+
;o)))

newsX
Le #4392851
Je possède un handicap certain du fait que je n'y connais vraiment rien au
VBA.
Est il possible de détailler et d'expliquer chaque étape ?

Xavier

"Modeste"
Bonsour® newsX avec ferveur ;o))) vous nous disiez :

Je souhaite remplacer seulement les 10er espaces en partant de la droite
par
10 séparateurs et pas un de plus


attention !!!!!
il ne doit pas y avoir 2 espaces contigüs, ni d'espace final
!!!!!!

Sub changeNewX()
For Each cellule In Range("A1:A21")
nbpv = 0
cible = cellule.Value
For Position = Len(cible) To 1 Step -1
If Mid(cible, Position, 1) = " " Then
Mid(cible, Position, 1) = ";"
nbpv = nbpv + 1
End If
If nbpv > 9 Then Exit For
Next
cellule.Value = cible
Application.StatusBar = cible
DoEvents
Next
End Sub

--
--
@+
;o)))





hasco
Le #4392201
Une autre petite fonction qui semble remplir son devoir :

function ReplaceEspaceParPointVirgule(chaine As String) as string
Dim Dep As Integer, i As Integer
Dim tbl
Dim tmp As String

tbl = Split(chaine, " ")

' Il y a moins de dix espace dans la chaine: on sort
if ubound(tbl)<10 then exit function

'Eclater la chaine en tableau
Dep = UBound(tbl) - 10 + 1

' si le tableau contient plus de 10 espace suivante ira de 0 à Dep -1 pour
' reconstituer la première partie de chaine ex (Auxerre 2)

For i = 0 To Dep - 1
tmp = tmp & tbl(i) & " "
Next i
tmp = Trim(tmp) & ";"

' la boucle suivante parcourera les 10 valeurs restantes du tableaux
For i = Dep To UBound(tbl)
tmp = tmp & tbl(i) & ";"
Next i

' enlève le point-virgule final
tmp = Left(tmp, Len(tmp) - 1)

'renvoi la nouvelle valeur chaine
ReplaceEspaceParPointVirgule=tmp
End Sub


Bonjour,

Dans une cellule j'ai les chaines de caractère suivantes :
Club Pts J G N P F Bp Bc Pé Dif
et
Lens 2 60 26 9 8 9 0 30 35 0 -5

Je souhaiterais remplacer les 10 espaces en partant de la droite par 10
points virgule (ou autre symbole de séparateur).

Dans un premier temps j'ai pensé que je pouvais m'en sortir avec une macro
en mode enregistrement et faire les manipulations suivantes :
ActiveCell.FormulaR1C1 puis avec CTRL SHIFT FLECHE remplacer chacun des 10
espaces par Point Virgule

j'ai obtenu comme résultat :
Club;Pts;J;G;N;P;F;Bp;Bc;Pé;Dif
Ce qui en soit est bon pour cette chaine de caractère mais en aucun cas pour
la suivante.
Au total je devrais avoir à répéter cette macro sur 21 chaines de caractère
au maximum.


Si vous avez une solution à me suggérer
Merci

Xavier





Publicité
Poster une réponse
Anonyme