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

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
 
Bonjour a tous,

Merci pour vos multiples réponses, j'avais en effet besoin d'adapté sa dans une fonction. Je vous remercie pour votre aide précieuse qui me fait gagner un temps énorme et les erreurs de saisie 🙂.
 
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
 
- 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

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