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 :

Perte de décimales lors de copie de cellules [XL-2010]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2008
    Messages : 31
    Par défaut Perte de décimales lors de copie de cellules
    Bonjour à tous

    Dans mon code, après une recherche, je recopie les résultats de ma recherche dans une feuille excel

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    For i = 1 To 20
        Workbooks("nouvelle_facture.xlsm").Worksheets("resultatsderecherche").Cells(lignedutableau, i) = Workbooks("serials2010.xlsx").Worksheets("serials").Cells(rrecherche.Row, i).Value
    Next i
     
    Workbooks("nouvelle_facture.xlsm").Worksheets("resultatsderecherche").Cells(lignedutableau, 21) = rrecherche.Row
    Workbooks("nouvelle_facture.xlsm").Worksheets("resultatsderecherche").Cells(lignedutableau, 22) = Workbooks("serials2010.xlsx").Worksheets("serials").Cells(rrecherche.Row, i).Interior.ColorIndex
    Workbooks("nouvelle_facture.xlsm").Worksheets("resultatsderecherche").Cells(lignedutableau, 23) = Workbooks("serials2010.xlsx").Worksheets("serials").Cells(rrecherche.Row, i).Font.ColorIndex
    Tout se passe bien, sauf que je perds 2 décimales au passage.

    En effet, dans les cellules que je recopie se trouve par exemple 0.0413€ et dans la feuille cible, je retrouve 0.0400€ (du fait que le format de la cellule est "# ##0.0000\€" dans les 2 feuilles & dans les 2 classeurs)

    Que dois-je faire pour ne pas perdre ces décimales ?

    Merci d'avance

  2. #2
    Membre Expert Avatar de Gado2600
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Mai 2013
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Office VBA

    Informations forums :
    Inscription : Mai 2013
    Messages : 904
    Par défaut
    Bonjour,

    As-tu essayé d'appliquer un :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Workbooks("nouvelle_facture.xlsm").Worksheets("resultatsderecherche").Cells(lignedutableau, i).NumberFormat = "0.00;-0.00;0;@"
    C'est peut-être FormatNumber. Je sais jamais dans quel sens c'est...

    Il s'agit ici d'appliquer un personnalisé de ta cellule.

    Petit conseil : utilises des variables pour tes objets. Je pense notamment à titre d'exemple :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Dim excelwkbook as workbook
    set excelwkbook = workbooks("nouvelle_facture.xlsm")
    excelwkbook.Worksheets("resultatsderecherche").Cells(lignedutableau, i).NumberFormat = "0.00;-0.00;0;@"
    C'est également possible de définir des variables de type worksheets, range etc...

    Cordialement,

  3. #3
    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
    As-tu essayé de passer par l'intermédiaire d'une variable de type Double et de mettre un .Value dans la désignation de la destination ?

  4. #4
    Membre averti
    Profil pro
    Inscrit en
    Juin 2008
    Messages
    31
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2008
    Messages : 31
    Par défaut
    Citation Envoyé par Menhir Voir le message
    As-tu essayé de passer par l'intermédiaire d'une variable de type Double et de mettre un .Value dans la désignation de la destination ?
    Bjr

    J'ai défini mes variables en type Double

    et lorsque je les rempli avec
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    serialsrecupel = Workbooks("serials2010.xlsx").Worksheets("serials").Cells(rrecherche.Row, 8).Value
    je reçois un message d'erreur incompatibilité de type.

    je supposais que c'était à cause du point, j'ai donc essayé ceci :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    serialsrecupel = Replace(Workbooks("serials2010.xlsx").Worksheets("serials").Cells(rrecherche.Row, 8).Value, ".", ",")
    mais même chose

    la valeur de la cellule est 0.0413

    j'ai aussi essayé :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    serialsrecupel = CDbl(Replace(Workbooks("serials2010.xlsx").Worksheets("serials").Cells(rrecherche.Row, 8).Value, ".", ","))
    mais toujours le même message d'erreur.

    ça doit être devant mon nez, mais je trouve pas


    Pour finir, ceci fonctionne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    serialsrecupel = Format(Workbooks("serials2010.xlsx").Worksheets("serials").Cells(rrecherche.Row, 9).Value, "# ##0.0000")
    Sans doute la cellule source contenant un format personnalisé ne lui plaisait pas

    Merci à tous de m'avoir éclairé & mis sur la bonne piste

  5. #5
    Membre Expert Avatar de Gado2600
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Mai 2013
    Messages
    904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 35
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Développeur Office VBA

    Informations forums :
    Inscription : Mai 2013
    Messages : 904
    Par défaut
    Bonjour,

    Je pencherais plutôt sur une donnée de type string plutôt que numérique. Cela arrive sous Excel.

    Cordialement,

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

Discussions similaires

  1. Perte du lien hypertexte apres copie cellule
    Par djoce44 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 18/12/2012, 08h53
  2. Réponses: 1
    Dernier message: 25/01/2011, 14h52
  3. [XL-2007] Problème de décimales lors d'une copie
    Par Jay-P dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 02/04/2010, 00h33
  4. [E-03] Erreur 1004 lors de copie de cellules
    Par rtg57 dans le forum Excel
    Réponses: 4
    Dernier message: 22/02/2009, 08h55
  5. [VBA-E]Erreur lors d'une copie de cellules
    Par illight dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 08/02/2006, 11h22

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