Masque de saisie dans un UserForm Excel
Bonjour le forum,
Je travaille actuellement sur un Formulaire sous Excel (UserForme en VBA) et je bloque sur certains masques de saisie :
1°) A partir du nom du salarié, la macro entre divers renseignements, dont le numéro de Sécurité Sociale. Je souhaite que celui-ci soit correctement formaté dans la cellule, car il apparaît sous forme d'une suite de chiffre.
J'ai utilisé l'enregistreur de macro pour voir comment Excel réagit, puis j'ai entré le code suivant :
Code:
1 2 3 4
| Private Sub NIR_Change()
NIR.Value = Format(NIR.Value, "[>=3000000000000]#"" ""##"" ""##"" ""##"" ""###"" ""###"" | ""##;#"" ""##"" ""##"" ""##"" ""###"" ""###")
End Sub |
Le format n'est pas le bon : avec un N° de Sécurité Sociale qui serait 1 85 12 08 123 456|78
J'obtiens : 1 71 12 081 234 | 56
Plus simplement, j'ai essayé aussi :
Code:
1 2 3 4 5
|
Private Sub NIR_Change()
NIR.Value = Format(NIR.Value, "0 00 00 00 000 000|00")
End Sub |
Là, j'obtiens : 0 01 85 12 081 234|56
Bref, je tourne un peu en rond !
2°) Pour des horaires de travail, au format 39:00:00 dans ma base Excel, j'ai saisi le masque suivant :
Code:
1 2 3
| Private Sub Horaire_Change()
Horaire.Value = Format(Horaire.Value, "hh:mm:ss")
End Sub |
Là, le masque est correct, mais j'obtiens "00:00:00", alors que la valeur correspondante de la base Excel est bien de 39:00:00.
3°) Enfin, j'ai concaténé le code postal et la ville de domicile du salarié, directement dans l'instruction suivante :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17
| Private Sub Identité_Change()
With Sheets("Base Agents")
NumLigne = Me.Identité.ListIndex + 5
Me.Coef.Value = .Cells(NumLigne, 19).Value
Me.Serv.Value = .Cells(NumLigne, 51).Value
Me.CP_Ville.Value = .Cells(NumLigne, 12).Value & " " & .Cells(NumLigne, 13).Value
Me.Cptc.Value = .Cells(NumLigne, 21).Value
Me.Date_entrée.Value = .Cells(NumLigne, 27).Value
Me.Emploi.Value = .Cells(NumLigne, 14).Value
Me.Exp.Value = .Cells(NumLigne, 20).Value
Me.Horaire.Value = .Cells(NumLigne, 22).Value
Me.N°_agent.Value = .Cells(NumLigne, 1).Value
Me.Domiciliation.Value = .Cells(NumLigne, 52).Value
Me.NIR.Value = .Cells(NumLigne, 2).Value
Me.Adresse.Value = .Cells(NumLigne, 6).Value & " " & Cells(NumLigne, 7).Value
End With
End Sub |
Or, le problème se pose pour les départements inférieurs à 10 : j'obtiens "3000 MOULINS" au lieu de "03000 MOULINS".
Si quelqu'un passe par là et me trouve une solution sur l'un ou l'autre de ces points, ça me débloquerait pas mal !
Merci d'avance.
Cordialement.