FaridP
XLDnaute Occasionnel
Bonjour à tous,
J'ai trouvé un excellent code créé en 2008 (rendons à chacun ce qui lui appartient) et c'est exactement ce que je recherche au détail près que je peux avoir jusqu'à 19 chiffres à récupérer et, quand c'est le cas, le nombre extrait est arrondi.
Exemple : 6198005050603430000 au lieu de 6198005050603427070
Voici le code :
	
	
	
	
	
		
Ce n'est peut-être pas grand chose à changer dans le code mais je ne trouve pas donc quelqu'un pouvait soulager mon cerveau de ce supplice, ce serait génial. 😛🙂
Merci et bonne fin de journée à toutes et à tous,
Farid 😉
PS : Merci à Staple1600 qui me facilite grandement la tâche
	
		
			
		
		
	
				
			J'ai trouvé un excellent code créé en 2008 (rendons à chacun ce qui lui appartient) et c'est exactement ce que je recherche au détail près que je peux avoir jusqu'à 19 chiffres à récupérer et, quand c'est le cas, le nombre extrait est arrondi.
Exemple : 6198005050603430000 au lieu de 6198005050603427070
Voici le code :
		VB:
	
	
	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
	Ce n'est peut-être pas grand chose à changer dans le code mais je ne trouve pas donc quelqu'un pouvait soulager mon cerveau de ce supplice, ce serait génial. 😛🙂
Merci et bonne fin de journée à toutes et à tous,
Farid 😉
PS : Merci à Staple1600 qui me facilite grandement la tâche
			
				Dernière édition: