Format de Date
Bonjour,
J'ai un tableau à faire remplir et dans l'une des cellules je dois mettre un format de Date mm/dd/yyyy. Jusque là aucun problème, ma date se modifie dans le format voulu. Par contre, quand je veux saisir une date, je ne peux pas la saisir de cette façon (ex: 03/19/2018) car il me met la date en "Texte" et non en date.
J'ai trouver une demi solution à mon problème avec une VBA partielle qui modifie ma date :
"For Each Cell In Selection
If IsDate(Cell.Value) Then
Cell.Value = DateValue(Cell.Value)
End If
Next Cell "
Par contre, je dois activer "manuellement" chaque fois la macro pour qu'elle convertisse ma cellule
J'aimerais qu'au moment où une date est entrée, il soit possible de la saisir de la façon suivante : mm/dd/yyyy et qu'elle s'affiche comme une date et en format mm/dd/yyyy.
Merci de votre aide
Bonne journée
Bonjour,
Je ne sais pas exactement comment est écrite ta macro mais as-tu regardé du côté des évènements de la feuille, et notamment Worksheet_Change ? Ainsi lorsque le Target de Worksheet_Change évolue, si la valeur entrée est une date, il effectue automatiquement ta macro.
Cordialement,
Sha'
Bonjour,
je dois mettre un format de Date mm/dd/yyyy. Jusque là aucun problème, ma date se modifie dans le format voulu.
Ah bon ?
Quand tu saisis 01/04/2018, comme tu veux saisir le mois en premier c'est le 4 janvier que tu veux.
Et quelle est ta date avec ton format dans la cellule : 01/04/2018 qui s'affiche 04/01/2018. Autrement dit un beau poisson d'avril.
Toutes les dates sont mal interprétées, à la limite les seules bonnes sont celles restées en texte.
L'ensemble peut être corrigé par une macro mais je pense que ta manière de faire est risquée, ça demande une attention de tous les instants.
Est-ce que ça ne serait pas mieux de saisir les dates conformément à ce qui est défini dans les paramètre régionaux : jj/mm/aaaa ?
eric
Bonjour Eric,
Je te joint un fichier pour clarifier ma situation. Je comprends qu'il serait plus simple de rester en dd/mm/yyyy, mais dans ma situation, on utilise un logiciel de réservation américain, donc programmé en mm/dd/yyyy. Pour simplifier la vie de ceux qui vont remplir le fichier, je voulais mettre la date mm/dd/yyyy.
Bonjour Sharney,
J'ai regardé un peu de ce côté, mais j'ai été incapable (Mon VBA est très basic) de joindre les 2 dans une macro
Edit :
Voici ma VBA qui ne fonctionne pas
Private Sub Worksheet_Change(ByVal Target As Range)
Dim KeyCells As Range
Set KeyCells = Range("C1:C5000")
If Not Application.Intersect(KeyCells, Range(Target.Address)) _
Is Nothing Then
Cell.Value = DateValue(Cell.Value) ' erreur survient, pas d'objet (#424)
End If
End SubMerci de votre aide
Bonjour,
On est bien d'accord que tu as excel et windows installés en français ?
Si oui ça ne retire rien à ce que j'ai écrit.
Il faut également traiter les dates que tu trouves 'correctement interprétées'. Elles ont jour/mois inversés.
A mettre dans le module de la feuille :
Private Sub Worksheet_Change(ByVal Target As Range)
Dim tmp
If Target.Column <> 8 Or Target.Row < 3 Then Exit Sub
If IsNumeric(Target.Value2) Then
tmp = Split(Target.Value, "/")
Else
tmp = Split(Target.Value2, "/")
End If
Application.EnableEvents = False
If UBound(tmp) = 2 And tmp(0) < 13 Then
Target = DateSerial(tmp(2), tmp(0), tmp(1))
Else
Target.Value = CVErr(xlErrNum)
End If
Application.EnableEvents = True
End SubLa correction se fait à la saisie.
Contrôle supplémentaire : si le le 1er nombre (mois) est >12 alors => #NOMBRE!
Idem si je ne trouve pas 2 "/" ou une date interprétée.
eric
eric
Salut Éric,
Wow, c'est super merci beaucoup !
Je comprends en partie ton code, je vais prendre le temps de le décortiquer plus en profondeur.
Mais vraiment Merci