Ceci est une page optimisée pour les mobiles. Cliquez sur ce texte pour afficher la vraie page.

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

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

patricktoulon

XLDnaute Barbatruc
tient regarde ce que fait la boucle step 2 avec une chaine de 11 caracteres
VB:
Sub demobornagebouclesurimpair()
chaine = "AAAAAAAAAAA" ' donc 11 caracteres
For I = 1 To Len(chaine) Step 2
X = X & Mid(chaine, I, 2) & vbCrLf
Next
MsgBox X
End Sub
 

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

Les cookies sont requis pour utiliser ce site. Vous devez les accepter pour continuer à utiliser le site. En savoir plus…