Arrondi sup

bonjour as tous

avant tout je vous présente mes meilleurs voeux pour 2019.

j'ai un bug ...

je souhaite transformer une fonction arrondi sup en vba.

j'ai fait un test.

si j'écrie :

[quote]

Cells(21, 17).Value = "=ROUNDUP(RC[-11]+20,-1)"

[quote]

j'obtiens le résultat escompté mais ça m'écrie la fonction dans la cellule

j'ai essayé çà

[quote]

Cells(21, 17).Value = Formula = "=ROUNDUP(RC[-11]+20,-1)"

le reste du sujet

dans la cellule ça me renvoie Faux

quelqu'un aurait il la solution

merci d'avance

philippe

Bonjour,

Quand tu mets : Cells(21, 17).Value = "=ROUNDUP(RC[-11]+20,-1)"

VBA exécute : la valeur de la cellule est égale au texte "=ROUNDUP(RC[-11]+20,-1)"

et quand tu mets : Cells(21, 17).Value = Formula = "=ROUNDUP(RC[-11]+20,-1)"

Je pense que VBA fait un test : la valeur de la cellule est égale au résultat du test "est ce que "=ROUNDUP(RC[-11]+20,-1)" est égal à la variable Formula (qui n'a pas été déclarée et qui donc est vide), comme tu envoies du texte qui n'est pas vide, le teste renvoie Faux, valeur qui est ensuite affectée à la cellule.

Toi tu veux affecter une formule à la cellule qui s'écrit : "=ROUNDUP(RC[-11]+20,-1)" Qui est une formule relative (de type R1C1 : Row 1, Column 1).

Tu utiliseras donc cette ligne d'instruction: Cells(21, 17).FormulaR1C1 = "=ROUNDUP(RC[-11]+20,-1)"

Qui se lit : la formule de type R1C1 de la cellule est "=ROUNDUP(RC[-11]+20,-1)"

J'ai testé chez moi et ça marche, je te laisse voir de ton côté avec ce code.

Bonne journée

Bonjour,

Range("S17").FormulaLocal = "=ARRONDI.SUP(H17+20;-1)"

Pourquoi ne pas utiliser la saisie de formule excel habituelle au lieu de l'anglais vba

merci pour vos réponses

mais je n'arrive pas à écrire mon vba comme je le souhaite

donc je vais essayer de mieux m'expliquer et j'ai fait un petit fichier de test

j'ai la formule en j3 = ARRONDI.SUP(E3 + 20;-1) &"*"& ARRONDI.SUP((F3*2)+20;-1) & GAUCHE(K3;3)

et je veux écrire ca dans une boucle vba

Sub test()

Dim ligne As String

ligne = 3

Do While Cells(ligne, 1).Value <> ""

Cells(ligne, 10).value = ROUNDUP(cells(ligne,5).value+20,-1) &"*"& ROUNDUP((cells(ligne,6).value*2)+20,-1) & left (cells(ligne,11).value,3)

ligne = ligne + 1

Loop

End Sub

si j'exécute la macro j'ai un message d'erreur voir la copie dans le fichier

merci de votre aide

Bonsoir à tous,

Essayez ceci :

Sub test()
Dim ligne As String
ligne = 3
Do While Cells(ligne, 1).Value <> ""
  With Application.WorksheetFunction
    Cells(ligne, 10) = .RoundUp(Cells(ligne, "e") + 20, -1) & "*" & .RoundUp(Cells(ligne, "f") * 2 + 20, -1) & Left(Cells(ligne, "k"), 3)
  End With
  ligne = ligne + 1
Loop
End Sub

Bonjour à tous,

Au lieu de RoundUp, utilise plutôt WorksheetFunction.Ceiling

Pierre

Pierre56 et Mapoire

Merci pour vos réponses.

ça à l'air de fonctionner sur mon fichier test.

je le mettrais en application demain au bureau

cordialement

philippe

Rechercher des sujets similaires à "arrondi sup"