• Initiateur de la discussion Initiateur de la discussion Lipadec
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

Lipadec

XLDnaute Occasionnel
Bonjour le Forum

J'ai beau essayé plusieures manières pour formater des cellules, mais je ne suis pas arrivé.
Je veux écrire des nombres directement dans des cellules, mais à contition d'avoir le nombre écrit arrondi.sup - exemple :
si j'écris 10734,12 je voudrai voir écrit 10740,00
c-à-dire le nombre arrondi avec cette formule: =ARRONDI.SUP(10734,12;-1)
Pouvez-vous m'aider?
Avec tous mes remerciements

Lipadec
 
Re : Format de cellules

Bonjour Lipadec, le forum,

Il faut une macro.

A placer dans le code de la feuille, et à adapter au besoin :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Not IsNumeric(Target) Then Exit Sub
Application.EnableEvents = False
Target = Application.RoundUp(Target, -1)
Application.EnableEvents = True
End Sub

A+
 
Dernière édition:
Re : Format de cellules

Bonsoir tout le monde

Merci à job75 et à JHA pour vos réponses
Le format que tu m'as donné, JHA donne une bonne réponse, mais il n'arrondit qu'à l'unité. Moi je veux arrondir à la dizaine de l'unité
exemple: 1254.32 ----> 1255.00
Merci pour l'effort

J'attends vos réponses

Merci

Lipadec
 
Re : Format de cellules

Bonsoir Lipadec, job75, JHA,

Tu ne peux le faire par formule donc il ne te reste que la solution de job75 qui fonctionne très bien pour ton premier exemple qui parle d'arrondi à la dizaine supérieure.

Or, dans ton second exemple, tu parles d'arrondi supérieur. Il faut que tu choisisses.

Si c'est le second, il suffit de remplacer :

Target = Application.RoundUp(Target, -1), par :

Target = Application.RoundUp(Target, 0)

Bonne nuit.

Jean-Pierre
 
Re : Format de cellules

Bonjour tout le monde

Je remercie les utilisateurs de ce Forum pour leur aide et leurs bonnes explications. Pour Jean-pierre, si je ne peux appliquer la solution de JHA, je dois donc appliquer celle de job75
Pouvez-vous me dire comment je dois faire, car les cellulles où je dois écrire ces nombres arrondis à la dizaine supérieure sont de Y43 à Y87
Ces pour des déclarations fiscales, et on est obligé de déclarer le montant arrondi à la dizaine
Merci pour votre aide
Bon Week End

Lipadec
 
Re : Format de cellules

Bonsoir le fil,

Pour tenir compte de tes indications de 19h53, remplace le code actuel par celui-ci :

Private Sub Worksheet_Change(ByVal Target As Range)
If Not IsNumeric(Target) Then Exit Sub
If Target.Column <> 25 Then Exit Sub
If Target.Row < 43 Or Target.Row > 87 Then Exit Sub
Application.EnableEvents = False
Target = Application.RoundUp(Target, -1)
Application.EnableEvents = True

End Sub

Bonne soirée.

Jean-Pierre


 
Re : Format de cellules

Bonjour tout le monde et bon Dimanche

Merci à JHA pour ton exemple, j'ai essayé cette methode, mais je dois écrire d'abord le nombre sur une autre cellule, donc ce n'est pas ce que je veux. Merci quand même.

Merci à Job75 qui nous a donné le 1er code, et surtout à jeanpierre qui a affiné et détaillé ce que je veux.
J'ai essayé ton nouveau code, et ça marche à merveille, surtout dans la plage où je veux écrire ces nombres.
Un autre petit problème Jeanpierre, j'ai 12 feuilles (12 mois: jan-fev-mar-mai-.....) je dois écrire tjs ces nombres arrondis sur les mêmes plages
Le code que tu m'as donné et que j'ai placé sur la feuille jan, ne fonctionne que pour cette feuille, et je ne veux pas recopier ce code sur ttes les feuilles. Y a-t-il une solution.
Merci d'avance Jeanpierre et merci une autre fois pour le Forum

Lipadec
 
Re : Format de cellules

Bonjour Lipadec, jeanpierre, le forum,

De retour de vacances, je réponds à la dernière question...

Cette macro est à placer dans le code de ThisWorkbook et s'applique à toutes les feuilles :

Code:
Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal Target As Range)
If Intersect(Target, sh.Range("Y43:Y87")) Is Nothing Or Not IsNumeric(Target) Then Exit Sub
Application.EnableEvents = False
Target = Application.RoundUp(Target, -1)
Application.EnableEvents = True
End Sub

Edition : si l'on veut effacer, peut-être est-il bon d'ajouter la ligne en rouge :

Code:
Private Sub Workbook_SheetChange(ByVal sh As Object, ByVal Target As Range)
If Intersect(Target, sh.Range("Y43:Y87")) Is Nothing Or Not IsNumeric(Target) Then Exit Sub
[COLOR="Red"]If Target = "" Then Exit Sub[/COLOR]
Application.EnableEvents = False
Target = Application.RoundUp(Target, -1)
Application.EnableEvents = True
End Sub

A+
 
Dernière édition:
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
16
Affichages
939
  • Question Question
Microsoft 365 Tableau
Réponses
24
Affichages
2 K
Retour