[VBA / Excel] Arrondir à l'entier supérieur
Résolu/Fermé
sfritz
abdavulocat - 26 juil. 2016 à 22:01
- Messages postés
- 41
- Date d'inscription
- jeudi 9 octobre 2008
- Statut
- Membre
- Dernière intervention
- 1 janvier 2014
abdavulocat - 26 juil. 2016 à 22:01
A voir également:
- Vba arrondi supérieur
- Arrondi sup vba - Meilleures réponses
- Arrondi supérieur vba - Meilleures réponses
- [VBA / Excel] Arrondir à l'entier supérieur ✓ - Forum - VB / VBA
- Arrondir en VBA ✓ - Forum - Excel
- Entier arrondi supérieur ✓ - Forum - VB / VBA
- L'équivalent de l'arrondi.sup en VBA - Forum - VB / VBA
- VBA.VB6 - Les fonctions d'arrondi - Conseils pratiques - Langages
12 réponses
Mik-78
12 févr. 2013 à 10:52
- Messages postés
- 10
- Date d'inscription
- mardi 11 septembre 2012
- Statut
- Membre
- Dernière intervention
- 12 mars 2013
12 févr. 2013 à 10:52
Bon le sujet date, mais ça peut en intéresser d'autres !
Vous vous compliquez la vie, il suffit d'écrire tout simplement :
Vous vous compliquez la vie, il suffit d'écrire tout simplement :
Application.WorksheetFunction.RoundUp(Valeur)
f894009
2 sept. 2011 à 11:10
- Messages postés
- 16636
- Date d'inscription
- dimanche 25 novembre 2007
- Statut
- Membre
- Dernière intervention
- 11 août 2022
2 sept. 2011 à 11:10
Bonjour,
B = Int(X)
If (X - B) > 0 Then
X = Int(X) + 1
End If
C'est basic mais efficace
Bonne suite
B = Int(X)
If (X - B) > 0 Then
X = Int(X) + 1
End If
C'est basic mais efficace
Bonne suite
En VB.net il existe ceci dans l'espace de nom "Math":
Ceiling(monNombre)
Qui donne la limite supérieure entière la plus proche d'un nombre.
Ceiling(15.1) = 16
Ceiling(15.88) = 16
A voir si ça existe aussi en VBA...
---------------------------------------------
Ou sinon faire une nouvelle fonction à insérer dans un module:
(trouvé sur http://bytes.com/topic/access/answers/832599-ceiling-function)
Ceiling(monNombre)
Qui donne la limite supérieure entière la plus proche d'un nombre.
Ceiling(15.1) = 16
Ceiling(15.88) = 16
A voir si ça existe aussi en VBA...
---------------------------------------------
Ou sinon faire une nouvelle fonction à insérer dans un module:
Public Function Ceiling(RoundValue As Currency) As Currency Dim TheValue As Currency TheValue = RoundValue Select Case TheValue - Int(TheValue) Case Is <= 0.25 Ceiling = Int(TheValue) Case Is >= 0.5 Ceiling = Int(TheValue) + 1 Case Is >= 0.26 Ceiling = Int(TheValue) + 0.5 End Select End Function
(trouvé sur http://bytes.com/topic/access/answers/832599-ceiling-function)
Vous n’avez pas trouvé la réponse que vous recherchez ?
Posez votre question
sfritz
9 oct. 2008 à 13:08
- Messages postés
- 41
- Date d'inscription
- jeudi 9 octobre 2008
- Statut
- Membre
- Dernière intervention
- 1 janvier 2014
9 oct. 2008 à 13:08
Ce procédé marche si le 1er chiffre après la virgule est inférieur a 5, mais si c'est supérieur ça passe directement au chiffre supérieur.
Par exemple 16.3 devient 16 en integer puis 17 avec +1
Mais 16.6 devient 17 en Integer puis 18 avec +1.
Mais j'aimerai que pour les 2 cas la valeur finale soit 17.
Merci
Par exemple 16.3 devient 16 en integer puis 17 avec +1
Mais 16.6 devient 17 en Integer puis 18 avec +1.
Mais j'aimerai que pour les 2 cas la valeur finale soit 17.
Merci
eriiic
Modifié par eriiic le 1/09/2011 à 23:29
- Messages postés
- 24430
- Date d'inscription
- mardi 11 septembre 2007
- Statut
- Contributeur
- Dernière intervention
- 11 août 2022
Modifié par eriiic le 1/09/2011 à 23:29
Bonsoir,
en supposant que tes nombres soient toujours positifs :
=-Int(-i)
eric
edit : je viens de voir la date...
en supposant que tes nombres soient toujours positifs :
=-Int(-i)
eric
edit : je viens de voir la date...
If (value * 10 - CInt(value) * 10) <> 0 then
value = CInt(value) + 1
End If
... Ok c est pas super beau, mais sa a le mérite d être fonctionnel ^^'
value = CInt(value) + 1
End If
... Ok c est pas super beau, mais sa a le mérite d être fonctionnel ^^'
Bonjour !
Je n'ai pas l'habitude d'écrire sur les forums mais j'aime partager les débuts de solutions que je monte tant bien que mal :).
J'ai eu le même problème, c'est peut-être pas la meilleure solution mais voici mon code :
A mettre dans un module :
A mettre dans "Feuil1" :
Je n'ai pas l'habitude d'écrire sur les forums mais j'aime partager les débuts de solutions que je monte tant bien que mal :).
J'ai eu le même problème, c'est peut-être pas la meilleure solution mais voici mon code :
A mettre dans un module :
Sub test() c = Selection.Row d = Selection.Column Range("E5:I5").Select x = Selection.Columns.Count Range("E5").Select For y = 1 To x a = Selection.Value If a = Int(a) Then Selection.Value = a Else b = Int(a) If (a - b) > 0 Then a = Int(a) + 1 Selection.Value = a End If End If a = "" ActiveCell.Offset(0, 1).Select Next Cells(c, d).Select End Sub
A mettre dans "Feuil1" :
Private Sub Worksheet_SelectionChange(ByVal Target As Range) Application.ScreenUpdating = False Application.EnableEvents = False If Not Intersect(Target, Range("A1:Z65536")) Is Nothing Then Call test End If Application.ScreenUpdating = True Application.EnableEvents = True End Sub
en regardant si ton arrondit est strictement inférieur à ton calcul non arrondit je pense que tu aura un résultat sûr:
i = Round((v-2 / 999))
If i < ((v - 2) / 999) Then
i = i + 1
End If
i = Round((v-2 / 999))
If i < ((v - 2) / 999) Then
i = i + 1
End If
En VBA, ceci fonctionne :
If ((Value - Int(Value)) = 0) Then
res = Int(Value)
Else
res = Int(Value) + 1
End If
If ((Value - Int(Value)) = 0) Then
res = Int(Value)
Else
res = Int(Value) + 1
End If
eriiic
14 déc. 2012 à 13:06
- Messages postés
- 24430
- Date d'inscription
- mardi 11 septembre 2007
- Statut
- Contributeur
- Dernière intervention
- 11 août 2022
14 déc. 2012 à 13:06
Bonjour,
Déjà ça date de 2008, il a dû trouver. Merci déviter de déterrer les vieux sujets.
En plus c'est faux, 4 te retourne 5...
eric
Déjà ça date de 2008, il a dû trouver. Merci déviter de déterrer les vieux sujets.
En plus c'est faux, 4 te retourne 5...
eric
Utilise la partie entière à laquelle tu ajoutes 1
b=int(a) + 1
b=int(a) + 1
12 mars 2015 à 15:32
Par exemple pour arrondir à l'entier supérieur :
Application.WorksheetFunction.RoundUp(Valeur,0)