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 :

Format de date et PasteSpecial


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Nouveau candidat au Club
    Profil pro
    Inscrit en
    Décembre 2007
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2007
    Messages : 1
    Par défaut Format de date et PasteSpecial
    Bonjour à tous !

    J'ai cherché sur le forum et sur google mais je n'ai pas trouvé la réponse à mon problème :

    je souhaite importer via une macro un tableau issu de mon historique d'opérations banquaires :

    12/12/2007 CHEQUE N° 56xxxxx 327,76
    10/12/2007 PRELEVEMENT xxxx REF SPB 5,50
    10/12/2007 FACTURE CARTE DU 071207CART 16,76
    06/12/2007 FACTURE CARTE DU 051207 81,50
    06/12/2007 FACTURE CARTE DU 051207 63,41
    etc...

    et là problème bizarre :
    Si je le fais "normalement" (clic droit sur un cellule > collage special) alors pas de problème (notamment les dates sont reconnues comme telles)
    Si je le fais via ma macro et la commande PasteSpecial :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
     
    ActiveSheet.PasteSpecial Format:="Texte Unicode", Link:=False, _
    DisplayAsIcon:=False
    alors il interprète les dates < 12/12/2007 comme un format Américain :
    13/12/2007 FACTURE CARTE DU 121207 16,90 €
    12/12/2007 REMISE CHEQUES BORDEREAU 1 125,00 €
    12/12/2007 FACTURE CARTE DU 041207 1,40 €
    12/12/2007 CHEQUE N°xxxxx 327,76 €
    12/10/2007 PRELEVEMENTxxx 5,50 €
    12/10/2007 FACTURE CARTE DU 071207 16,76 €
    12/06/2007 FACTURE CARTE DU 051207 81,50 €


    Voilà, j'espère que je suis clair : à quoi cela est-il dû, et comment le contourner ? Vous l'aurez sans doute remarqué, je ne suis pas vraiment expert en vba/excel (amis de l'euphémisme bonsoir) mais merci d'avance pour votre aide !!

  2. #2
    Membre Expert
    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    2 130
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 2 130
    Par défaut
    Salut
    je pense que c'est du au format Unicode qui modifie le nombre d'octets utilisé. Tu as peut-être une raison de le transformer en texte unicode, mais ta date n'est pas un texte : regarde sur les format de nombre.
    si tu veux transformer tes dates en texte au format unicode, il faut les transformer en texte, puis transformer le code ASCII en unicode
    A+

  3. #3
    Invité de passage
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2010
    Messages : 1
    Par défaut Copier-coller en texte unicode en VBA pour Excel
    J'ai exactement le même besoin que j'essaie aussi de résoudre par une macro.
    J'ai donc aussi le même problème de format.
    Dans la mesure où le format "Texte Unicode" fonctionne bien quand on l'exécute manuellement, je soupçonne le format anglophone de VBA d'être à l'origine du problème. Quelqu'un aurait-il une idée la-dessus ?

  4. #4
    Invité de passage
    Profil pro
    Inscrit en
    Mai 2011
    Messages
    1
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2011
    Messages : 1
    Par défaut J'ai une solution
    Bonjour

    Voici ce que je fais :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Columns("B:B").NumberFormat = "@" 
       'converti en texte la colonne des dates
    ActiveSheet.PasteSpecial Format:="Texte", Link:=False, _
       DisplayAsIcon:=False
    Columns("B:B").NumberFormat = "[$-40C]d mmmm yyyy;@"
       'converti en date type "4 mars 2011" la colonne des dates
    A la suite, j'ai rajouté une boucle qui force Excel mettre à jour l'affichage de la date au bon format :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    start_Row = Selection.Row ' Numéro premiére ligne
     end_Row = Selection.Row + Selection.Rows.Count - 1   ' Numéro dernnière ligne
     
     For Boucle = start_Row To end_Row
        Cells(Boucle, 2).Value = Format(Cells(Boucle, 2).Value, Cells(Boucle, 2).NumberFormat)  
         'refait le format de la date
     Next Boucle

  5. #5
    Expert confirmé
    Avatar de Didier Gonard
    Homme Profil pro
    Formateur Office et développeur VBA en freelance
    Inscrit en
    Février 2008
    Messages
    2 805
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Loire Atlantique (Pays de la Loire)

    Informations professionnelles :
    Activité : Formateur Office et développeur VBA en freelance

    Informations forums :
    Inscription : Février 2008
    Messages : 2 805
    Par défaut
    alors il interprète les dates
    Bonjour,

    Tu as mis le doigt dessus , ce n'est pas un hasard si le problème se produit avec les jours <= à 12...

    vois ce tutoriel :

    Comprendre et gérer les dates sous Excel et en VBA

    à : Les dates en VBA /Généralités et /Exemples de différentes saisies et leurs conséquences ou le mois de décembre est pris en exemple d'ailleurs..

    cordialement,

    Didier

Discussions similaires

  1. Format de date
    Par royrremi dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 01/06/2004, 17h32
  2. Détecter le format de date au démarrage
    Par stigma dans le forum Access
    Réponses: 2
    Dernier message: 20/02/2004, 11h04
  3. Réponses: 11
    Dernier message: 02/09/2003, 14h20
  4. Problème de Format de date
    Par titititi007 dans le forum MS SQL Server
    Réponses: 2
    Dernier message: 18/06/2003, 08h19
  5. Réponses: 3
    Dernier message: 06/05/2002, 18h24

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