Microsoft 365 ajout de caractères dans une chaine

Usine à gaz

XLDnaute Barbatruc
Supporter XLD
Bonjour à toutes et à tous,

J'ai besoin d'insérer des caractères à l'intérieur du contenu d'une cellule.

Ne trouvant pas le bon codage, je me tourne une nouvelle fois vers le Forum.
J'ai fait des essais et recherches sur le net et dans mes forums préférés :)

J'ai trouvé ce code qui fonctionne (presque bien) :
VB:
Sub Test()
Dim Var As String, VarModifié As String
Dim L As Byte, i As Byte
    Var = ActiveCell.Value
    L = Len(Var)
    For i = 1 To L - 2 Step 2
        VarModifié = VarModifié & Mid(Var, i, 2) & ":"
    Next
    ActiveCell = VarModifié & Right(Var, 2)
End Sub

Fonctionnement du code :
1 clic (sélection) sur la cellule pour ajout de caractères
2 clic sur le bouton

Dans l'exemple du fichier joint, je teste sur l'ajout d'un caractère tout les 2 caractères de la chaîne
Mon souci :
l'avant dernier caractère est doublé si caractères de la chaîne en nombre impair.

Auriez-vous la solution ? :)
Fichier test joint,
Avec mes remerciements,
Je vous souhaite une belle journée,
Amicalement,
lionel,
 

Pièces jointes

  • Ajout_caracteres.xlsm
    18.6 KB · Affichages: 5

patricktoulon

XLDnaute Barbatruc
re
attend je t'en donne une sans boucle un peu tordu comme je les aimes :):p

VB:
Sub test2()
Dim Var$, X$, I&
    Var = ActiveCell.Value
    Var = Replace(Trim(StrReverse(Format(StrReverse(Var), Application.Rept(" @@", 30)))), " ", ":")
ActiveCell = Var
End Sub

la tu en a pour un moment :p:p:p:p:p:p
Je décortique pour tenter de comprendre.

pour la première il faut comprendre comment vba borne avec un step dans une boucle c'est pas plus compliqué

pour la 2d ci dessus c'est juste pour te donner mal a la tète :p:p:p
 

patricktoulon

XLDnaute Barbatruc
bah le probleme c'est que pour chercher il faut comprendre comment fonctionne la fonction format

test ca ca va t'aider a comprendre
VB:
Sub testz()
chaine = "ABCDEFGHI"
MsgBox Format(chaine, " @@ @@ @@ @@ @@ @@ @@ @@") 'FORMATAGE a l'endroit
MsgBox Format(StrReverse(chaine), " @@ @@ @@ @@ @@ @@ @@ @@") 'FORMATAGE a l'envers
MsgBox StrReverse(Format(StrReverse(chaine), " @@ @@ @@ @@ @@ @@ @@ @@")) 'FORMATAGE a l'envers et ré inversion du résultat
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 304
Messages
2 087 067
Membres
103 452
dernier inscrit
SOOSOKA