Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Espace par Point Virgule

11 réponses
Avatar
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

10 réponses

1 2
Avatar
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




Avatar
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)))

Avatar
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" a écrit dans le message de news:
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



Avatar
Bonjour "Daniel" wrote in message news:#
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" a écrit dans le message de news: evkpfd$5o7$


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

Avatar
newsX
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" a écrit dans le message de news:
%
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" a écrit dans le message de news:
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







Avatar
newsX
Merci,

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

Xavier

"fetnat" a écrit dans le message de news:
%
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




Avatar
newsX
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" a écrit dans le message de news:

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)))





Avatar
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)))

Avatar
newsX
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" a écrit dans le message de news:

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)))





Avatar
hasco
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





1 2