Fonction approximation

Résolu
Bonjour,

je suis confronté à un problème, je souhaite faire une fonction qui me permet d'approximer les valeurs de mon programme.

mais le problème est qu'il ne le fait pas sur toute les valeurs, il le fait sur certain mais pas sur d'autre et je comprend pas où est le problème
voici ma fonction
Function approximation_2(coord_I As String) As String

Dim approxi_2 As Double

If Val(coord_I) < -0.0006 Then
approxi_2 = 0.0005

If Val(coord_I) > -0.0006 Then
approxi_2 = 0.0005

End If
End If

coord_I = Str(Val(coord_I) + approxi_2)
'coord_I = Mid(coord_I, 1, InStr(coord_I, ".") + 3)

If Right(coord_I, 2) = "0" Then
coord_I = Left(coord_I, Len(coord_I) - 2)
End If

approximation_2 = coord_I

End Function
quelqu'un pourrai venir à mon secour s'il vous plait

4 réponses

  1. De rien

    Je suppose que tu as vu l'erreur ici approx_3 au lieu de approx_2 dans la troisième procédure

    Dim s as String, n as Byte, approx_3 as String
    s = Replace(s, ",", ".")
    approx_3 = Str(Round(Val(s), n))

    Si c'est fini, peux tu mettre le sujet à Résolu (en haut à droite de ton premier message)

    Bonne fin de journée
    1. Pourquoi ne pas utiliser la fonction round, éventuellement combinée avec str et val dans le cas où les valeurs sont des chaines de caractères
      n est le nombre de chiffres après la virgule maxi désiré

      Dim s as Double, n as Byte, approx_1 as Double
      approx_1 = Round(s, n)

      Dim s as Double, n as Byte, approx_2 as String
      approx_2 = Str(Round(s, n))

      Dim s as String, n as Byte, approx_2 as String
      s = Replace(s, ",", ".")
      approx_3 = Str(Round(Val(s), n))

      Cdlmnt
      1. Bonjour

        Le début n'est pas très clair (RQ1) ni correct (RQ2)

        If Val(coord_I) < -0.0006 Then
        approxi_2 = 0.0005
        If Val(coord_I) > -0.0006 Then
        approxi_2 = 0.0005
        End If
        End If

        RQ1. En bref ça donne

        si Val(ccoor_I) différent de -0.0006
        alors approxi_2=0.0005
        sinon approxi_2=0 puisque ce cas n'est pas traité

        RQ2. il manque un end if avant le 2° si et il y en a un entrop après le 2° si

        RQ3. Peux tu décrire ce que la fonction approximation_2 est censée réaliser

        Cdlmnt
        1. la fonction approximation est censée me donner un nombre arrondi c-a-d si j'ai un nombre qui est de 1.0000000000332E-4,
          avec cette fonction approximation je suis maintenant censé avoir 0.0
          ne plus trainer trop de chiffre.
          mais pour l'instant c'est pas le cas avec ma fonction actuelle j'obtiens 1.0
          en somme je souhaite faire une fonction qui me permet d'avoir des nombres approximatif, ne plus trainer tout les nombres après la virgule.

          merci pour votre aide