Arrondi à l'entier supérieur d'une liste défini (VBA) - Résolu

Jubei1

XLDnaute Nouveau
Bonjour à tous,

J'ai un souci un peu particulier qui requière de l'aide. Je souhaiterai arrondir une valeur à l'entier supérieur le plus proche définis parmis une liste. Ceci me permettra d'aller ensuite chercher la colonne de cet entier supérieur via l'arrondi adéquate de la valeur initiale... J'explique avec un exemple pour que ce soit compréhensible^^ :

liste des entiers = 199 499 999 1999 2999 4999 6999 9999 14999 19999 22999 24999 25000
exemple 1 : Si j'ai comme valeur 23 je veux qu'elle soit arrondi à 199
exemple 2 : si j'ai 24998 je veux qu'elle soit arrondi à 24999

La seule solution que j'ai trouvé est de faire plusieurs boucle IF du type :

if cells(x,x).value < 999 and cells(x,x).value > 199 then
valeur = 999

Peut-il y avoir mieux ???
 
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
Re : Arrondi à l'entier supérieur d'une liste défini (VBA)

Bonjour Jubei, bonjour le forum,

Pas très bien compris ton exemple... Peut-être comme ça :
Code:
Dim te(12) As Integer
Dim nb As Integer

te(0) = 199
te(1) = 499
te(2) = 999
te(3) = 1999
te(4) = 2999
te(5) = 4999
te(6) = 6999
te(7) = 9999
te(8) = 14999
te(9) = 19999
te(10) = 22999
te(11) = 24999
te(12) = 25000
If Cells(x, x) < te(0) Then nb = te(0): GoTo suite
For i = 0 To 12
    If Cells(x, x) > te(i) Then nb = te(i + 1)
Next i
suite:
MsgBox nb

[Édition]
Bonjour Dull, Lone-Wolf le casseur, on s'est croisé tout comme l'exemple de Jubei....
 
Dernière édition:

tototiti2008

XLDnaute Barbatruc
Re : Arrondi à l'entier supérieur d'une liste défini (VBA)

Bonjour Jubei, Bonjour Lone-worlf, Bonjour Dull, Bonjour Robert, :)

un essai par formule
J'ai changé les valeurs de la Feuil2 ligne 5 en mettant la borne inférieure de la plage de valeurs
 

Pièces jointes

  • Copie de exemple.xls
    211.5 KB · Affichages: 79
  • Copie de exemple.xls
    211.5 KB · Affichages: 84
  • Copie de exemple.xls
    211.5 KB · Affichages: 86

Pierrot93

XLDnaute Barbatruc
Re : Arrondi à l'entier supérieur d'une liste défini (VBA)

Bonjour à tous,

une autre approche :
Code:
Option Explicit
Sub test()
Dim t() As Variant, x As Double, v As Integer
t = Array(25000, 24999, 22999, 19999, 14999, 9999, 6999, 4999, 2999, 1999, 999, 499, 199)
x = 15
v = Application.Match(x, t, -1)
MsgBox t(v - 1)
End Sub
bon après midi
@+
 

Jubei1

XLDnaute Nouveau
Re : Arrondi à l'entier supérieur d'une liste défini (VBA)

C'est où que t'as appris VBA ??
Pendant que j'y suis...
Comment on peut comparer 4 variables qui sont calculé en fonction de "checkbox.value = true" sans faire 50 boucles if du type :



If Tarifnorbert > 0 And TarifGefco = 0 And TarifThévenet = "" And TarifGéodis = "" Then
Tarifplusbas = Tarifnorbert
Else
If Tarifnorbert > 0 And TarifGefco > 0 And TarifThévenet = "" And TarifGéodis = "" Then
Tarifplusbas = WorksheetFunction.Min(TarifGefco, Tarifnorbert)
Else
If Tarifnorbert > 0 And TarifGefco = 0 And TarifThévenet > 0 And TarifGéodis = "" Then
Tarifplusbas = WorksheetFunction.Min(TarifThévenet, Tarifnorbert)
Else
If Tarifnorbert > 0 And TarifGefco = 0 And TarifThévenet = "" And TarifGéodis > 0 Then
Tarifplusbas = WorksheetFunction.Min(TarifGéodis, Tarifnorbert)


If TarifGefco > 0 And TarifThévenet = "" And TarifGéodis = "" Then
Tarifplusbas = TarifGefco
Else
If TarifGefco = 0 And TarifThévenet > 0 And TarifGéodis = "" Then
Tarifplusbas = TarifThévenet
Else:
If TarifGefco = 0 And TarifThévenet = "" And TarifGéodis > 0 Then
Tarifplusbas = TarifGéodis
Else
If TarifGefco > 0 And TarifThévenet > 0 And TarifGéodis = "" Then
Tarifplusbas = WorksheetFunction.Min(TarifGefco, TarifThévenet)
Else
If TarifGefco = 0 And TarifThévenet > 0 And TarifGéodis > 0 Then
Tarifplusbas = WorksheetFunction.Min(TarifGéodis, TarifThévenet)
Else
If TarifGefco > 0 And TarifThévenet = "" And TarifGéodis > 0 Then
Tarifplusbas = WorksheetFunction.Min(TarifGéodis, TarifGefco)
Else
If TarifGefco > 0 And TarifThévenet > 0 And TarifGéodis > 0 Then
Tarifplusbas = WorksheetFunction.Min(TarifGéodis, TarifGefco, TarifThévenet)
End If
End If
End If
End If
End If
End If
End If
 

Statistiques des forums

Discussions
312 213
Messages
2 086 305
Membres
103 174
dernier inscrit
OBUTT