: n'afficher les décimale que s'il y en a. [excel][format de cellule] - Logiciels - Windows & Software
Marsh Posté le 30-09-2008 à 08:01:21
Bonjour,
il y a certainement plus simple, mais si tu n'as pas de réponse voici une solution à adapter:
Private Sub Worksheet_Change(ByVal Target As Range)
lim = Range("a65000" ).End(xlUp).Row
For i = 1 To lim
Cells(i, 1).Select
Selection.NumberFormat = "0.00"
If Round(Selection) = Selection Then Selection.NumberFormat = "0"
Next i
End Sub
attention, la boucle se fait sur toutes les cellules à chaque fois que l'on saisit une donnée dans le tableau. Si tu veux ne le faire que pour la cellule en cours, il faut utiliser target:
Private Sub Worksheet_Change(ByVal Target As Range)
target.Select
Selection.NumberFormat = "0.00"
If Round(Selection) = Selection Then Selection.NumberFormat = "0"
End Sub
Marsh Posté le 30-09-2008 à 11:00:25
Format de cellule -> personnalisé -> 0.## (ou 0,## selon la config); tu peut rajotuer des # si tes nombres contiennent plus de chiffres après la virgule.
Par contre je ne sais pas comment ne pas afficher la virgule (ou le point)
Quelques sources :
http://www.ozgrid.com/Excel/CustomFormats.htm
http://itg.unl.edu/resources/docum [...] ormats.pdf
Marsh Posté le 04-05-2009 à 18:01:34
La solution de seniorpapou donne le résultat le plus correct (puisque sans virgule).
Néanmoins, il serait bien de pouvoir n'appliquer cette fonction uniquement sur les cellules qui ont un certain format (style numérique). Sinon, pour peux que la feuille Excel comporte d'autre style de donnée, la fonction va vite renvoyer une erreur.
D'où ma question : comment tester le formatage d'une cellule
If <format cellule = numérique> alors
... code de seniorpapou
sinon
exit
fin
Marsh Posté le 04-05-2009 à 19:46:05
seniorpapou a écrit : Bonjour, |
Bonjour pardon pour la réponse tardive, et merci. C'est toujours d'actualité.
Alors oui, seulement pour les cellules spécifiées. Mais où doijs-je entrer ce code? en passant par les macros?
Marsh Posté le 05-05-2009 à 09:48:36
Pour encoder cette macro, une fois dans Excel (avec ton fichier ouvert), tape sur ALT+F11. Une fenêtre Visual Basic va s'ouvrir.
Là, dans la fenêtre d'exploration de gauche, tu as une arborescence. Double-cliques sur "Sheet1" (ou "Feuille1" si c'est en français), une fenêtre blanche va s'ouvrir comme fenêtre principale.
Colles-y simplement le code de seniorpapou. Attention, il faut soit coller la première solution, soit la deuxième, mais pas les deux (ou alors commenter l'une des deux en rajoutant une apostrophe devant chaque ligne).
Sauve et ferme. Voilà, la macro est d'application pour chaque cellule que tu changeras.
Je l'ai testé, et ça fonctionne très bien, sauf justement que la macro ne fait pas de différence entre une cellule de type numérique ou une autre. Donc si tu rentres par exemple "Y" dans une cellule, comme la macro va s'exécuter pour n'importe quelle cellule en cours, la macro va renvoyer une erreur chaque fois qu'on rentre une valeur non numérique.
Il existe certainement des fonctions de conversions de types pour pouvoir faire des calculs, mais je ne les connais pas et elles sont certainement moins "certaines" que d'utiliser directement les bons types.
Marsh Posté le 05-05-2009 à 17:22:27
Bonsoir,
pour complèter ce qu'à écrit NikoBe, si tu connais le ou les endroits où se trouvent tes données à afficher, on peut te donner la séquence qui teste la ou les colonnes à traiter, et éviter ainsi le soucis des cellues alpha.
Cordialement
Marsh Posté le 05-05-2009 à 22:52:54
Ca devient trop compliqué. En tout cas ça montre à quel point on peut aller loin avec Excel.
Sinon j'ai trouvé une alternative: pour faire disparaître les zéros, je mets manuellement la cellule en format "nombre".
Marsh Posté le 30-09-2008 à 02:35:26
Bonjour,
Comment faire pour choisir un format à deux décimales qui n'affiche pas les "virgule zéro-zéro" à chaque fois qu'on tombe sur un nombre entier? (exemple: 1,00 )
Merci;