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

  • Initiateur de la discussion Initiateur de la discussion SOYA
  • 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 !

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 !
 
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:
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 !"............. 😀

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:
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+
 
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.
 
- 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
Retour