Afficher chiffre commençant par
M
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
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
M
Parfait,
Merci à vous pour votre aide.