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

format demandé pour obtenir 12-3456-7890-1234-5678

6 réponses
Avatar
Nico Iannizzi
Bonjour,

Dans une cellule quand je tape
123456789012345678, je voudrais que s'affiche:
12-3456-7890-1234-5678 et non 12-3456-7890-1234-5000.
Le format que j'ai appliqué est: 00-0000-0000-0000-0000

Quel serait le format personnalisé à appliquer pour que les derniers chiffres
ne deviennent pas 000?

Merci d'avance de votre aide précieuse.

Nico Iannizzi

6 réponses

Avatar
MichDenis
Bonjour Nico,

A ) Tu formates ta colonne en Texte avant d'insérer ta chaîne de caractères

B ) tu copies cette procédure dans le code module de ton classeur :

Par défaut, j'ai utilisé la colonne C comme étant celle recevant les chaînes de caractères...

Tu vas sûrement devoir modifier cette procédure selon tes goûts... Ce n'est qu'un exemple.

'-----------------------------------------
Private Sub Worksheet_Change(ByVal Target As Range)

Dim Rg As Range, Pattern As String, R As String

Pattern = "[0-9][0-9][0-9][0-9][0-9][0-9]" & _
"[0-9][0-9][0-9][0-9][0-9][0-9]" & _
"[0-9][0-9][0-9][0-9][0-9][0-9]"

'Choisis ici la colonne en remplaçant C:C par
'celle de ton choix
Set Rg = Intersect(Target, Range("C:C"))

Application.EnableEvents = False
If Not Rg Is Nothing Then
For Each c In Rg
If c <> "" Then
R = Replace(c.Value, "-", "")
If R Like Pattern Then
c.Value = Left(R, 2) & "-" & Mid(R, 3, 4) _
& "-" & Mid(R, 7, 4) & "-" & Mid(R, 11, 4) _
& "-" & Mid(R, 15, 4)
c.Interior.ColorIndex = xlNone
c.Font.ColorIndex = xlAutomatic
Else
c.Interior.Color = vbRed
c.Font.Color = vbWhite
MsgBox "la saisie du numéro de sécurité " & _
"sociale est inexacte", vbInformation + vbOKOnly _
, Application.UserName
End If
Else
c.Interior.ColorIndex = xlNone
c.Font.ColorIndex = xlAutomatic
End If
Next
End If
Application.EnableEvents = True

End Sub
'-----------------------------------------


Salutations!









"Nico Iannizzi" a écrit dans le message de news:

Bonjour,

Dans une cellule quand je tape
123456789012345678, je voudrais que s'affiche:
12-3456-7890-1234-5678 et non 12-3456-7890-1234-5000.
Le format que j'ai appliqué est: 00-0000-0000-0000-0000

Quel serait le format personnalisé à appliquer pour que les derniers chiffres
ne deviennent pas 000?

Merci d'avance de votre aide précieuse.

Nico Iannizzi
Avatar
Nico Iannizzi
Michel,

Mille fois Merci pour ton aide, t'es un as..........ton code fait l'affaire!

Salutations

Nico Iannizzi
Avatar
AV
Pour une saisie de 18 chifffres en colonne A (à adapter)
Dans le module de la feuille :

Private Sub Worksheet_Change(ByVal zz As Range)
If Len(zz) <> 18 Or zz.Column <> 1 Then Exit Sub
x1 = Left(zz, 2): x2 = Mid(zz, 3, 4): x3 = Mid(zz, 7, 4)
x4 = Mid(zz, 11, 4): x5 = Right(zz, 4)
Application.EnableEvents = False
zz = x1 & "-" & x2 & "-" & x3 & "-" & x4 & "-" & x5
Application.EnableEvents = True
End Sub

AV
Avatar
AV
.......ton code fait l'affaire!


Ben pas chez moi (par rapport au résultat attendu..)
mais bon.....

AV

Avatar
Nico Iannizzi
Bonjour AV,

Si ,si , ce code fait bien l'affaire (par rapport au résultat attendu..)

Salutations

Nico Iannizzi


.......ton code fait l'affaire!


Ben pas chez moi (par rapport au résultat attendu..)
mais bon.....

AV






Avatar
Nico Iannizzi
Rebonjour AV,

Ton code fait l'affaire aussi.

Ce que le code de MichDenis gère en plus cest le nombre des frappes qui sont
inférieures ou supérieures à 18 caractères en avertissant l'utilisateur par
une boîte de message et en mettant en rouge le fond de la cellule.

Merci d'avoir annexé ton code qui m'a été très instructif tout comme celui
de MichDenis.

T'es un as aussi ;-)

Meilleures salutations

Nico Iannizzi


Pour une saisie de 18 chifffres en colonne A (à adapter)
Dans le module de la feuille :

Private Sub Worksheet_Change(ByVal zz As Range)
If Len(zz) <> 18 Or zz.Column <> 1 Then Exit Sub
x1 = Left(zz, 2): x2 = Mid(zz, 3, 4): x3 = Mid(zz, 7, 4)
x4 = Mid(zz, 11, 4): x5 = Right(zz, 4)
Application.EnableEvents = False
zz = x1 & "-" & x2 & "-" & x3 & "-" & x4 & "-" & x5
Application.EnableEvents = True
End Sub

AV