format demandé pour obtenir 12-3456-7890-1234-5678
6 réponses
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?
'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
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)
'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" <NicoIannizzi@discussions.microsoft.com> a écrit dans le message de news:
50178B9A-1ABB-477B-83C4-DEEDC2CE1EC3@microsoft.com...
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?
'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
Nico Iannizzi
Michel,
Mille fois Merci pour ton aide, t'es un as..........ton code fait l'affaire!
Salutations
Nico Iannizzi
Michel,
Mille fois Merci pour ton aide, t'es un as..........ton code fait l'affaire!
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
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
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
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