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 :

Recopier et traiter une date


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre à l'essai
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Janvier 2020
    Messages : 5
    Par défaut Recopier et traiter une date
    Hello tout le monde, je débute en VBA et j'ai un problème en apparence simple, mais au final quelques complications me gâchent le plaisir !!
    Je n'ai pas réussi à trouver la version Excel à part "Excel pour Office 365"... C'est ça ?

    J'ai un tableau Excel extrait d'un logiciel de compta, avec une colonne dates.
    Visuellement c'est des dates sous forme 20/08/2019, mais quand on clique dessus on s'aperçoit que dans la cellule, c'est plutôt '20/08/2019.
    Je souhaite de on coté extraire la date dans une colonne à coté sous forme Aout-19.
    Mais c'est bizarre, j'ai testé pas mal de trucs avec VBA mais ça ne fonctionne jamais comme il faut :
    - Si je fais recopier bêtement, par Excel ou VBA, il remet '20/08/2019 et du coup ne veut pas le considérer comme une date
    - Si je fais MsgBox Mid(Range("H" & i), 1), il renvoie 20/08/2019
    - Si je fais Range("I" & i).Value = Mid(Range("H" & i), 1), il remet '20/08/2019, à ceci près que pour les dates inférieures au 10 du mois ça marche.... il zappe le 0 en fait et ça marche.... Mais par contre il les met en format US... Problèmes en perspective
    - J'ai aussi testé de bricoler avec du Excel uniquement : dans la colonne à coté (colonne I), je mets =STXT(H21;1;12). J'ai copié et collé les valeurs dans un coin, ça a supprimé l'apostrophe. Mais en mettant au format date, je suis obligé de rentrer dans chaque cellule pour faire appliquer le format date voulu.... Il y'a plus simple ?
    C'est à ne rien y comprendre !


    Si vous avez des idées pour démêler cette pelote, je suis preneur !

  2. #2
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Il y a peut-être plus simple mais ceci est sûr de fonctionner :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(i, "I").Value = DateSerial(Split(Cells(i, "H"), "/")(2), Split(Cells(i, "H"), "/")(1), Split(Cells(i, "H"), "/")(0))
    C'est la méthode que j'utilise la plupart du temps pour transformer du texte "fausse date" en véritable date et c'est celle qui s'est avérée la plus fiable jusqu'à présent.

  3. #3
    Membre à l'essai
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Janvier 2020
    Messages : 5
    Par défaut
    Yeeeessss ça marche nickel !! Merci :::

  4. #4
    Membre à l'essai
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Janvier 2020
    Messages : 5
    Par défaut Rebelote...
    Désolé, je me rends compte que je suis parti sur le mauvais tableau exporté du logiciel de compta, du coup le bon n'a pas les dates au meme format, et en essayant d'adapter ma macro je me rends compte que je n'ai pas compris le code

    Cette fois les dates ne sont plus sous forme '20/08/2019, mais juste '05/2019.
    Du coup la fonction qui marchait auparavant ne fonctionne plus... J'ai essayé de la bidouillé mais sans succès... Il y'a 3 Split alors qu'il n'y a que 2 / dans la date

    Est ce que tu pourrais l'expliquer stp ?

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(i, "I").Value = DateSerial(Split(Cells(i, "H"), "/")(2), Split(Cells(i, "H"), "/")(1), Split(Cells(i, "H"), "/")(0))
    Merci !

  5. #5
    Expert éminent Avatar de Menhir
    Homme Profil pro
    Ingénieur
    Inscrit en
    Juin 2007
    Messages
    16 037
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Finistère (Bretagne)

    Informations professionnelles :
    Activité : Ingénieur
    Secteur : Industrie

    Informations forums :
    Inscription : Juin 2007
    Messages : 16 037
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(i, "I").Value = DateSerial(Split(Cells(i, "H"), "/")(1), Split(Cells(i, "H"), "/")(0), 1)
    Si tu veux un autre jour que le 1er du mois, change le dernier 1.

  6. #6
    Membre à l'essai
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Janvier 2020
    Messages
    5
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Savoie (Rhône Alpes)

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Janvier 2020
    Messages : 5
    Par défaut
    Ah ouais c'est simple en fait, à ne pas comprendre pourquoi je n'y arrivais pas.... (C'est souvent comme ça )
    Merci !!!

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [AC-2003] Appeler un module pour traiter une date et remplir un champ
    Par ostrich95 dans le forum Modélisation
    Réponses: 5
    Dernier message: 26/03/2014, 12h35
  2. [XL-2003] Extraction et recopie du jour/mois d'une date jour/mois/année
    Par iIncoming dans le forum Excel
    Réponses: 2
    Dernier message: 02/07/2013, 17h54
  3. Traiter une par une les dates contenue dans une cellule
    Par wyzer dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 05/04/2012, 09h20
  4. [Dates] Traiter une date autre que celle du jour
    Par malkie dans le forum Langage
    Réponses: 6
    Dernier message: 02/02/2008, 09h04
  5. Réponses: 3
    Dernier message: 19/04/2002, 00h11

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