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 Sub

Merci de votre aide

8format-date.xlsx (10.78 Ko)

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 Sub

La 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

9format-date.xlsm (16.93 Ko)

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

Rechercher des sujets similaires à "format date"