NOM Prénom et dates
Bonjour,
Je reviens vers vous pour deux problèmes : je pensais que le premier était résolu mais en fait j'avais fait deux codes pour chaque cellule et cela ne marche pas.
Problème 1:
J'ai 2 colonnes ( 1 concernant les noms et la seconde concernant les prénoms)
Je souhaiterais que peu importe le mode saisie ( majuscule ou minuscule) que la première colonne apparaisse en MAJUSCULE et dans la seconde que le prénom apparaisse avec la première lettre seulement en Majuscule.
Problème 2
Est-il possible de saisir pour la date 10072017 et que cela apparaisse en 10/07/2017
merci pour votre dévouement
Bonjour
Ne serait-il pas plus simple de continuer dans le même fil https://forum.excel-pratique.com/post553756.html#p553756 ?
Bonjour le fil, bonjour le forum,
@Precisium,
Pour la date c'est plus complexe. D'abord si tu tapes dans Excel 01022017 tu verras que le premier zéro disparaît, à moins que la cellule ne soit au format texte... Ensuite le code que je te propose ne va fonctionner que si tu tapes toujours :
2 digit pour les jour [01, 09, 15, etc.]
2 digits pour les mois [03,11, etc.]
4 digits pour les années [17 pour 2017 ne fonctionnera pas !].
À partir de là, le code pour la date est un peut plus complexe :
J'ai codé colonne 2 pour le nom, 3 pour le prénom et 4 pour la date. Tu adapteras...
Le code :
Private TEST As Boolean 'déclare la variable TEST
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
If Target.Column = 4 Then 'condition : colonne 4 (à adapter à ton cas)
If Target.Value = "" Then Target.NumberFormat = "@" 'impose le format texte à la cellule selectionnée si non vide
End If
End Sub
Private Sub Worksheet_Change(ByVal Target As Range)
Dim J As String 'déclare la variable J (Jour)
Dim M As String 'déclare la variable M (Mois)
Dim A As String 'déclare la variable A (Année)
Dim D As Long 'déclare la variable D (Date en entier long)
If TEST = True Then Exit Sub 'si TEST est [Vrai], sort de la procédure
If Target.Column = 2 Then TEST = True: Target.Value = UCase(Target.Value): TEST = False 'nom (colonne 2 à adapter à ton cas)
If Target.Column = 3 Then TEST = True: Target.Value = Application.WorksheetFunction.Proper(Target.Value): TEST = False 'prenom (colonne 3 à adapter à ton cas)
If Target.Column = 4 Then 'condition : colonne 4 (à adapter à ton cas)
If Target.Value = "" Then Exit Sub 'si la cellule est effacée, sort de la procédure
J = Left(Target.Value, 2) 'définit le jour J
M = Mid(Target.Value, 3, 2) 'définit le mois M
A = Right(Target.Value, 4) 'définit l'Année A
D = DateSerial(A, M, J) 'définit la date D
TEST = True 'définit la variable TEST = [vrai]
Target.Value = D 'renvoie la date dans D (relance la procédure Change d'où la variable TEST)
TEST = False
Target.NumberFormat = "dd/mm/yyyy" 'impose la format date à la cellule modifiée
End If 'fin de la condition
End Sub