Extraction de certains chiffres depuis une cellule alphanumérique mélangée Le sujet est résolu

Y compris Power BI, Power Query et toute autre question en lien avec Excel
Répondre
T
Tommyna
Nouveau venu
Nouveau venu
Messages : 3
Inscrit le : 14 janvier 2019
Version d'Excel : 2016

Message par Tommyna » 14 janvier 2019, 18:55

Bonjour à tous !

Encore débutant sur excel, je me retrouve a devoir extraire 3 chiffre depuis des cellules alphanumérique du type :

"Xxxxx 25mmxxxxx 37xxxx 675xxx" (environ 3000 ligne a extraire ::( )

Le nombre de caractère varie de cellule en cellule cependant les 3 chiffres dont j'ai besoin sont toujours les 3 derniers chiffres a droite.

Existe t'il une formule pas trop compliquée (ou qu'on peut m'expliquer) pour uniquement extraire ces 3 chiffres ?

Merci à tous !
h
h2so4
Passionné d'Excel
Passionné d'Excel
Messages : 9'458
Appréciations reçues : 428
Inscrit le : 16 juin 2013
Version d'Excel : 365 UK Windows 10

Message par h2so4 » 14 janvier 2019, 19:08

Bonjour,

solution via une macro,
cellule en colonne A, chiffres extraits en colonne B
Sub aargh()
    dl = Cells(Rows.Count, "A").End(xlUp).Row
    For i = 1 To dl
        t = Cells(i, "A")
        For j = Len(t) - 2 To 1 Step -1
            If Mid(t, j, 3) Like "###" Then
                Cells(i, "B") = Mid(t, j, 3)
                Exit For
            End If
        Next j
    Next i
End Sub
1 membre du forum aime ce message.
t
tulipe_4
Passionné d'Excel
Passionné d'Excel
Messages : 8'789
Appréciations reçues : 262
Inscrit le : 1 janvier 2011
Version d'Excel : 2000 2007

Message par tulipe_4 » 14 janvier 2019, 19:22

bonjour
un essai
=MAX(SIERREUR(SI(ESTNUM(CNUM(STXT(A13;LIGNE(1:100);3)));STXT(A13;LIGNE(1:100);3)*1;"");""))
A13 c'est la cel à analyser (pour le test )
la formule est matricielle donc à valider avec les 3 touches : Ctrl Maj Entrée en simultané
cordialement
explication
on decortique le texte par paquets de 3 et on ne garde que celui avec 3 chiffres
1 membre du forum aime ce message.
c'est en cherchant qu'on trouve
T
Tommyna
Nouveau venu
Nouveau venu
Messages : 3
Inscrit le : 14 janvier 2019
Version d'Excel : 2016

Message par Tommyna » 14 janvier 2019, 19:50

@Tulipe_4 Merci mais certaines lignes commence également par 3 chiffres ils prends donc ceux la en priorité

@h2so4 Dés que j'ai compris comment on utilise une macro je reviens vers toi, merci de l'indication.

Si d'autres personnes ont des idées je suis toujours prenneur :)
g
gmb
Fanatique d'Excel
Fanatique d'Excel
Messages : 13'055
Appréciations reçues : 388
Inscrit le : 4 avril 2013
Version d'Excel : 2016

Message par gmb » 14 janvier 2019, 19:56

Bonjour et bienvenue sur le forum
Bonjour à tous

Une variante.
Bye :!
Classeur1 v1.xlsm
(16.34 Kio) Téléchargé 26 fois
Classeur1 v1.xlsm
(16.34 Kio) Téléchargé 20 fois
1 membre du forum aime ce message.
T
Tommyna
Nouveau venu
Nouveau venu
Messages : 3
Inscrit le : 14 janvier 2019
Version d'Excel : 2016

Message par Tommyna » 14 janvier 2019, 20:01

MAGNIFIQUE ! Vos 2 macros répondent exactement à ce que je recherchais ! Un grand merci pour la réactivité et les conseils !
Avatar du membre
curulis57
Passionné d'Excel
Passionné d'Excel
Messages : 3'747
Appréciations reçues : 226
Inscrit le : 4 janvier 2016
Version d'Excel : 2016 FR / 2019 FR

Message par curulis57 » 14 janvier 2019, 20:03

Salut Tommyna, H2SO4,Tulipe,

En VBA par tableau : premier jet...
Si je lis bien ton UNIQUE donnée, chaque groupe de chiffres est précédé d'une espace ? Systématique ?
Un double-clic démarre la macro.
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
'
Dim tData
'
Cancel = True
tData = Range("A1:B" & Range("A" & Rows.Count).End(xlUp).Row).Value
For x = 1 To UBound(tData, 1)
    tData(x, 2) = Mid(tData(x, 1), InStrRev(tData(x, 1), " ") + 1, 3)
Next
Range("A1").Resize(UBound(tData, 1), 2) = tData
'
End Sub
A+
Tommyna.xlsm
(28.29 Kio) Téléchargé 8 fois
B
Boisgontierjacques
Membre fidèle
Membre fidèle
Messages : 470
Appréciations reçues : 109
Inscrit le : 5 octobre 2018
Version d'Excel : 2016

Message par Boisgontierjacques » 14 janvier 2019, 20:09

Bonsoir,

=STXT(A1;NBCAR(A1)-EQUIV(VRAI;ESTNUM(CNUM(STXT(A1;NBCAR(A1)-LIGNE($1:$255);1)));0)-2;3)
Valider avec maj+ctrl+entrée

Boisgontier
Répondre
  • Sujets similaires
    Réponses
    Vues
    Dernier message