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 :

VBA - Fromat de dates lors d'un copier-coller [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    -
    Inscrit en
    Juillet 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : -

    Informations forums :
    Inscription : Juillet 2014
    Messages : 45
    Par défaut VBA - Fromat de dates lors d'un copier-coller
    Bonjour à tous,

    J'ai un problème tout bête lors d'un copier-coller via vba, mais qui devrait parler à bon nombre d'entre vous : la reconnaissance du format de date.

    Voilà le code :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("XXXXXX").Range("H" & l & ":H" & l + Fin - Debut).Value = Sheets("YYYYYYY").Range("W" & Debut & ":W" & Fin).Value
    Les données sources sont en date française, format texte, et la copie s'effectue bien, mais quand on y regarde de plus près, les dates sont interprétées comme des dates anglo-saxonnes lorsque c'est possible (jour inférieur à 12) et comme du texte dans les autres cas.

    (J'ai mis un moment à piger le truc, mais comme les interprétation avaient l'air d'être faite au hasard, et que le hasard n'a pas sa place en informatique basique, je me suis dit que c'était autre chose…)

    Un [F2] ou [double-click] sur la cellule et [ENTREE] et l'interprétation en date française se fait. Mais à 12 000 lignes, c'est chiant...

    L'interprétation est indispensable, car j'ai besoin d'un regroupement par date dans un TCD.

    J'ai essayé de forcer le format dans la feuille de destination, et de ruser dans la macro (à l'aune de ce que j'ai pu lire ça et là sur le forum, mais sans vraiment le comprendre), mais sans succès. Par exemple :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    For Each cell In Sheets("XXXXXXXX").Range("H" & l & ":H" & l + Fin - Debut)
        cell.NumberFormat = "dd/mm/yyyy;@"
    Next
    Du coup, j'ai bien en tête un ou deux trucs qui pourrait marcher, soit en utilisant une boucle qui irait chercher les différentes séries de caractères pour les jours, mois et années et reconstruisant la date, soit en ajoutant une colonne avec formule dans le fichier destination, mais je trouve que ce n'est pas très propre (et je suis un esthète ) et surtout, je ne suis même pas sûr que ça résolve le problème d'interprétation.

    Est ce que vous auriez une idée ?

    Merci.


    Jodko.

  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
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("YYYYYYY").Range("W" & Debut & ":W" & Fin).Copy Sheets("XXXXXX").Range("H" & l)

  3. #3
    Membre averti
    Homme Profil pro
    -
    Inscrit en
    Juillet 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : -

    Informations forums :
    Inscription : Juillet 2014
    Messages : 45
    Par défaut
    Merci pour la réponse. J'ai testé, et du coup, l'ensemble des dates sont en "Texte" et pas en "Date" (normal puisque cette syntaxe recopie l'ensemble des formats de cellule aussi). Ca a le mérite d'être homogène, mais c'est l'opposé de ce que je cherche…


    Jodko.

  4. #4
    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
    Citation Envoyé par Jodko Voir le message
    Merci pour la réponse. J'ai testé, et du coup, l'ensemble des dates sont en "Texte" et pas en "Date" (normal puisque cette syntaxe recopie l'ensemble des formats de cellule aussi). Ca a le mérite d'être homogène, mais c'est l'opposé de ce que je cherche…
    Il aurait été bien que tu précises que ces "dates" étaient déjà du texte dans tes données sources.

    Il faudrait savoir à quoi ressemblent tes "dates" pour savoir comment les transférer proprement.

  5. #5
    Membre averti
    Homme Profil pro
    -
    Inscrit en
    Juillet 2014
    Messages
    45
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : -

    Informations forums :
    Inscription : Juillet 2014
    Messages : 45
    Par défaut
    Au temps pour moi.

    Elles sont donc au format "texte" : 15/12/2015 par exemple.


    Jodko.

  6. #6
    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
    1
    2
    3
    4
    5
    6
    Dim CC As Range
    Sheets("YYYYYYY").Range("W" & Debut & ":W" & Fin).Copy Sheets("XXXXXX").Range("H" & l)
    For Each CC In Sheets("XXXXXXXX").Range("H" & l).Resize(Fin - Debut + 1, 1)
        CC.NumberFormat = "dd/mm/yyyy;@"
        CC.Value = DateSerial(Split(CC.Text,"/")(2), Split(CC.Text,"/")(1), Split(CC.Text,"/")(0))
    Next CC
    Il est certainement possible de tenter des trucs plus propre mais pas sûr que ce serait aussi fiable.

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

Discussions similaires

  1. Réponses: 6
    Dernier message: 21/06/2007, 15h26
  2. Réponses: 4
    Dernier message: 15/03/2007, 07h02
  3. [VBA-EXCEL] format de date lors d'écriture dans une cellule
    Par ustilago dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 06/02/2007, 17h44
  4. [VBA-E]Problème de date lors d'importation
    Par illight dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 12/04/2006, 11h38
  5. [Débutant] Conserver la couleur lors d'un copier coller
    Par ADIDASman dans le forum JBuilder
    Réponses: 2
    Dernier message: 21/05/2003, 18h13

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