Format date irrégulier

Bonjour,

J'ai parcouru longtemps les sujets du forum sans trouver de solution à mon problème...

Il faut dire que les sujets autour des dates sont très nombreux.

Voilà mon problème :

A partir d'un copier/coller d'un site internet, j'ai conçu un fichier qui liste et met en formes les données copiées.

A l'intérieur de ces données il y a des dates.

Pour avoir un format Français, j'ai inscrit :

Sheets(1).Range("C1").NumberFormat = "mm/dd/yyyy"

Sheets(1).Range("C1").Copy Destination:=Sheets(2).Range("F1")

Jusque là le résultat visuel me satisfait entièrement.

Sauf que quand je fais un filtre automatique ou un TCD, toutes les dates dont le numéro de jour est supérieur à 12, ne sont pas "reconnues" comme des dates.

Jours 1 à 12 : le format date est utilisable (alignement à droite)

Jours 13 à 31 : le format date est défaillant (alignement à gauche)

J'ai tenté de changer les formats "dd/mm/yyyy", "dd/MM/yyyy", j'ai essayé dans tout les sens, j'ai fait pareil avec les cellules de destination.

D'avance merci pour vos réponses.

Maxime

excel2007

Bonjour,

il m'est arrivé la même chose et je crois que c'est une "interférence" entre les feuilles Excel et le format "local" des dates et VBA.

Essayez de mettre en format "MM/DD/YYYY" minuscule ou majuscule... il faut juste demander à VBA d'écrire sur les feuilles avec le format "Anglais" et le résultat sur la feuille correspond au format "local"...

Enfin je raconte peut -être n'importe quoi mais pour mon cas cela à fonctionner, peu m'importe la raison en définitive, l'important pour moi étant le résultat

Oups !!! J'ai répondu à coté de la plaque !!!! Désolé...

@ bientôt

LouReeD

Merci quand même...

Ceci dit, avez un semblant de fichier afin de nous permettre de faire des essais chez nous ?

@ bientôt

LouReeD

Bonsoir,

Personnellement, je n'ai rien trouvé de mieux que d'utiliser ce qu'Excel nous offre "gracieusement"...

Dans le Ruban "Données", tu as une fonction "Convertir"

Dans l'étape 3, tu peux choisir le format qui te convient...

Fais tes essais, et une fois que tu as le résultat ad hoc, tu enregistres via l'enregistreur de macro, et tu as ton code.

Bon courage

Merci,

Pour la fonction convertir, j'ai essayé pas mal de chose format date / texte.

J'ai aussi essayé de découper la date avec les " / " pour la reconstituer avec la fonction DATE mais à chaque fois il y a des irrégularités...

Je n'ai pas réussi à utiliser la fonction Cdate.

Pour le fichier, il faut que je rende anonyme les données personnelles et j'espérai que j'étais passé à coté de quelque chose de tout simple (en vba je débute)....

Re-,

Maxime_39 a écrit :

Pour le fichier, il faut que je rende anonyme les données personnelles

Donc, action....

Voilà le fichier,

J'ai mis trois "clients" à la place du copier/coller (il y en a entre 2000 et 2500 en général).

Le fichier fonction comme suis :

1 bouton "importer" pour réaliser un coller les valeurs (pas besoin ici)

1 bouton "lister" pour mettre sur une ligne les données d'une personne

1 bouton "traiter" pour convertir l'adresse en 3 colonnes voie/CP/Commune

1 bouton "exporter" pour mettre en forme et ventiler vers les collègues qui fait quoi (en fonction de l'onglet répertoire que j'ai quasi supprimé car le fichier est trop gros 1,1 Mo)

J'ai vraiment découvert le vba en mars dernier sur ce forum où j'ai appris petit à petit donc je m'excuse pour la lisibilité des mes macros...

Petit détail : j'ai remarqué en rendant anonyme les données qu'il y a un espace après les dates supérieures à 12 cela vient du copier/coller car je ne m'amuse pas à rajouter un espace...

Mci


Oups !

J'ai oublié de préciser les endroits ou je traite les formats

Module 1 : lignes 19 & 49

Module 4 : ligne 11

Module 5 : ligne 49

Désolé pour l'oubli...

13stocks16.zip (267.40 Ko)

Re-,

Je ne sais pas si tu l'as remarqué, mais il y a un espace après chaque date "non reconnue" comme telle....

Si tu souhaites utiliser un code, la fonction Trim, couplée à un CDate devrait le faire...

Bon courage

Edit, voire, un Chercher/Remplacer "espace" par "rien", mais cela risque de supprimer également les espaces des cellules non "date"...

Pour le chercher / remplacer j'avais fait la manip, mais du coup cela m'inverse les dates du genre

le 20/08/2016 passe 08/20/2016 alors que les autres données sont correctes.

Enfin j'ai fait tellement de trucs que je vais partir sur quelque chose que je n'ai pas jamais fait les fonctions trim & Cdate

MERCI

Re,

Du coup je pars sur un traitement "à la source" de ma macro lister avec une fonction isnumeric qui supprime les espace et adapte le format date pour éviter les inversions jours/mois

Dim date_commande as variant

date_commande = cell(1, 3)

If isnuméric(date_commande) = True Then

Sheets(1).Range("C1").NumberFormat = "mm/dd/yyyy"

Else

Sheets(1).Range("C1").Replace What:=" ", Replacement:=""

Sheets(1).Range("C1").NumberFormat = "dd/mm/yyyy"

End If

Ensuite je fais la validation des données type date... Et çà marche !!!

Un grand MERCI à vous deux pour vos idées et remarques qui m'ont permis d'y voir plus clair !

Rechercher des sujets similaires à "format date irregulier"