IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

Convertir différents formats de dates en un seul standard


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 6
    Par défaut Convertir différents formats de dates en un seul standard
    Bonjour à tous,

    Tout d'abord je tiens à souligner que je suis que très peu familier avec VBA, mais étant curieux de nature, il s'agit d'un langage qui m'intéresse particulièrement et que je souhaiterai un jour maitriser.

    J'en viens donc à mon problème du jour, les dates !
    Je reçois souvent des fichiers de différentes personnes et je dois consolider le tout dans un seul et même fichier. Evidemment, chacun y ajoute des dates avec un format différent. Parmi toutes ces dates, on trouve les formats suivants (pour le mois de juillet par exemple):

    - 04.07.2017
    - 20170704
    - 04/07
    - 04.07.17
    - 07/04

    et pour couronner le tout, certaines de ces cellules sont en format dates et d'autres en format texte. mon but étant d'avoir un code VBA qui permettrait de tout convertir au premier format : 04.07.2017. Pour l'instant je me contente de faire toute cette manœuvre manuellement, ce qui prend plus de temps qu'il n'en faudrait avec un code.
    Je me suis déjà renseigné avec différentes possibilités, notamment avec RegEx sur le forum de stackflow:


    Ou encore la fonction replace, mais je pense qu'elle est moins adaptée ici.
    j'ai essayé de reprendre ces codes et de les réutiliser mais sans succès.

    Si quelqu'un pouvait m'éclairer sur le sujet qu'il n'hésite pas

    Merci beaucoup !

  2. #2
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Bonjour,

    Ton problème est assez complexe...
    Ça devient compliqué de différencier 07.04 et 04.07 sans trop savoir le format original.
    On pourrait boucler toutes les dates et vérifier chaque partie de date pour déterminer si telle ou telle est le jour ou le mois ou l'année, mais ça demeure ardu.

    Est-ce que ce sont toujours les mêmes personnes qui t'envoient ces fichiers avec le même format de dates ?
    Si oui, tu pourrais te créer un genre de table de conversion selon ces personnes.

    Avec l'utilisation de Split et DateSerial, tu pourrais arriver à tes fins, je pense.

  3. #3
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 6
    Par défaut
    Oui je me suis dis que différencier 04.07 et 07.04 allait être quasi impossible. Par rapport à ce qui est des personnes, il semblerait que même pour ça les dates changent en fonction des semaines puisque plusieurs personnes bossent dessus. A la limite éliminer le format 07.04 que je ferai manuellement ne serait pas un problème, tant que le gros du travail serait fait grâce à vba

  4. #4
    Expert confirmé
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Mai 2013
    Messages
    3 609
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : Alimentation

    Informations forums :
    Inscription : Mai 2013
    Messages : 3 609
    Par défaut
    Est-ce que les 5 formats que tu as mis sont vraiment les seuls que tu peux recevoir?
    Autrement, il faudrait que tu parles aux gens pour les discipliner...

  5. #5
    Membre Expert
    Profil pro
    Inscrit en
    Février 2007
    Messages
    2 266
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2007
    Messages : 2 266
    Par défaut
    Bonjour,

    tant qu'à faire pour éviter toute ambiguïté autant essayer de traiter le problème à sa source.
    Tu ne peux pas leur fournir un classeur modèle avec des validations adéquates là où il faut pour fiabiliser les saisies ?
    Ensuite tu verras bien ce qu'il reste à traiter.
    eric

    edit : bon ben on est synchro sur le timing et sur l'idée avec parmi ;-)

  6. #6
    Membre du Club
    Homme Profil pro
    Étudiant
    Inscrit en
    Mai 2013
    Messages
    6
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Mai 2013
    Messages : 6
    Par défaut
    Dans un monde idéal les gens auraient respecté le template envoyé Evidemment il s'agit là d'un monde utopique.
    En fait je pense que les formats que j'avais mentionné sont les seuls utilisés (j'ai rajouté les 2 derniers, par moment on m'envoie des "/" au lieu des ".")
    - 04.07.2017
    - 20170704
    - 04/07
    - 04.07.17
    - 04/07/2017
    - 07/04/2017

    Dans l'un des liens que j'avais publié dans le premier post (forum de stackflow) l'idée du RegEx me plaisait bien, car on pouvait ajouter différentes possibilités au fur et à mesure, sauf que j'ai pas su le réutiliser.
    J'espérais aussi réutiliser ce code pour d'autres usages, notamment en remplaçant les données par la première option uniquement. Par exemple dans une colonne "Titre" avec des entrées comme :
    - Mr.
    - MR
    - Mister
    - M.
    - Mrs.
    - Miss
    - Ms.
    - MRS

    L'idée serait aussi de remplacer toutes les variantes de "monsieur" par "Mr." seulement, toutes les variantes de "madame" par "Mrs." et toutes les variantes de "mademoiselle" par "Miss".

Discussions similaires

  1. Convertir le format de date grégorienne à la date Hijri
    Par Boubou2020 dans le forum Développement
    Réponses: 1
    Dernier message: 21/10/2015, 11h37
  2. convertir la format du date
    Par xzéna dans le forum Débuter
    Réponses: 7
    Dernier message: 16/04/2012, 11h59
  3. Requête avec différents formats de date
    Par Ethan831 dans le forum Requêtes
    Réponses: 6
    Dernier message: 27/04/2010, 23h51
  4. [V6] Convertir un format de date.
    Par cabville dans le forum Deski
    Réponses: 4
    Dernier message: 24/02/2010, 11h57
  5. Réponses: 17
    Dernier message: 07/07/2008, 11h34

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo