Afficher chiffre commençant par

Bonjour,

J'ai une colonne avec une mélange de texte, symbole et chiffre et je souhaiterais seulement afficher, dans une autre colonne, les chiffres commençant par 98 ou 99. Si pas de correspondance annoter NA.

D'avance merci pour votre aide.

Un fichier excel exemple a été joint avec le résultat attendu

7test.xlsx (9.22 Ko)

Bonjour,

Il y a surement (beaucoup) plus simple, mais cette fonction personnalisée fonctionne :

Function ValeurNumerique(Cellule As Range) As String

Dim Txt As String, Pos As Integer, Nb As Integer, Res As String, Num As String

Txt = Cellule.Value & "__"
While Len(Txt) > 0
    Pos = InStr(Txt, "98")
    If Pos > 0 Then
        If Pos > 1 Then
            If Mid(Txt, Pos - 1, 2) Like "#9" Then
                Txt = Mid(Txt, Pos + 2, 100)
            Else
                Nb = 1
                Do
                    Nb = Nb + 1
                    Num = Mid(Txt, Pos, Nb)
                Loop While IsNumeric(Num) And (Pos + Nb) < Len(Txt)
                If Res = "" Then Res = Trim(Left(Num, Len(Num) - 1)) Else Res = Res & vbCrLf & Trim(Left(Num, Len(Num) - 1))
                Txt = Mid(Txt, Pos + Len(Num), 100)
            End If
        Else
            Nb = 1
            Do
                Nb = Nb + 1
                Num = Mid(Txt, Pos, Nb)
            Loop While IsNumeric(Num) And (Pos + Nb) < Len(Txt)
            If Res = "" Then Res = Trim(Left(Num, Len(Num) - 1)) Else Res = Res & vbCrLf & Trim(Left(Num, Len(Num) - 1))
            Txt = Mid(Txt, Pos + Len(Num), 100)
        End If
    Else
        Txt = ""
    End If
Wend
Txt = Cellule.Value & "__"
While Len(Txt) > 0
    Pos = InStr(Txt, "99")
    If Pos > 0 Then
        If Pos > 1 Then
            If Mid(Txt, Pos - 1, 2) Like "#9" Then
                Txt = Mid(Txt, Pos + 2, 100)
            Else
                Nb = 1
                Do
                    Nb = Nb + 1
                    Num = Mid(Txt, Pos, Nb)
                Loop While IsNumeric(Num) And (Pos + Nb) < Len(Txt)
                If Res = "" Then Res = Trim(Left(Num, Len(Num) - 1)) Else Res = Res & vbCrLf & Trim(Left(Num, Len(Num) - 1))
                Txt = Mid(Txt, Pos + Len(Num), 100)
            End If
        Else
            Nb = 1
            Do
                Nb = Nb + 1
                Num = Mid(Txt, Pos, Nb)
            Loop While IsNumeric(Num) And (Pos + Nb) < Len(Txt)
            If Res = "" Then Res = Trim(Left(Num, Len(Num) - 1)) Else Res = Res & vbCrLf & Trim(Left(Num, Len(Num) - 1))
            Txt = Mid(Txt, Pos + Len(Num), 100)
        End If
    Else
        Txt = ""
    End If
Wend
If Res <> "" Then ValeurNumerique = Res Else ValeurNumerique = "NA"

End Function

bonjour,

une solution via une fonction personnalisée

edit salut Pedro

Function qvdhn(tx)
    t = tx & " "
    For i = 1 To Len(t)
        If IsNumeric(Mid(t, i, 1)) Then
            num = num & Mid(t, i, 1)
            numencours = True
        ElseIf numencours Then
            If Left(num, 2) = "98" Or Left(num, 2) = "99" Then
                rep = rep & num & vbLf
            End If
            num = ""
            numencours = False
        End If
    Next i
    If rep = "" Then rep = CVErr(xlErrNA) Else rep = Left(rep, Len(rep) - 1)
    qvdhn = rep
End Function
3test-21.xlsm (16.65 Ko)

Parfait,

Merci à vous pour votre aide.

Rechercher des sujets similaires à "afficher chiffre commencant"