Inversion d'un case excel (ex : 321 >123)

Résolu/Fermé
MachBin - 27 nov. 2013 à 09:21
 MachBin - 27 nov. 2013 à 11:45
Bonjour,

Je dispose d'un fichier excel qui possède plusieurs données, avec une colonne dont les données sont inversées.
Par exemple dans ma colonne j'ai les donnée 54321 en réalité je veux la donnée 12345.

pour cela j'ai réalisé les 6 fonction suivante dans 6 case excel :

=GAUCHE(DROITE($G2;NBCAR($G2)-0);1) //permet de récupérer le 5 de mon exemple
=GAUCHE(DROITE($G2;NBCAR($G2)-1);1) //permet de récupérer le 4 de mon exemple
=GAUCHE(DROITE($G2;NBCAR($G2)-2);1) //permet de récupérer le 3 de mon exemple
=GAUCHE(DROITE($G2;NBCAR($G2)-3);1) //permet de récupérer le 2 de mon exemple
=GAUCHE(DROITE($G2;NBCAR($G2)-4);1) //permet de récupérer le 1 de mon exemple
=CONCATENER(L2;K2;J2;I2;H2) // pour récupérer mon 12345

j'aurais aimé effectuer un macro de tous ça pour ne prendre qu'une case au finale!

j'ai essayé de passer par des fonction puis de concaténer le tous mais ça ne marche pas.
Voici le code :

Function chiffre4()

chiffre4 = Left(Right(RC7, Len(RC7) - 0), 1)


End Function

Function chiffre3()

chiffre3 = Left(Right(RC7, Len(RC7) - 1), 1)

End Function

Function chiffre2()

chiffre2 = Left(Right(RC7, Len(RC7) - 2), 1)

End Function

Function chiffre1()

chiffre1 = Left(Right(RC7, Len(RC7) - 3), 1)

End Function

Function chiffre0()

chiffre0 = Left(Right(RC7, Len(RC7) - 4), 1)

End Function


Sub concatenation()

Range("M4").FormulaR1C1 = "=CONCATENATE(chiffre0(),chiffre1(),chiffre2(),chiffre3(),chiffre4())"

End Sub

Pour le moment j'essai de le faire sur une case pour au finale le faire sur l'ensemble des données.

Pourriez-vous m'aider ?

Merci d'avance

MachBin
A voir également:

6 réponses

Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
27 nov. 2013 à 11:36
Oui c'est normal ... le retour des fonctions est une chaine de caractères ... il faut convertir le retour.

Si tu prends la proposition de Zoul67

Public Function ReverseString(Text As String) As Double
     ReverseString = CLng(StrReverse(Text))
End Function

2
ujmo4612 Messages postés 12 Date d'inscription mercredi 27 novembre 2013 Statut Membre Dernière intervention 14 octobre 2020 1
27 nov. 2013 à 10:14
Bonjour,

tout d'abord créer la fonction personnalisée "inverser" :

code :

Function inverser(s1 As Variant)
Dim i, l As Long
Dim s2 As String
    s2 = ""
    l = Len(s1)
    For i = 0 To l - 1
        s2 = s2 & Mid(s1, l - i, 1)
    Next i
    inverser = s2
End Function


ensuite utiliser cette fonction personnalisée en choisissant la catégorie fonctions personnalisée dans la liste déroulante des catégories lors de l'insertion de la fonction.

Il y aura peut-être des modifs selon le contexte à effectuer.
en particulier si on traite du numérique il faudra effectuer une conversion du résultat vers un numérique.

bien-sûr il faut avoir accès à l'onglet développeur.

Bon courage
cordialement
ujmo
1
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
27 nov. 2013 à 09:37
Bonjour,

ça existe presque tout fait :
Public Function ReverseString(Text As String)
ReverseString = StrReverse(Text)
End Function

A+
0
Polux31 Messages postés 6917 Date d'inscription mardi 25 septembre 2007 Statut Membre Dernière intervention 1 novembre 2016 1 204
27 nov. 2013 à 09:38
Bonjour,

A adapter

Dim i As Integer
Dim c As String

For i = Len(Cells(1, 1)) To 1 Step -1
     c = c & Mid(Cells(1, 1), i, 1)
Next i

Cells(1, 2) = c 


;0)
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
Re,

J'ai testé vos version elle marche toute à la perfection.
Cependant je ne peux pas effectuer de traitement sur ces nouvelles valeurs, est-ce normal ?
0
Zoul67 Messages postés 1959 Date d'inscription lundi 3 mai 2010 Statut Membre Dernière intervention 30 janvier 2023 149
Modifié par Zoul67 le 27/11/2013 à 11:39
Re,

Comme l'a expliqué ujmo, il faut que ton résultat soit un nombre si tu veux faire un "traitement" (ex. une somme) alors que nos fonctions génèrent un texte.
Il suffit normalement de forcer le type "nombre" :


Public Function ReverseString(Text As String)
ReverseString = CLng(StrReverse(Text))
End Function
0
WOAW c'est vraiment magique ^^

Je débute seulement en vba et petit à petit je vois qu'on peut faire de belle chose !

merci pour votre aide

bonne journée cordialement

MachBin
0