extraction nombre à partir d'un string

  • Initiateur de la discussion Initiateur de la discussion Pierwak
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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.
 
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:
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:
Notre forum d’entraide est 100 % gratuit et le restera.
Aucune formation payante, aucun fichier à acheter, rien à vendre. Mais comme tout site, nous devons couvrir nos frais pour continuer à vous accompagner.
Soutenez-nous en souscrivant à un compte membre : c’est rapide, vous choisissez simplement votre niveau de soutien et le tour est joué.

Je soutiens la communauté et j’accède à mon compte membre

Discussions similaires

Retour