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

Résolu
MachBin -  
 MachBin -
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   Statut Membre Dernière intervention   1 204
 
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   Statut Membre Dernière intervention   1
 
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   Statut Membre Dernière intervention   149
 
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   Statut Membre Dernière intervention   1 204
 
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
MachBin
 
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   Statut Membre Dernière intervention   149
 
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
MachBin
 
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