Arrondi

Bonjour à tous,

J'ai un polynôme dont les coefficients varient en fonction d'une valeur, nommée c2.

Par exemple si c2=0.2 , mes coefficient a b c d e et f (polynôme de degré 5) prendront des valeurs bien précises.

La répartition de c2 est discrète, il peut être égal à: de 0.2 à 1.6 par incrément de 0.2 ; puis de 2.5 à 4 par incrément de 0.5 . Tout le problème est que je calcule mon coefficient c2 par une formule, et que je ne tombe pas toujours sur une des valeurs que j'ai en ma possession: problème! Mon programme ne lit pas ces imprécisions, du moins il n'a pas été conçu pour à la base. Donc je pensais faire quelque chose du style, en pseudo code:

if c2<=0.25 then c2=0.2

if c2<=0.35 and c2>.25 then c2=0.3

Ou alors avec un Select Case:

Case1 0<=c2<=0.25 (double égalité impossible je pense; en VBA)

Case2 0.25<=c2<=0.3

Voilà, je voulais des idées, comme je trouvais les miennes pas particulièrement géniales..

Merci

Bonjour,

Peux-tu envoyer un bout de feuille avec éventuellement la macro actuelle

Amicalement

Claude

                                                    c1 = A/ (B * C)

                                                    c2 = (E+F)/G
' là est le souci ! ces valeurs ne tombent bien évidemment pas justes! donc pour ma condition ci après sur c2...c'est pas bon!!

                                                    'Condition sur la valeur de c1'
                                                    If c1 <= 0.3 Then

                                                    'Condition sur la valeur de c2'

                                                    If c2 = 0.2 Then
                                                    a0 = 1
                                                    a1 = 2
                                                    a2 = 3
                                                    a3 = 4
                                                    a4 = 5
                                                    a5 = 6

                             EndIf
                                                    If c2=0.4 

                                                    a0 = 2
                                                    a1 = 3
                                                    a2 = 4
                                                    a3 = 5
                                                    a4 = 6
                                                    a5 = 6
                                                    EndIf

etc...pour c2=0.6 etc...
                                                    EndIf

re,

La feuille Excel serait mieux

joindrefichier

C'est à dire que je n'ai pas fait de feuille Excel pour les entrées. Comment puis je être plus clair?

bonjour

tu peux eventuellement utiliser les proprietés de recherche de valeur approchante dans une colonne que tu auras au prealable confectionné au pas desiré

=MIN(SI(ABS(B1:B9-F1)=MIN(ABS(B1:B9-F1));B1:B9))

F1 la valeur a traité et B1:B9 la colonne

fonction matricielle

cordialement

tulipe_3 a écrit :

bonjour

tu peux eventuellement utiliser les proprietés de recherche de valeur approchante dans une colonne que tu auras au prealable confectionné au pas desiré

=MIN(SI(ABS(B1:B9-F1)=MIN(ABS(B1:B9-F1));B1:B9))

F1 la valeur a traité et B1:B9 la colonne

fonction matricielle

cordialement

En fait j'utilise pas de feuille Excel, je pars d'un programme uniquement en VBA, où je rentre déjà tout c'est plus pratique. Sinon j'ai pensé à quelque chose qui suivrait la logique suivante:

Private Sub test()

Dim i As Integer
Dim j As Integer

For i = 1 To 15
If i <= 5 Then
j = 10 * i
ElseIf i > 5 And i <= 10 Then
j = 100 * i
ElseIf i > 10 And i <= 15 Then
j = 1000 * i
End If
Feuil1.Cells(i, 1) = j

Next

End Sub

Je viens d'écrire ça pour tester, avec un And ça devrait fonctionner...des avis?

Bonjour

Une autre manière de voir

Private Sub test()
Dim i As Integer
Dim j As Integer

  For i = 1 To 15
    Select Case i
      Case 1 To 5
        j = 10 * i
      Case 6 To 10
        j = 100 * i
      Case Else
        j = 1000 * i
    End Select
    Feuil1.Cells(i, 1) = j
  Next
End Sub
Rechercher des sujets similaires à "arrondi"