OVH Cloud OVH Cloud

Format de cellule

2 réponses
Avatar
HA
Bonjour

j'ai une cellule qui doit être afficher 11608/3 ou 11608/10 je voudrai
saisir 116083 ou 1160810 quel format lui donner

Merci

2 réponses

Avatar
Philippe.R
Bonjour HA,
AMHA, ce que tu demandes n'est pas exactement possible sans usine à gaz (Excel ne pouvant deviner lors
de ta saisie si tu souhaites 1 ou 2 chiffres après /
Si tu acceptes de saisir 1160803 au lieu de 116083, ce format personnalisé fonctionne :

###0"/"0#

--
Amicales Salutations

Retirer A_S_ pour répondre.
XL97 / XL2002
Pour suivre le forum :
news://msnews.microsoft.com/microsoft.public.fr.excel
(Voulez-vous vous abonner ? -> Oui)

"HA" a écrit dans le message de news:ewyhJy1$
Bonjour

j'ai une cellule qui doit être afficher 11608/3 ou 11608/10 je voudrai
saisir 116083 ou 1160810 quel format lui donner

Merci




Avatar
Michel Gaboly
Bonjour,

Le problème est que le format adapté n'est pas le même dans les 2 cas :

00000"/"# ou 00000"/"0 convient pour 11608/3, mais provoque
l'affichage de 116081/0 si on entre 1160810.

Quant au format 00000"/"# ou 00000"/"0, adapté à 1160810, il
aboutit à 01160/83 pour 116083.

Il faut donc un format qui s'adapte au nombre de caractères total.

Pour cela, on peut entrer ce code :

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim c As Range
If Not Intersect(Range("Codes"), Target) Is Nothing Then
For Each c In Intersect(Range("Codes"), Target)
c.NumberFormat = "00000" & """/""" & Application.WorksheetFunction.Rept("0", Len(c) - 5)
Next c
End If
End Sub

dans le module de la feuille concernée, après avoir donné le nom "Codes"
aux cellules auxquelles le format doit s'appliquer.

Ce code probvoquera une erreur si on saisit moins de 5 caractères dans
l'une des cellules concernées, ce que l'on peut gérer ainsi :

Private Sub Worksheet_Change(ByVal Target As Excel.Range)
Dim c As Range
If Not Intersect(Range("Codes"), Target) Is Nothing Then
On Error Resume Next
For Each c In Intersect(Range("Codes"), Target)
c.NumberFormat = "00000" & """/""" & Application.WorksheetFunction.Rept("0", Len(c) - 5)
Next c
On Error GoTo 0
End If
End Sub


Attention, dans les 2 variantes, l'instruction entre "For Each" et
"Next c" doit être sur une seule ligne.


Bonjour

j'ai une cellule qui doit être afficher 11608/3 ou 11608/10 je voudrai
saisir 116083 ou 1160810 quel format lui donner

Merci


--
Cordialement,

Michel Gaboly
http://www.gaboly.com