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 :

Problème de format de date avec copier-coller


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Candidat au Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Décembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2012
    Messages : 3
    Par défaut Problème de format de date avec copier-coller
    Bonjour,

    je cherche à importer un formulaire reçu par mail dans une feuille excel pour générer une fiche membre pour une association.
    Je réceptionne sur un Mac et je travaille sur excel PC dans un PC virtuel car mon code n'est pas assez propre pour fonctionner sur les deux machines.

    Etape 1: je copie à la main le contenu du mail (Mac)
    Etape 2: je bascule dans Excel sur mon PC virtuel
    Etape 3: je lance une macro qui colle le contenu dans une feuille masquée puis récupère chaque élément pour remplir la feuille contenant les infos des membres
    Etape 4: j'ai un formulaire pour éditer et modifier la fiche membre par la suite.

    A priori c'est simple.
    Mais je suis tombé sur un os avec la date de naissance. Ma macro crée une inversion des jours/mois entre le formulaire copié jj.mm.aaaa et la feuille "réceptrice" où le format devient mm.jj.aaaa.

    J'utilise cette macro depuis plusieurs semaines et je n'avais jamais observé ce bug.
    En fouillant dans les archives d'inscription, il semble que ce problème soit nouveau, alors que le code -déjà ancien- n'a pas changé.

    En faisant un pas à pas de débuggage, je me suis rendu compte qu'en faisant ctrl+v, j'obtenais le format voulu: jj.mm.aaaa
    alors qu'en code:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
        Range("A1").Select
        ActiveSheet.Paste
    j'obtiens le format: mm.jj.aaaa

    J'ai bien sûr essayé de modifier le format de la cellule. Il est juste.
    J'ai ensuite refait ces deux lignes de code sur un classeur vide... histoire d'éliminer des problèmes d'option.. ??? Même problème

    Pour résumer: ctrl+v diffère de activesheet.paste et ça a changé récemment... pour le même code.

    Qu'est-ce que je loupe!!!???

    ça a l'air tellement idiot... et je m'arrache les cheveux!

    Merci de votre aide

  2. #2
    Expert confirmé Avatar de BENNASR
    Homme Profil pro
    Responsable comptable & financier
    Inscrit en
    Décembre 2013
    Messages
    2 974
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Tunisie

    Informations professionnelles :
    Activité : Responsable comptable & financier
    Secteur : Finance

    Informations forums :
    Inscription : Décembre 2013
    Messages : 2 974
    Par défaut
    Bonsoir à tous
    as tu essayer de formater la date avant d'envoyer à ton fiche excel? :
    cellule_cible.value=Cdate (valeur dans user form)

  3. #3
    Expert confirmé

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 169
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 169
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    ils diffèrent sur un point bien précis : VBA est format anglais quoi qu'il arrive / Excel est format "Standard du PC, paramètres régionaux"


    Donc quand tu fait un Ctrl+V, tu restes dans le même format
    Quand tu passes par du VBA et que ton Excel est "français", y'a mélange des genres et conversions fâcheuses


    En général, un Cdate() bien placé suffit
    Mais il est préférable de travailler avec le numéro de série de la date (Format Single ça passe bien) et dans Excel de formater la cellule au format souhaité
    Voir d'ajouter un traitement par DateSerial()

    Les dates, c'est essentiel de bien maîtriser la mécanique si on veut pas se prendre les pieds dans le tapis :
    Comprendre et gérer les dates sous Excel et en VBA

  4. #4
    Candidat au Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Décembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2012
    Messages : 3
    Par défaut
    Bonjour,

    un grand merci pour vos réponses.
    J'ai donc fait divers essais avec CDate, avec DateSerial et j'ai relu la doc sur les formats de date dans excel.

    Je n'y arrive pas.

    J'ai ressorti un vieux fichier de dev d'il y a un mois. Le code Activesheet.paste n'a pas changé.... et la copie se fait sans inversion jj.mm !!
    J'ai regardé les options d'excel et il n'y pas de changement.
    Je n'ai pas basculé d'une version française vers une anglaise ou vice-versa. Je n'ai travaillé qu'avec la version anglaise 2016. Mais la piste m'a bien plu!!

    Il y a donc un bout de code quelque part qui modifie le comportement... Mais j'ai BEAUCOUP bossé depuis un mois et je n'ai aucune idée. Il faut dire que je n'ai pas de base de programmation et que je "travaille" par tâtonnement avec des bouts de code que je trouve sur le net.
    Il va falloir que je cherche.
    Si je trouve, il va sans dire que je vous donnerai le fin mot!

    Merci encore.

  5. #5
    Candidat au Club
    Homme Profil pro
    Consultant fonctionnel
    Inscrit en
    Décembre 2012
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Suisse

    Informations professionnelles :
    Activité : Consultant fonctionnel
    Secteur : Santé

    Informations forums :
    Inscription : Décembre 2012
    Messages : 3
    Par défaut
    J'ai un bout de piste mais qui m'enfonce...

    J'ai repris de vieux fichiers:
    Si je fais
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sub Macro2()
    ActiveSheet.Paste
    End Sub
    le format est celui que je souhaite importer: jj.mm.aaaa comme dans le formulaire copié.

    MAIS si je fais d'abord ctrl+v pour voir ce que cela donne, le ctrl+v donne: jj.mm.aaaa et juste après le Activesheet.paste me colle mm.jj.aaaa.

    Si je teste d'abord Activesheet.paste le format est jj.mm.aaaa, ça "marche"...
    puis si je fais une seule fois le test avec ctrl+v, tous les prochains Activesheet.paste sont au format mm.jj.aaaa.

    Y de quoi se perdre...

    ça me rappelle les shadoks:
    "Ce n'est qu'en essayant continuellement que l'on finit par réussir....
    En d'autres termes... Plus ça rate et plus on a de chances que ça marche..."

Discussions similaires

  1. [XL-2010] Problème avec Copier-Coller
    Par belohorizonte dans le forum Excel
    Réponses: 2
    Dernier message: 17/01/2013, 18h46
  2. [WD-2010] Problème format avec Copier/Coller
    Par EliRossi dans le forum Word
    Réponses: 9
    Dernier message: 10/10/2012, 10h23
  3. [VB]Format de date avec excell
    Par Empty_body dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 16/02/2006, 15h56
  4. [VB.net] problème de format de date
    Par cladsam dans le forum Windows Forms
    Réponses: 4
    Dernier message: 11/10/2005, 19h27
  5. Problème de Format de date
    Par titititi007 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/06/2003, 09h19

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