Faire l'arrondi supérieur;0 dans une macro

49rosa.xlsm (20.72 Ko)

Bonjour,

Je vous adresse un fichier dans lequel je souhaiterais faire l'arrondi supérieur;0 dans une macro.

Je vous en remercie.

Feever

Salut,

Voici un exemple d'arrondi au chiffre entier supérieur

Range("G1") = Application.WorksheetFunction.RoundUp(Range("G2"), 0)

Cordialement.

Je te remercie pour ta réponse, mais ça ne fonctionne pas dans ma macro

Peux-tu me fournir le fichier dans lequel tu as placé cette nouvelle macro ?

80rosa.xlsm (20.74 Ko)

Voici le fichier où j'ai fait la modif.

Je ne connais pas la fonction IIf et n'ai pas trop le temps de l'étudier maintenant, il est donc difficile pour moi de modifier ton code dans l'immédiat.

Par contre je peux te dire que la fonction ROUNDUP ne fonctionne que si tu l'utilises exactement selon mon exemple, c'est à dire

Application.WorksheetFunction.RoundUp( VALEUR A ARRONDIR, 0)

Si jamais tu ne t'en sors pas, fais-le-moi savoir et j'étudie ton fichier ce weekend. Merci alors de mindiquer avec des chiffres un exemple du calcul qu'effectue par exemple ta ligne Cel = IIf(Cel.Offset(0, 1) <> "", WorksheetFunction.RoundUp(0)((Cel.Offset(0, 1) * CoefFo), 2) + Cel.Offset(0, 2) * TauxHoraire, "") et indique-moi le résultat que tu obtiens avec ça.

Cordialement.

Je fais faire un exemple avec la formule Excel, je te l'envoie.


70rosa.xlsm (20.31 Ko)

Voici le fichier avec quelques explications et les formules Excel

Cordialement

Salut,

Ta demande est on ne peut plus embrouillée.

Tu as des informations un peu partout (dans tes codes VBA, dans ton fichier Excel, sur ton fil), mais aucune information précise.

Dans ton fil tu indiques que tu as placé des formules, mais tu ne dis pas dans quelles cellules. Les seules cellules que j’ai trouvées qui comportent des formules sont les cellules O3 et O6, mais ça ne semble pas correspondre à ce que tu désires.

J’ai alors compris que tu désirais pour chacune des lignes :

  • en colonne G, la valeur de la cellule correspondante de la colonne I * M5 * M6
  • en colonne H, la valeur de la cellule correspondante de la colonne G * la valeur de la cellule correspondante de la colonne F
  • en colonne I, la valeur de la cellule correspondante de la colonne J * M3 plus M4 * la valeur de la cellule correspondante de la colonne K.
et tout ça à l’arrondi supérieur.

Si c’est bien ça, la macro placée derrière le bouton mis en place devrait résoudre ton problème.

A te relire.

175rosa-v1.xlsm (27.25 Ko)

Bonjour,

C'est remarquable, je te remercie.

Feever.

Bonjour à tous,

J'ai bcp recherché sur le net (forums et tuto VBA excel) pour solutionner mon problème, mais ce sujet semble en être le plus proche sans toutefois m'aider à le solutionner...

Dans une macro VBA avec des boucles qui interagit avec la feuille excel (je m'aide de VBA pour effectuer des calculs et remplir la feuille Excel), j'ai une ligne qui doit remplir une cas de la feuille excel, et où je voudrais que la formule soit l'arrondi supérieur d'une petite formule toute simple. Je veux aussi que ça se mette à jour quand les valeurs dans les autres cases varient, c'est pour ça que dans ma case je veux bel et bien une formule fonction des autres....

J'ai tenté un tout simple :

Range("L15").Value = "=ARRONDI.SUP(D15*$K15*L13/1000;1)"

Mais là c'est VBA qui n'aime pas ce code et ne veut pas me l'écrire bêtement dans la case voulue

Et si j'essaye les différentes solutions trouvées pour faire l'arrondi directement dans VBA (ce qui je pense ne peut pas marcher pour mon cas, mais j'ai quand même essayé...)

Range("L15").Value = "=Application.WorksheetFunction.RoundUp((D15*$K15*L13/1000;1)"

Là c'est Excel qui n'accepte pas ce code dans la cellule car il ne connait pas cette fonction je pense....

Bref j'ai un petit problème là.... Qqn aurait une idée lumineuse ?

Salut

La prochaine fois ouvre ton propre fil ; c'est un peu par hasard que j'ai vu ta demande accolée au fil d'un autre.

Voici ton code :

Range("L15").FormulaR1C1 = "=ROUNDUP(RC[-8]*RC11*R[-2]C/1000,1)"

Cordialement.

Bonjour,

il faut les fonctions en anglais, mais également le séparateur de liste qui est la , chez eux.

Et c'est .formula (ou .formulaLocal si tu veux l'écrire en français). De plus tu n'étais pas bon en compte des parenthèses.

Ce n'était pas près de fonctionner

Range("L15").Formula = "=RoundUp(D15*$K15*L13/1000,1)"

La prochaine fois met-toi en enregistrement de macro et re-valide ta fonction sur feuille.

Tu auras la traduction. Au format L1C1, à toi de voir si tu traduits en A1 ou non.

Si tu dois l'inscrire en plusieurs endroit je te conseille de rester en R1C1 sinon il faudra que tu recalcules D15, K15, etc et que tu refabrique la chaine. Ca sera avec .FormulaR1C1 ou FormulaR1C1Local

Sinon tu peux écrire plusieurs lignes d'un coup :

Range("L15:L50").Formula = "=RoundUp(D15*$K15*L13/1000,1)"

eric

Oh ben j,'etais sur d'avoir testé le ROUNDUP, mais pas avec le systeme RC, c'est surement ça qui change tout !!

En tous cas au final ça marche avec ce type de code, que j'ai ensuite adapté à mon besoin :

Range("L15").FormulaR1C1 = "=ROUNDUP(RC[-8]*RC11*R[-2]C/1000,1)"

Merci bcp pour vos aides, Yvouille et Eriiic !!!

P.S Ok je créerai mon propre fil pour ma prochaine question (ça va pas tarder !!), mais d'habitude sur les forums quand on pose une question qui a plus ou moins un rapport avec un autre fil, on me dit de me remettre dans le fil d'origine^^

Rechercher des sujets similaires à "arrondi superieur macro"