XL 2013 Inverser des caractères deux par deux dans une cellule

  • Initiateur de la discussion Initiateur de la discussion maxou
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

maxou

XLDnaute Nouveau
Bonjour à tous,

il y a longtemps que je ne suis pas passé sur le forum excel. Je galère sur un problème. Je cherche à inverser les chaines de caractères deux par deux sur une cellule?
Je dispose de cette chaîne A1B2C3D4, je cherche à obtenir 😀4C3B2A1.
Pour l'instant j'ai créé une fonction:

Function Reverse$(ByVal S$)
Reverse = StrReverse(S)
End Function

mais le résultat n'est pas le bon. puisque j'obtient 4D3C2B1A; Comment puis je continuer a avancer?

Merci pour votre aide.

Cordialement Maxime
 
Bonsoir Staple1600
Et pourquoi l'argument R y est-il passé ByRef, alors qu'à aucun moment la fonction ne le change par un Set ?
Encore qu'on se fiche de préciser ByVal alors qu'il le faudrait, soit, mais qu'en plus on précise ByRef à la place, c'est un comble …
 
Bonsoir Dranreb

Parce qu’après une journée de boulot, je devrais faire une pause et prendre une collation avant de faire du VBA 😉
Merci de me remettre les idées en place.
VB:
Function myReverse(ByRef R As Range) As String
Dim Z$, i As Byte, s$
If Len(R) < 4 Or R.HasFormula Then Exit Function
Z = StrReverse(R.Text)
For i = 1 To Len(Z) Step 2
s = s & StrReverse(Mid(Z, i, 2))
Next
myReverse = s
End Function
 
Dernière édition:
Re,
Adaptation du code de Simply en fonction
VB:
Function reverse(chaineIni As Range) As String
    Dim l As Integer
    Dim chaine As String
    chaine = ""
    For l = Len(chaineIni) - 1 To 1 Step -2
        chaine = chaine & Mid$(chaineIni, l, 2)
    Next l
 reverse = chaine
End Function
 
Bonsour®
autre approche extraite d'un précédent travail de colorimétrie Offset
VB:
Function RevHex(target, Nbcar As Integer)
Dim idx As Integer, Cible As String
        Cible = Right(String(Nbcar, "0") & CStr(target.Value), Nbcar)
        For idx = 1 To Nbcar Step 2
                RevHex = Mid(Cible, idx, 2) & RevHex
        Next
End Function
1574164761702.png
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Retour