Les Allergies
Alimentaires
Posez votre question Signaler

[VBA / Excel] Arrondir à l'entier supérieur

sfritz 40Messages postés 9 octobre 2008Date d'inscription 21 novembre 2011Dernière intervention - Dernière réponse le 24 févr. 2012 à 11:13
Bonjour,
tout est écrit dans le titre.
j'utilise actuellement une variable en Integer, mais les valeurs sont arrondies au supérieur ou à l'inférieur.
J'aimerai qu'elle soit arrondie uniquement au supérieur, même quand je suis a X,00000001 que ça me mette X+1 comme entier.
Comment faire ça?
Pouvez vous m'aider?
Merci
Lire la suite 

[VBA / Excel] Arrondir à l'entier supérieur »

12 réponses
Réponse
+7
moins plus
Bonjour,

il faut faire int(round(a+0.5))
Tom - 31 août 2010 à 11:42
En fait le int ne sert à rien ici, il suffit donc de round(a+0.5)!
Ajouter un commentaire
Réponse
+3
moins plus
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
Ajouter un commentaire
Réponse
+3
moins plus
Bonjour,

B = Int(X)
If (X - B) > 0 Then
X = Int(X) + 1
End If

C'est basic mais efficace

Bonne suite
Ajouter un commentaire
Réponse
+1
moins plus
Bonjour

Ajoute 0.5 et prends la partie entière
Tom - 31 août 2010 à 11:39
pour 16.3:
int(16.3+0.5)=int(16.8)=16!

il faut faire int(round(a+0.5))
Jul974 - 17 mai 2011 à 08:14
pour 1 :
int(round(1+0,5))=int(round(1,5)=int(2)=2 au lieu de 1.
Ajouter un commentaire
Réponse
+1
moins plus
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:
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)
Ajouter un commentaire
Réponse
+1
moins plus
Bonsoir,

en supposant que tes nombres soient toujours positifs :
=-Int(-i)

eric

edit : je viens de voir la date...
Ajouter un commentaire
Réponse
+0
moins plus
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 :
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
Ajouter un commentaire
Réponse
-4
moins plus
Utilise la partie entière à laquelle tu ajoutes 1

b=int(a) + 1
Jul974 - 17 mai 2011 à 08:09
pour 17:
int(17)+1=17+1=18 au lieu de 17.

La réponse de Toto ne semble pas correcte non plus :
pour 1 :
int(round(1+0,5))=int(round(1,5)=int(2)=2 au lieu de 1.
Ajouter un commentaire
Ce document intitulé « [VBA / Excel] Arrondir à l'entier supérieur » issu de CommentCaMarche (www.commentcamarche.net) est mis à disposition sous les termes de la licence Creative Commons. Vous pouvez copier, modifier des copies de cette page, dans les conditions fixées par la licence, tant que cette note apparaît clairement.
Dossier à la une
Passage au tout numérique : quel coût pour les particuliers ?