Format personnalisé : insérer des tirets aux bons endroits selon le nombre saisi

SOYA

XLDnaute Occasionnel
Re-bonjour Forum,

Voilà : dans une cellule, on peut être amené à saisir une référence qui peut se présenter sous différentes formes :

343-0161
344-4881-02
347-2774-20-6

Je voudrais que les utilisateurs n'aient à saisir que "3430161" ou "3472774206" et que les tirets se mettent aux bonnes places. C'est-à-dire, un tiret obligatoire après les 3 premiers chiffres si le code n'a que 7 chiffres, un tiret obligatoire après les 4 suivants si le code a 9 chiffres, le maximum de chiffres étant 10 et ayant pour format l'exemple 3.

J'ai essayé de jouer dans les formats personnalisés avec les ## et les 00, mais j'arrive à définir un format seulement si l'on saisit 7 chiffres par exemple, ou seulement 10, mais pas un mélange des deux...

Est-ce que c'est faisable ?

Merci encore !
 

job75

XLDnaute Barbatruc
Re : Format personnalisé : insérer des tirets aux bons endroits selon le nombre saisi

Re,

Par exemple cette macro dans le code de la feuille (clic droit sur l'onglet et Visualiser le code) :

Code:
Private Sub Worksheet_Change(ByVal Target As Range)
If Intersect(Target, [A1:A1000]) Is Nothing Or Target.Count > 1 Then Exit Sub
If Not IsNumeric(Target) Then Exit Sub
Dim txt, n
txt = Left(Target, 10) '10 chiffres maximum
n = Len(txt)
If n > 9 Then txt = Application.Replace(txt, 10, , "-")
If n > 7 Then txt = Application.Replace(txt, 8, , "-")
If n > 3 Then txt = Application.Replace(txt, 4, , "-")
Target.NumberFormat = "@" 'format texte
Application.EnableEvents = False
Target = txt
Application.EnableEvents = True
End Sub
Plage d'application A1:A1000, à adapter.

A+
 
Dernière édition:

SOYA

XLDnaute Occasionnel
Re : Format personnalisé : insérer des tirets aux bons endroits selon le nombre saisi

Merci Job75, je vais tester cela dès que possible et vous ferai savoir si tout est ok.
Pour le "oui", votre réponse me fait penser à "Vous avez l'heure ?" ..... "Oui !"............. :D

Mais j'en conclus que ce n'était donc pas faisable avec le format personnalisé.


5 minutes plus tard.... :

Job, ça fonctionne très bien ! Merci encore.
 
Dernière édition:

Hippolite

XLDnaute Accro
Re : Format personnalisé : insérer des tirets aux bons endroits selon le nombre saisi

Bonsoir,
On peut le faire apparaître dans la cellule voisine avec la formule :
Code:
=GAUCHE(A1;3) & SI(STXT(A1;4;4)<>""; "-" & STXT(A1;4;4); "") & SI(STXT(A1;8;2)<>""; "-" & STXT(A1;8;2);) & SI(STXT(A1;10;1)<>""; "-" & STXT(A1;10;1); "")
pour une saisie en A1

A+
 

SOYA

XLDnaute Occasionnel
Re : Format personnalisé : insérer des tirets aux bons endroits selon le nombre saisi

Bon matin !
Merci beaucoup Tibo. Votre solution me permet de comprendre davantage le rouages du format personnalisé. Ça fonctionne très bien.
 

Statistiques des forums

Discussions
312 584
Messages
2 089 965
Membres
104 319
dernier inscrit
J-LZ