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 formats après collage spéciale (valeur) [XL-365]


Sujet :

Macros et VBA Excel

  1. #1
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 264
    Par défaut Problème de formats après collage spéciale (valeur)
    Bonjour,

    Merci d'avance à celles et ceux qui prendront le temps pour mon problème.
    J'exploite un fichier composé deux onglets "SOURCE" et "DESTI", mon but est de copier les valeurs des cellules B2 à B4
    de l'onglet "SOURCE" pour les coller via un collage spéciale de valeurs aux mêmes emplacement sur l'onglet "DESTI".
    Je veux que mes cellules de destinations restent au format standard tout en conservant les valeurs de la feuille source.

    Le souci c'est que les valeurs copiées sont transformées en un format non souhaité:

    2,54354921261306 devient 2,54355E+14
    0,01036696826075 devient 1,0367+12
    2,55391618087382 devient 2,5539E+14

    J'utilise le code ci-dessous, qui marche très bien sur mon ordinateur personnel, mais pas sur mon poste pro.
    Auriez-vous des idées à me proposer, je suis également preneur de sujet similaires s'ils existent.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
     
     
    Sub Macopie()
    Dim Fsource, Fdesti As Excel.Worksheet
    Dim PLAGEACOPIER As Range
     
     
    Set Fsource = ThisWorkbook.Worksheets("SOURCE")
    Set Fdesti = ThisWorkbook.Worksheets("DESTI")
     
    Set PLAGEACOPIER = Fsource.Range(Fsource.Cells(2, 2), Fsource.Cells(4, 2))
    PLAGEACOPIER.Copy
    Fdesti.Cells(2, 2).PasteSpecial Paste:=xlPasteValues
     
    End Sub
    Je vous joints aussi le fichier en question.

    Merci encore.

    Cordialement,

    Kedmard
    Fichiers attachés Fichiers attachés

  2. #2
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 558
    Par défaut
    Bonjour,
    Tu nous fournir un xlsx pour corriger ta macro

  3. #3
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 264
    Par défaut
    Bonjour Thumb down,

    Merci pour ton retour, et désolé pour le fichier inadapté, ci-joint la version xlsm.

    Cordialement,

    TEST_V2.xlsm

  4. #4
    Membre Expert Avatar de Thumb down
    Homme Profil pro
    Retraité
    Inscrit en
    Juin 2019
    Messages
    1 558
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Juin 2019
    Messages : 1 558
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Fdesti.Cells(2, 2).PasteSpecial Paste:=xlPasteFormats
    Fdesti.Cells(2, 2).PasteSpecial Paste:=xlPasteValues

  5. #5
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 264
    Par défaut
    Thumb down,

    J'ai testé ta solution, voici ce qui passe :

    2,54354921261306 devient 254354921261306,00000
    0,01036696826075 devient 1036696826075,00000
    2,55391618087382 devient 2,55391618087382,00000

    Je perds par ailleurs le remplissage et les bordures des cellules de destination que je souhaiterai garder.

    En tous cas merci quand même de ton retour.

  6. #6
    Membre Expert Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    1 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 1 005
    Par défaut
    Hello,

    pas sûr d'avoir tout compris, mais 2 choses :
    1- la déclaration de Fsource est fausse, tel quel c'est un variant, il faut être explicite Dim Fsource As Excel.Worksheet et si vous voulez mettre les 2 sur la même ligne Dim Fsource As Excel.Worksheet, Fdesti As Excel.Worksheet
    2- vous ne copiez que les valeurs mais ne remettez pas le format. La proposition de Thumb down est correcte mais supprime les encadrements car il n'y en a pas dans la source.
    Ajoutez le format que vous avez utilisé sur la feuille source pour que ça "matche"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    15
    16
    Sub Macopie()
     
        Dim Fsource As Excel.Worksheet
        Dim Fdesti As Excel.Worksheet
        Dim PLAGEACOPIER As Range
     
        Set Fsource = ThisWorkbook.Worksheets("SOURCE")
        Set Fdesti = ThisWorkbook.Worksheets("DESTI")
     
        Set PLAGEACOPIER = Fsource.Range(Fsource.Cells(2, 2), Fsource.Cells(4, 2))
        PLAGEACOPIER.Copy
     
        Fdesti.Cells(2, 2).PasteSpecial Paste:=xlPasteValues
        Range(Fdesti.Cells(2, 2), Fdesti.Cells(4, 2)).NumberFormat = ".00000"
     
    End Sub
    JièL
    Membre des AMIS
    Anti Macro Inutilement Superfétatoire

  7. #7
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 264
    Par défaut
    Bonjour Nain porte koi

    Merci pour ton retour et Sorry, si je ne pas été assez explicite.
    Comme je l'ai dis plus haut, mon code initiale (tout comme le vôtre) produit l'effet escompté sur mon PC personnel, mais pas sur
    mon PC Pro bien qu'il s'agisse de la même versions d'Excel. Sur mon PC pro, il apparait comme si la "," (de la feuille source)
    n'est pas considérée au moment du collage de valeurs comme un séparateur décimal mais plutôt comme un multiplicateur de 10 puissance 14 voir 15.
    Que dois-je faire pour éviter qu'après le collage :

    2,54354921261306 ne devienne 254354921261306,00000 sur la feuille cible
    0,01036696826075 ne devienne 1036696826075,00000 -||--||-
    2,55391618087382 ne devienne 255391618087382,00000 -||--||-


    En espérant avoir été plus claire.

    Je continue de chercher.

    Salutations,

  8. #8
    Membre Expert Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    1 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 1 005
    Par défaut
    Y'a un mystère mystérieux là !
    En fait les nombres sont multipliés par 100 000 000 000 000... j'ai fais tout un tas de tests avec les options avancées, décimales fixes... si je met -14 en saisissant 1 j'obtiens 100 000 000 000 000 mais ça ne fonctionne qu'avec la saisie, ça n'agit pas sur le copier/coller, donc i don't understand

    A tout hasard, vous n'auriez pas une macro dans le PERSONAL.XLSB qui vous ferez des blagues ?
    JièL
    Membre des AMIS
    Anti Macro Inutilement Superfétatoire

  9. #9
    Membre confirmé
    Homme Profil pro
    curieux
    Inscrit en
    Février 2025
    Messages
    21
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Italie

    Informations professionnelles :
    Activité : curieux
    Secteur : Bâtiment

    Informations forums :
    Inscription : Février 2025
    Messages : 21
    Par défaut
    Bonjour à tous,

    Ou peut etre un Windows en anglais sur le PC du bureau qui interprète la virgule comme le séparateur de milliers ?

  10. #10
    Membre Expert Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    1 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 1 005
    Par défaut
    je ne crois pas...
    Si on change les séparateurs dans Excel ou dans Windows ça ne fait pas une multiplication par 100 000 000 000 000, au pire l'affichage de le source serait différent mais interprété correctement
    JièL
    Membre des AMIS
    Anti Macro Inutilement Superfétatoire

  11. #11
    Membre éclairé
    Profil pro
    Inscrit en
    Janvier 2011
    Messages
    264
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2011
    Messages : 264
    Par défaut
    Hello désolé pour le retour tardif, grand merci pour votre implication

    J'ai finalement résolus mon problème.

    En fait ma feuille Souce est issue de SAS et dans la macro de mon PC pro figurait une ligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    ... Replace What:="." , Replacement:="",...
    prévue pour les éventuelles valeurs manquantes que SAS renvoie par des " . "
    pour les champs numériques et en la commentant j'obtiens le résultat attendu.
    J'en déduis donc qu' Excel sur mon poste Pro n'a sans doute pas le même séparateur de milliers que sur mon PC perso.
    De ce fait vous avez tous les deux raisons.

    Salutations,

    Kedmard.

  12. #12
    Membre Expert Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    1 005
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 1 005
    Par défaut
    Ah ben si vous nous cachez des choses on ne risque pas de deviner.
    JièL
    Membre des AMIS
    Anti Macro Inutilement Superfétatoire

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

Discussions similaires

  1. [XSLT] XML-->XSLT output format apres transformation avec un x
    Par Hoegaarden dans le forum Format d'échange (XML, JSON...)
    Réponses: 8
    Dernier message: 06/09/2010, 12h51
  2. Réponses: 4
    Dernier message: 15/01/2007, 22h33
  3. Formation après BAC pro et niveau d'étude
    Par stpaul04 dans le forum Etudes
    Réponses: 8
    Dernier message: 19/11/2006, 08h06
  4. [VBA-E] Collage des valeurs avec liaison
    Par boux2 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 25/07/2006, 14h03
  5. Réponses: 10
    Dernier message: 26/04/2006, 12h33

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