extraction nombre à partir d'un string

Pierwak

XLDnaute Occasionnel
Bonjour,

Je relance la un sujet qui a déja été traité mais je n'ai pas trouvé ce que je cherchais dans les fils que j'ai consulté et je sais qu'il vaut toujours mieux créer un topic pour avoir de l'aide.

En fait le problème est simple, j'ai des cellules ou il est écrit par exemple
FY08B. je voudrais pouvoir récupérer le 08. J'ai essayé avec val() mais il me sort uniquement le 0, pas le 8. je précise que je cherche a récupérér ces valeurs dans une macro donc je cherche une solution VBA.

D'avance merci à tous les xldnautes.
 

Pierrot93

XLDnaute Barbatruc
Re : extraction nombre à partir d'un string

Bonjour Pierwak,

essaye peut être le code ci dessous :

Code:
Sub test()
Dim x As String, i As Byte
For i = 1 To Len(Range("A1").Value)
    If IsNumeric(Mid(Range("A1").Value, i, 1)) Then x = x & Mid(Range("A1").Value, i, 1)
Next i
End Sub

bonne fin d'après midi
@+

Edition : bonsoir GIBI, merci, la modif est effectuée
 
Dernière édition:

Staple1600

XLDnaute Barbatruc
Re : extraction nombre à partir d'un string

Bonsoir à tous


Une fonction VBA personnalisée ( à utiliser dans la feuille)

Dans si dans ta cellule: FY08B (en A1 par exemple)

en B, tu saisis =ExtractNumber(A1)

PS: selon les cas tu peux utliser
=ExtractNumber(A1;VRAI)
=ExtractNumber(A1;;VRAI)
=ExtractNumber(A1;VRAI;VRAI)

Code:
Function ExtractNumber(rCell As Range, _
    Optional Take_decimal As Boolean, Optional Take_negative As Boolean) As Double
    
Dim iCount As Integer, i As Integer, iLoop As Integer
    Dim sText As String, strNeg As String, strDec As String
    Dim lNum As String
    Dim vVal, vVal2
     
     ''''''''''''''''''''''''''''''''''''''''''
     'Written by OzGrid Business Applications
     'www.ozgrid.com
     
     'Extracts a number from a cell containing text and numbers.
     ''''''''''''''''''''''''''''''''''''''''''
    sText = rCell
    If Take_decimal = True And Take_negative = True Then
        strNeg = "-" 'Negative Sign MUST be before 1st number.
        strDec = "."
    ElseIf Take_decimal = True And Take_negative = False Then
        strNeg = vbNullString
        strDec = "."
    ElseIf Take_decimal = False And Take_negative = True Then
        strNeg = "-"
        strDec = vbNullString
    End If
    iLoop = Len(sText)
        
            For iCount = iLoop To 1 Step -1
            vVal = Mid(sText, iCount, 1)
            
    
                If IsNumeric(vVal) Or vVal = strNeg Or vVal = strDec Then
                    i = i + 1
                    lNum = Mid(sText, iCount, 1) & lNum
                        If IsNumeric(lNum) Then
                            If CDbl(lNum) < 0 Then Exit For
                        Else
                          lNum = Replace(lNum, Left(lNum, 1), "", , 1)
                        End If
                End If
                 
                If i = 1 And lNum <> vbNullString Then lNum = CDbl(Mid(lNum, 1, 1))
            Next iCount
        
     
    ExtractNumber = CDbl(lNum)
     
End Function
 
Dernière édition:

Discussions similaires

Membres actuellement en ligne

Statistiques des forums

Discussions
312 084
Messages
2 085 194
Membres
102 813
dernier inscrit
kaiyi