Twitter iPhone pliant OnePlus 11 PS5 Disney+ Orange Livebox Windows 11

Formule complète ?

5 réponses
Avatar
SylVBA
Bonsoir,

j'ai des r=E9f=E9rence du type xxx-xxxx-xxx
Je souhaite inclure les tirets en dur, car les r=E9f=E9rences sont
actuellement au format nombre sans les tirets

Il y a beaucoup de r=E9f=E9rences commencant par 0 ou par 2 x 0 ou par 3 0
et quelque fois 4 z=E9ros..

type 0651234777 s'affiche 651234777 =3D je souhaite 065-1234-777
type 0015555100 s'affiche 15555100 =3D je souhaite 001-5555-100

J'ai fait une petite formule, mais elle ne donne pas le r=E9sultat s'il
n'y a pas 10 caract=E8rs (les z=E9ros ne sont pas des caract=E8res)

Je peux faire une v=E9rif sur le Nb de r=E9f=E9rences, mais je ne me vois
pas faire des enchainements de SI

=3DSI(NBCAR(A2)=3D10;(GAUCHE(A1;3)&"-"&STXT(A1;4;4)&"-"&DROITE(A1;3));"")

J'ai fait une petite fonction perso, mais je suis sur que l'on peut
faire mieux avec une VRAIE formule de pro

Public Function Syl(C As Range)

Dim Txt As String

If Len(C.Value) <> 10 Then

For i =3D 1 To (10 - Len(C.Value))

Txt =3D Txt & "0"

Next i

End If

If Len(C.Value) =3D 0 Or Len(C.Value) > 10 Then Syl=3D "" Else Syl=3D
Left(Txt & C.Value, 3) & "-" & Mid(Txt & C.Value, 4, 4) & "-" &
Right(Txt & C.Value, 3)

End Function

La fonction est OK, mais je souhaite utiliser une formule d'origine

Avez-vous une id=E9e infaillible ?

je pense avoir une piste avec rep mais pas sur....

Je reste pr=E9sente et =E0 l'=E9coute,

Bonne soir=E9e =E0 tous nos contributeurs

Syl VBA

5 réponses

Avatar
Sam
Bonjour,
pour ces cellules choisis un format personnalisé 000-0000-000

pour le réaliser : Format/Cellule/Personnalisée et tu tapes dans type
000-0000-000

Cordialement
Michel dit "Sam"

"SylVBA" a écrit dans le message de news:

Bonsoir,

j'ai des référence du type xxx-xxxx-xxx
Je souhaite inclure les tirets en dur, car les références sont
actuellement au format nombre sans les tirets

Il y a beaucoup de références commencant par 0 ou par 2 x 0 ou par 3 0
et quelque fois 4 zéros..

type 0651234777 s'affiche 651234777 = je souhaite 065-1234-777
type 0015555100 s'affiche 15555100 = je souhaite 001-5555-100

J'ai fait une petite formule, mais elle ne donne pas le résultat s'il
n'y a pas 10 caractèrs (les zéros ne sont pas des caractères)

Je peux faire une vérif sur le Nb de références, mais je ne me vois
pas faire des enchainements de SI

=SI(NBCAR(A2);(GAUCHE(A1;3)&"-"&STXT(A1;4;4)&"-"&DROITE(A1;3));"")

J'ai fait une petite fonction perso, mais je suis sur que l'on peut
faire mieux avec une VRAIE formule de pro

Public Function Syl(C As Range)

Dim Txt As String

If Len(C.Value) <> 10 Then

For i = 1 To (10 - Len(C.Value))

Txt = Txt & "0"

Next i

End If

If Len(C.Value) = 0 Or Len(C.Value) > 10 Then Syl= "" Else Syl Left(Txt & C.Value, 3) & "-" & Mid(Txt & C.Value, 4, 4) & "-" &
Right(Txt & C.Value, 3)

End Function

La fonction est OK, mais je souhaite utiliser une formule d'origine

Avez-vous une idée infaillible ?

je pense avoir une piste avec rep mais pas sur....

Je reste présente et à l'écoute,

Bonne soirée à tous nos contributeurs

Syl VBA
Avatar
SylVBA
Merci Sam,

J'ultilise cela régulièrement, je souhaite mettre "en dur" les tirets,
pas simplement les voir

Bonne soirée

Syl VBA
Avatar
Jacky
Bonsoir,

Ceci peut-être..
=GAUCHE(REPT(0;10-NBCAR(A1))&A1;3)&"-"&STXT(REPT(0;10-NBCAR(A1))&A1;4;4)&"-"&DROITE(A1;3)

--
Salutations
JJ


"SylVBA" a écrit dans le message de news:

Bonsoir,

j'ai des référence du type xxx-xxxx-xxx
Je souhaite inclure les tirets en dur, car les références sont
actuellement au format nombre sans les tirets

Il y a beaucoup de références commencant par 0 ou par 2 x 0 ou par 3 0
et quelque fois 4 zéros..

type 0651234777 s'affiche 651234777 = je souhaite 065-1234-777
type 0015555100 s'affiche 15555100 = je souhaite 001-5555-100

J'ai fait une petite formule, mais elle ne donne pas le résultat s'il
n'y a pas 10 caractèrs (les zéros ne sont pas des caractères)

Je peux faire une vérif sur le Nb de références, mais je ne me vois
pas faire des enchainements de SI

=SI(NBCAR(A2);(GAUCHE(A1;3)&"-"&STXT(A1;4;4)&"-"&DROITE(A1;3));"")

J'ai fait une petite fonction perso, mais je suis sur que l'on peut
faire mieux avec une VRAIE formule de pro

Public Function Syl(C As Range)

Dim Txt As String

If Len(C.Value) <> 10 Then

For i = 1 To (10 - Len(C.Value))

Txt = Txt & "0"

Next i

End If

If Len(C.Value) = 0 Or Len(C.Value) > 10 Then Syl= "" Else Syl Left(Txt & C.Value, 3) & "-" & Mid(Txt & C.Value, 4, 4) & "-" &
Right(Txt & C.Value, 3)

End Function

La fonction est OK, mais je souhaite utiliser une formule d'origine

Avez-vous une idée infaillible ?

je pense avoir une piste avec rep mais pas sur....

Je reste présente et à l'écoute,

Bonne soirée à tous nos contributeurs

Syl VBA
Avatar
Modeste
Bonsour®

"SylVBA" a écrit
j'ai des référence du type xxx-xxxx-xxx
Je souhaite inclure les tirets en dur, car les références sont
actuellement au format nombre sans les tirets

Il y a beaucoup de références commencant par 0 ou par 2 x 0 ou par 3 0
et quelque fois 4 zéros..

type 0651234777 s'affiche 651234777 = je souhaite 065-1234-777
type 0015555100 s'affiche 15555100 = je souhaite 001-5555-100



en feuille de calcul
=TEXTE(A1;"000-0000-000")
ou

en fonction perso
Function Avec_tirets(Target As Range) As String
Avec_tirets = Format(Target, "000-0000-000")
End Function
Avatar
SylVBA
Merci à Jacky,

C'est parfait, avec la piste REPT, meci à toi

Merci à Modeste,

une fois de plus vous me donnez LA solution, elle est très simple,
bravo (si simple en vba comparé à la mienne ....)
J'opte pour la solution Modeste dans la feuille de calcul..

Mes amitiés à vous 2 et au plaisir de vous lire bientôt

SylVBA