Extraire des caractères numériques d’une cellule

Fermé
gexelpas - 30 sept. 2020 à 17:29
 gexelpas - 1 oct. 2020 à 08:41
Bonjour,

Je dispose de cellules contenant chacune des caractères alphabétiques et numériques.
Le but est d’extraire, grâce à une formule, que les caractères numériques.
Évidemment, ils ne sont pas toujours à la même place dans la chaîne de caractères, qui commence et se termine toujours par des lettres.
Merci d’avance pour vos suggestions !
Cdlt,

Configuration: Android / Chrome 85.0.4183.127
A voir également:

3 réponses

Vaucluse Messages postés 26496 Date d'inscription lundi 23 juillet 2007 Statut Contributeur Dernière intervention 1 avril 2022 6 396
30 sept. 2020 à 17:45
Bonjour
avez vous quelques modèles du contenu de vos cellules, dans tous les cas de figure?
à vous lire
crdlmnt
1
Bonjour Vaucluse,
Via55 m'a proposé une solution qui fonctionne, mais merci pour votre réponse rapide !
La prochaine fois, effectivement, je veillerai à joindre des exemples car je comprends qu'il est bien plus aisé de proposer des fonctions appliquées directement à des modèles...
En tout cas merci !
Cdlt,
Gexelpas
0
cs_Le Pivert Messages postés 7903 Date d'inscription jeudi 13 septembre 2007 Statut Contributeur Dernière intervention 11 mars 2024 728
Modifié le 30 sept. 2020 à 18:02
Bonjour,

a défaut de formule voici une méthode avec vba

Faire Alt F11 sur la feuille concernée pour accéder à l'éditeur.

Mettre ce code qui se déclenchera au double clic sur la cellule contenant les données:

Option Explicit
Dim chaine As String
Dim ligne As Long
Private Sub Worksheet_BeforeDoubleClick(ByVal Target As Range, Cancel As Boolean)
If Not Application.Intersect(Target, Range("A:A")) Is Nothing Then 'adapter la colonne de données
chaine = Target.Value
ligne = Target.Row
If chaine = "" Then Exit Sub
extraireValeursNumeriques_DansChaine
End If
End Sub
'https://silkyroad.developpez.com/VBA/ManipulerChainesCaracteres/#LI-P
Sub extraireValeursNumeriques_DansChaine()
    Dim i As Byte, Nb As Byte
    Dim Cible As String, Resultat As String
    Dim Nombre As Double
    
    Cible = chaine
    'Pour que fonction Val puisse reconnaitre les décimales: Remplacement des
    'virgules par des points
    Cible = Replace(Cible, ",", ".")
    'Pour gérer deux nombres qui se suivent: remplacement des espaces
    'par un caractère Alpha
    Cible = Replace(Cible, " ", "x")
    
    For i = 1 To Len(Cible)
        If IsNumeric(Mid(Cible, i, 1)) Then
        Nombre = Val(Mid(Cible, i, Len(Cible) - i + 1))
        Nb = Nb + 1
        Resultat = Resultat & Nombre & ", "  'vbLf
        i = i + Len(Str(Nombre)) - 1
        End If
    Next
    Range("B" & ligne).Value = Left(Resultat, Len(Resultat) - 2)'adapter la colonne de reception
End Sub




1
Bonjour,
Merci pour votre retour.
Je suis certain que ce code fonctionne, mais Via55 m'a proposé une formule matricielle, qui fonctionne très bien et qui me permet d'éviter d'enregistrer le fichier sous un format .xlsm, pour lequel, les destinataires sont toujours un peu récalcitrants à activer lors de la réception et de l'ouverture...
Merci en tout cas.
Gexelpas
0
via55 Messages postés 14406 Date d'inscription mercredi 16 janvier 2013 Statut Membre Dernière intervention 28 avril 2024 2 703
30 sept. 2020 à 18:06
Bonjour

Formule matricielle de Jacques Boisgonthier
=STXT(A1;EQUIV(VRAI;ESTNUM(CNUM(STXT(A1;LIGNE($1:$255);1)));0);SOMME((ESTNUM(CNUM(STXT(A1;LIGNE($1:$255);1))))*1))

A valider par Ctrl+Maj+Entrée et la formule se met auto entre accolades dans la barre de formules

Cdlmnt
Via
1
Bonjour Via55,
Ce n'est pas la première fois et certainement pas la dernière :-) que vous me dépannez sur des fonctions excel...
Tout comme Vaucluse, ci-dessus, que vous devez vous croiser sur bon nombre de posts...?
Merci pour cette formule qui fonctionne à merveille !
Les précédents solutions que vous et Vaucluse, avez pu m'apporter m'ont à chaque fois permis d'avancer dans l'élaboration de rapports sous excel et cela est très appréciable !
Merci pour tout !
Gexelpas (et c'est peu de le dire...)
0