Extraire les derniers chiffres d'une cellule Alphanumérique Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Répondre
T
Theoduxx
Nouveau venu
Nouveau venu
Messages : 5
Inscrit le : 26 novembre 2014
Version d'Excel : 2007 PC

Message par Theoduxx » 26 novembre 2014, 10:03

Extraire chiffres de droite.xlsx
(9.94 Kio) Téléchargé 112 fois
Bonjour à tous,

J'ai déja vu pas mal de sujets proches du mien, mais rien qui ne m'ait aidé dans mon cas particulier.

J'ai des cellules avec des chiffres et des lettres, leur point commun est que le chiffre que je veux extraire est toujours à droite dans la cellule.

Néanmoins ce sont tous des chiffres différents, et ont donc entre 5 et 15 caractères (avec virgule)

Quand j'utilise la formule =DROITE(A1;6) ça me renvoit certains bons chiffres, mais les autres sont par exemple "0 9,56".

Ma question est:

Comment faire pour extraire le chiffre de droite d'un cellule, avec n'importe quel nombre de caractères ? ?

Exemple de suite de mes cellules à convertir (dans un fichier de 45 000 lignes.....)

Alcool gélifié 225 g 2,00 3,973 3,973 7,95
Alcool gélifié 80 g 1,00 3,151 3,151 3,15
Alcool gélifié 80 g 1,00 3,151 3,151 3,15
Alcool gélifié 80 g 10,00 3,151 3,151 31,51
Alcool gélifié 80 g 2,00 3,151 3,151 516,30

Je voudrais avoir dans une nouvelle colonne que les chiffres:
7,95
3,15
3,15
31,51
516,30

Un Echantillon de mon fichier:
Extraire chiffres de droite.xlsx
(9.94 Kio) Téléchargé 112 fois
Comment faire .......?

Merci à tous d'avance pour votre aide ! !
Avatar du membre
eriiic
Passionné d'Excel
Passionné d'Excel
Messages : 9'707
Appréciations reçues : 446
Inscrit le : 7 février 2010
Version d'Excel : 2010fr

Message par eriiic » 26 novembre 2014, 10:21

Bonjour,
=STXT(A1;MAX((STXT(A1;LIGNE(INDIRECT("1:"&NBCAR(A1)));1)=" ")*LIGNE(INDIRECT("1:"&NBCAR(A1))))+1;20)
et si tu dois remplacer la , par un . :
=SUBSTITUE(la_formule;",";".")

eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.
(les Shadoks)

En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
T
Theoduxx
Nouveau venu
Nouveau venu
Messages : 5
Inscrit le : 26 novembre 2014
Version d'Excel : 2007 PC

Message par Theoduxx » 26 novembre 2014, 10:29

Bonjour Eric,

Ca m'extrait bien le texte qui est à gauche mais pas le chiffre à droite....

Tu aurais une formule pour faire l'inverse ? ?

Merci ! !
Avatar du membre
OOoiste
Membre impliqué
Membre impliqué
Messages : 1'607
Appréciations reçues : 22
Inscrit le : 1 octobre 2009
Version d'Excel : office 365

Message par OOoiste » 26 novembre 2014, 10:31

Bonjour,

Formule matricielle validée par Ctrl+Maj+Entrée :
=CNUM(DROITE(A1;EQUIV(" ";STXT(A1;NBCAR(A1)-LIGNE($1:$255);1);0)))
Si tu veux éviter les matricielles, c'est plus long :(
=CNUM(DROITE(A1;NBCAR(A1)-CHERCHE("µ";SUBSTITUE(A1;" ";"µ";NBCAR(A1)-NBCAR(SUBSTITUE(A1;" ";""))))))
A+
T
Theoduxx
Nouveau venu
Nouveau venu
Messages : 5
Inscrit le : 26 novembre 2014
Version d'Excel : 2007 PC

Message par Theoduxx » 26 novembre 2014, 10:39

Merci ça fonctionne !!

Super merci Eric, merci Ooiste, à bientôt !

Théo
Avatar du membre
ThauThème
Passionné d'Excel
Passionné d'Excel
Messages : 4'047
Appréciations reçues : 212
Inscrit le : 19 octobre 2014
Version d'Excel : 2010 FR

Message par ThauThème » 26 novembre 2014, 10:49

Bonjour le fil, bonjour le forum,

Très en retard j'envoie quand une proposition VBA si ça peut intéresser :

Sub Macro1()
Dim O As Object 'déclare la variable O (Onglet)
Dim DL As Long 'déclare la variable DL (Dernière Ligne)
Dim TC As Variant 'déclare la variable TC (tableau de Cellules)
Dim I As Long 'déclare la variable I (Incrément)
Dim NE As Byte 'déclare la variable NE (Nombre d'Espaces)
Dim NV As String 'déclare la variable NV (Nouvelle Valeur)

Set O = Sheets("Feuil1") 'définit l'onglet O
DL = O.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne éditée DL de la colonn e1 (=A) de l'omnglet O
TC = O.Range("A1:A" & DL) 'définit le tableau de cellules TC
For I = 1 To UBound(TC, 1) 'boucle sur toutes le lignes du tableau TC
    On Error Resume Next 'gestion des erreur (en cas d'erreur passe à la ligne suivante)
    NE = UBound(Split(TC(I, 1), " ")) 'définit le nombre d'espaces qu'il y a dans la valeur TC(I,1) (génère une erreur si aucun espace)
    If Err <> 0 Then 'condition : si une erreur a été générée
        Err.Clear 'efface l'erreur
        GoTo suite 'va à l'étiquette "suite"
    End If 'fin de la condition
    On Error GoTo 0 'annule la gestion des erreurs
    NV = Split(TC(I, 1), " ")(NE) 'définit la nouvelle valeur NV
    O.Cells(I, 3).Value = NV * 1 'place la nouvelle valeur dans la cellule correspondante en colonne 3 (=C) (multiplié par 1 pour avoir un format nombre)
suite: 'étiquette
Next I 'prochaine ligne de la boucle
End Sub
À plus,

ThauTheme


Je suis Charlie
VBA m'éclate, les formules m'ennuient ! Je n'y peux rien c'est comme ça...
Avatar du membre
eriiic
Passionné d'Excel
Passionné d'Excel
Messages : 9'707
Appréciations reçues : 446
Inscrit le : 7 février 2010
Version d'Excel : 2010fr

Message par eriiic » 26 novembre 2014, 12:09

Bonjour Eric,
Ca m'extrait bien le texte qui est à gauche mais pas le chiffre à droite....
J'avais oublié de dire de valider en matriciel avec shift+Ctrl+Entrée.
Mais comme celle d'oooiste est nettement plus simple, plus de pb.

eric
En essayant continuellement, on finit par réussir.
Donc plus ça rate, plus on a de chances que ça marche.
(les Shadoks)

En plus du merci (si si, ça se fait !!!), penser à mettre en résolu. Merci
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message