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 :

Afficher le résultat d'un calcul "fait en VBA" dans une cellule


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Mai 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 24
    Points : 16
    Points
    16
    Par défaut Afficher le résultat d'un calcul "fait en VBA" dans une cellule
    Bonjour à tous ,

    J'ai simplifié mon problème pour être plus clair :
    Voici un morceau de code VBA qui devrait m'afficher le résultat de l'addition de +0+1+2+3+4+5+6+7+8+9 faite en VBA dans la cellule A1
    A l'affichage, Je n'obtiens pas le résultat attendu qui est 45, mais à l'affichage j'ai la chaine de caractères +0+1+2+3+4+5+6+7+8+9

    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 Macro_Addition_Serie()
        Dim compteur
        Dim SvgVal
        compteur = 1
        Range("A1").Value = 0
            Do
                SvgVal = Range("A1").FormulaR1C1
                If Left(SvgVal, 1) = "+" Then
                    Range("A1").FormulaR1C1 = SvgVal & "+" & compteur
                Else
                    Range("A1").FormulaR1C1 = "+" & CDbl(SvgVal) & "+" & compteur
                End If
                compteur = compteur + 1
            Loop Until compteur = 10
     
    End Sub
    L’idée est de faire une formule en VBA en allant piocher des données numériques à plusieurs endroits ( dans plusieurs classeurs (mais sans conserver les liaisons)) et d'afficher le résultat dans une cellule mais tout en conservant la formule avec les nombres d'origine (la formule =0+1+...+9 est plus explicite pour comprendre le résultat que d'avoir uniquement un total "45")

    Quelqu'un aurait une solution à me proposer pour obtenir le résultat de cette formule ci-dessus dans la cellule "A1"

    Je vous en remercie.
    Cordialement.
    Bernard

  2. #2
    Expert éminent sénior 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
    Points : 32 866
    Points
    32 866
    Par défaut
    Je ne sais pas si tu veux afficher le résultat ou l'opération.
    Alors je t'ai mis les deux : le résultat en A1 et l'opération en A2

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    Sub Macro_Addition_Serie()
        Dim compteur As Long
        Range("A1").Value = 0
        Range("A2").Formula = "=0"
        For compteur = 1 To 10
            Range("A1").Value = Range("A1").Value + compteur
            Range("A2").Formula = Range("A2").Formula & "+" & compteur
        Next compteur
    End Sub

  3. #3
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 925
    Points
    55 925
    Billets dans le blog
    131
    Par défaut
    Salut.

    Transforme ta sub en fonction et tu pourras l'utiliser dans une formule Excel.

    Tiens cependant compte d'une restriction: cette fonction ne peut pas altérer le classeur. En d'autres termes, elle ne peut que traiter l'information.

    Cela dit, fais bien la différence entre les différentes façons de renvoyer le "contenu" d'une cellule, car il y a une différence entre .Value et .Formula

    Nom : 20180906_01.png
Affichages : 10263
Taille : 46,2 Ko

  4. #4
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

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

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Points : 12 068
    Points
    12 068
    Billets dans le blog
    8
    Par défaut re
    bonjour
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Public Function Addition_Serie(compteur)
        Dim x&, compte&
        For x = 1 To compteur: compte = compte + x: Next x
        Addition_Serie = compte
    End Function
    formule
    =Addition_Serie(10)

  5. #5
    Responsable
    Office & Excel


    Homme Profil pro
    Formateur et développeur chez EXCELLEZ.net
    Inscrit en
    Novembre 2003
    Messages
    19 124
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 57
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur et développeur chez EXCELLEZ.net
    Secteur : Enseignement

    Informations forums :
    Inscription : Novembre 2003
    Messages : 19 124
    Points : 55 925
    Points
    55 925
    Billets dans le blog
    131
    Par défaut
    @Patrick

    je crois que la formule n'était là que pour expliquer la demande (récupérer une valeur dans une cellule), parce sinon, pour ce calcul, il n'est nul besoin de boucle, ni même de VBA, que l'on parte de 1 ou d'une autre valeur

    Nom : 20180906_02.png
Affichages : 7390
Taille : 3,6 Ko

  6. #6
    Membre à l'essai
    Inscrit en
    Mai 2006
    Messages
    24
    Détails du profil
    Informations forums :
    Inscription : Mai 2006
    Messages : 24
    Points : 16
    Points
    16
    Par défaut
    Citation Envoyé par Bercud Voir le message
    Bonjour à tous ,

    J'ai simplifié mon problème pour être plus clair :
    Voici un morceau de code qui devrait m'afficher le résultat de l'addition de +0+1+2+3+4+5+6+7+8+9 fait en VBA dans la cellule A1
    A l'affichage, Je n'ai pas le résultat attendu 45 mais la chaine de caractères +0+1+2+3+4+5+6+7+8+9

    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 Macro_Addition_Serie()
        Dim compteur
        Dim SvgVal
        compteur = 1
        Range("A1").Value = 0
            Do
                SvgVal = Range("A1").FormulaR1C1
                If Left(SvgVal, 1) = "+" Then
                    Range("A1").FormulaR1C1 = SvgVal & "+" & compteur
                Else
                    Range("A1").FormulaR1C1 = "+" & CDbl(SvgVal) & "+" & compteur
                End If
                compteur = compteur + 1
            Loop Until compteur = 10
     
    End Sub
    L’idée est de faire une formule en VBA en allant piocher des données numériques à plusieurs endroits ( dans plusieurs classeurs ( sans conserver les liaisons)) et de faire afficher le résultat dans une cellule tout en conservant la formule avec les nombres d'origine (plus explicite pour comprendre le résultat)

    Quelqu'un aurait une solution à me proposer pour obtenir le résultat de cette formule ci-dessus dans la cellule "A1"

    Je vous en remercie.
    Cordialement.
    Bernard


    Bonjour Messieurs,

    C'est excellent. Vous m'avez bien aidé. Ce problème est résolu.
    Ceci est parfait : Range("A2").Formula = Range("A2").Formula & "+" & compteur

    Les autres réponses m'aideront mais dans un autre contexte .

    Ici mon problème était de créer une formule dans une cellule, mais cette formule se construit au fur et à mesure dans le VBA et elle s'allongera avec des boucles et des tests, tout en conservant la formule déjà existante dans la cellule (mais pas en partant uniquement de la dernière valeur du résultat). A la fin c'est la valeur du résultat du calcul qui m'intéresse mais je veux comprendre comment il se forme (= conserver la formule complète).

    Un grand merci.

    Bernard
    Devise : Il vaut mieux 1 qui sait que 10 qui cherchent, ne serait ce les dix meilleurs ... ( Je suis ni l'un ni l'autre).

Discussions similaires

  1. Réponses: 21
    Dernier message: 26/02/2015, 21h20
  2. Afficher le résultat d'un calcul
    Par novice100 dans le forum Langage
    Réponses: 6
    Dernier message: 02/10/2011, 10h32
  3. [XL-2007] afficher une image dans une cellule en fonction d'un résultat
    Par elsabio dans le forum Excel
    Réponses: 3
    Dernier message: 19/04/2010, 22h07
  4. Afficher le résultat d'un calcul
    Par vminos dans le forum Langage
    Réponses: 4
    Dernier message: 13/08/2009, 13h47
  5. Problème pour afficher le résultat d'un calcul
    Par goomazio dans le forum Assembleur
    Réponses: 3
    Dernier message: 26/01/2006, 10h42

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