Formule complète ?

Le
SylVBA
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)=10;(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
Vidéos High-Tech et Jeu Vidéo
Téléchargements
Vos réponses
Gagnez chaque mois un abonnement Premium avec GNT : Inscrivez-vous !
Trier par : date / pertinence
Sam
Le #21404921
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"
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
SylVBA
Le #21405051
Merci Sam,

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

Bonne soirée

Syl VBA
Jacky
Le #21405871
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"
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
Modeste
Le #21406021
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
SylVBA
Le #21407871
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
Publicité
Poster une réponse
Anonyme