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

1 réponse

1 2
Avatar
Modeste
Bonsour® newsX avec ferveur ;o))) vous nous disiez :
Est il possible de détailler et d'expliquer chaque étape ?


Sub changeNewX()
'----pour chaque cellule de la plage a1:a21
For Each cellule In Range("A1:A21")
'----initialisation compteur nombre de Point-virgule
nbpv = 0
'----variable de travail = variable d'origine
cible = cellule.Value
'---- pour chaque position de caractére en commençant par la fin
For Position = Len(cible) To 1 Step -1
'----si le car à la position courante est un espace alors
If Mid(cible, Position, 1) = " " Then
'----le caractère à la position courante devient ";"
Mid(cible, Position, 1) = ";"
'----incrementation du nbre de point-virgule
nbpv = nbpv + 1
'---- fin du test position courante
End If
'----si le nombre de point-virgule est supérieur à 9 alors on sort de la boucle
If nbpv > 9 Then Exit For
'----on boucle pour la position suivante
Next
'----on affecte la variable de travail à la cellule courante
cellule.Value = cible
'----on fait un echo dans la barre de status
Application.StatusBar = cible
'----on autorise windows à controler les entrees-sortie
'---- c'est une astuce pour creer une mini temporisation
'---- sinon on n'a pas le temps de voir le changement
DoEvents
'----on boucle pour la prochaine cellule
Next
'----c'est fini !!!
End Sub

--
--
@+
;o)))

1 2