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 :

Les mystères des décimales dans un calcul simple


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 69
    Par défaut Les mystères des décimales dans un calcul simple
    Bonjour,
    J’avais besoin de créer une addition en vba, trop fastoche me dis-je en mon fort interieur.
    Pourquoi ?
    Parce que j’ai besoin d’avoir les valeurs des sommes aditionnées et non pas leurs références,
    Exemple : 25+32 et non pas A1+A2
    Donc j’ai crée cette macro :

    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
    17
    18
    19
    20
    21
    22
    23
    24
     Sub Calcul()
        Dim Chifr1 As Long
        Dim Chifr2 As Long
        Dim Lig As Long
        Dim Col As Long
        Dim Col2 As Long
        Dim Col3 As Long
        Dim resul As String
     
           Col = InputBox("Dans quel colonne se trouve la première série à additionner (son numéro) ? ", "C'est quoi la Colonne")
        Col2 = InputBox("Dans quel colonne se trouve la seconde série à additionner (son numéro) ? ", "Tu me la donnes la seconde ?")
        Col3 = InputBox("Dans quel est la colonne de destination (son numéro) ? ", "Ou je mets tout ça ?")
     
        Lig = InputBox("Numéro de ligne de départ ? ", "Mais c'est quoi cette ligne ?")
         While Cells(Lig, Col) <> ""
            Chifr1 = Cells(Lig, Col)
            Chifr2 = Cells(Lig, Col2)
     
            'Cells(Lig, Col3) = "=" & Chifr1 & "+" & Chifr2
            Lig = Lig + 1
     
         Wend
     
    End Sub
    Et ça marchait nickel
    Mais en prod je me rends compte que les chiffres decimals sont arrondis.
    Forcément me dis-je, j’ai dimensionné en Long,
    Qu’importe, je change en variant.
    Et patatras (je le fais bien hein), plantage de la macro, à priori la cellule de destination n’est pas faite pour recevoir ce nouvel argument.
    Mais pourquoi ? Qu’à cause de la décimale qui apparait ?
    J’essaie de dimensionner en single, double et plus si affinité et le résultat est identique.
    La ou je devais gagner du temps j’en perds un max, mais je suis obstiné alors je continue.
    Et j’arrive à ça :

    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
    17
    18
    19
    20
    21
    22
    23
    24
    25
    26
     
    Sub Calcul()
        Dim Chifr1 As Double
        Dim Chifr2 As Double
        Dim Lig As Long
        Dim Col As Long
        Dim Col2 As Long
        Dim Col3 As Long
        Dim resul As String
     
        Col = InputBox("Dans quel colonne se trouve la première série à additionner (son numéro) ? ", "C'est quoi la Colonne")
        Col2 = InputBox("Dans quel colonne se trouve la seconde série à additionner (son numéro) ? ", "Tu me la donnes la seconde ?")
        Col3 = InputBox("Dans quel est la colonne de destination (son numéro) ? ", "Ou je mets tout ça ?")
     
        Lig = InputBox("Numéro de ligne de départ ? ", "Mais c'est quoi cette ligne ?")
         While Cells(Lig, Col) <> ""
            Chifr1 = Cells(Lig, Col)
            Chifr2 = Cells(Lig, Col2)
     
            Cells(Lig, Col3) = Chifr1 & "+" & Chifr2
            resul = "=" & Chifr1 & "+" & Chifr2
            Cells(Lig, Col3 + 1).NumberFormat = "@"
            Cells(Lig, Col3 + 1) = resul
            Lig = Lig + 1
     
         Wend
    Ben là ça marche, sauf que j’ai du texte, le résultat n’apparait pas dans la cellule.
    Pour palier je suis obligé de rentrer dans chaque cellule (en cliquant dans la barre de formule) et de faire « Entrée ». (Après avoir copié le résultat de la macro sur une colonne formatée en nombre)
    600 lignes, trop la classe.
    Alors pour mon info personnel, comment fallait il que je fasse ?
    Si quelqu’un à la solution.

    Merci.

  2. #2
    Membre éclairé Avatar de zandru
    Homme Profil pro
    Ingénieur conception mécanique
    Inscrit en
    Mars 2008
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2008
    Messages : 507
    Par défaut
    Bonjour,

    result étant un string, je rajouterai par acquis de conscience :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resul = "=" & Cstr(Chifr1) & "+" & Cstr(Chifr2)
    au lieu de :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    resul = "=" & Chifr1 & "+" & Chifr2
    et j'utiliserai "formula" pour le mettre dans la cellule et avoir le résultat:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(Lig, Col3 + 1).Formula = resul

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 69
    Par défaut
    Merci pour ta réponse super rapide.

    Mais j'ai essayé et le résultat est identique.
    Je me retrouve avec la formule qui apparait dans la cellule et non le résultat.
    Car la cellule est formaté en txt, si je supprime la formatage la macro plante, elle ne comprend pas que c'est une formule.
    Je ne lui ai pas bien expliqué.

  4. #4
    Membre éclairé Avatar de zandru
    Homme Profil pro
    Ingénieur conception mécanique
    Inscrit en
    Mars 2008
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2008
    Messages : 507
    Par défaut
    Si le formatage de ta cellule est en nombre ou en standard, cela donne quoi ?

    quand tu dis que cela plante, où est ce que ça plante et qu'elle est le message d'erreur ?

  5. #5
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Par défaut
    Quelle erreur te donne VBA exactement? A quelle ligne?

    Car j'ai une petite idée de la raison de ton problème, mais je ne suis pas sûr...

  6. #6
    Membre confirmé
    Profil pro
    Inscrit en
    Mai 2008
    Messages
    69
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Mai 2008
    Messages : 69
    Par défaut
    Erreur d'exécution '1004'
    Erreur définie par l'application ou par l'objet
    Et elle plante là :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
     Cells(Lig, Col3 + 1).Formula = resul
    Ceci lorsque j'ai désactivé la ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(Lig, Col3 + 1).NumberFormat = "@"
    Puisque je veux tout de même exploiter numériquement mon résultat.

  7. #7
    Membre éclairé Avatar de zandru
    Homme Profil pro
    Ingénieur conception mécanique
    Inscrit en
    Mars 2008
    Messages
    507
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Essonne (Île de France)

    Informations professionnelles :
    Activité : Ingénieur conception mécanique
    Secteur : Industrie

    Informations forums :
    Inscription : Mars 2008
    Messages : 507
    Par défaut
    Même si tu désactive la ligne de formatage, la cellule reste en format texte,

    remplace la par :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(Lig, Col3 + 1).NumberFormat = "general"

  8. #8
    Membre émérite
    Profil pro
    Inscrit en
    Septembre 2008
    Messages
    753
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Septembre 2008
    Messages : 753
    Par défaut
    Mmmhh...

    As-tu un exemple de ce que ça te donne comme texte lorsque tu laisse au format texte?

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

Discussions similaires

  1. [MySQL] Supprimer les informations des champs dans une table (suite)
    Par snakejl dans le forum PHP & Base de données
    Réponses: 17
    Dernier message: 26/05/2006, 16h37
  2. Ecrire les noms des fichiers dans une colonne
    Par REGIMBAL dans le forum Access
    Réponses: 1
    Dernier message: 20/04/2006, 12h29
  3. J'ai pas les infos des objets dans l'éditeur
    Par mister3957 dans le forum MFC
    Réponses: 3
    Dernier message: 20/02/2006, 20h43
  4. Pouvoir gérer les actions des boutons dans une classe
    Par Cyborg289 dans le forum Composants
    Réponses: 2
    Dernier message: 08/07/2005, 13h08
  5. Réponses: 1
    Dernier message: 06/03/2003, 12h57

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