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 :

Macro Additioner une formule variable selon les cases séléctionnées


Sujet :

Macros et VBA Excel

  1. #1
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Février 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Février 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut Macro Additioner une formule variable selon les cases séléctionnées
    Bonjour à tous !

    D'avance, je remercie ceux et celles qui prendront le temps de m'aider sur ce problème.

    Je vous explique :

    Je souhaite diviser par 2 toutes les cellules que j'ai sélectionné, ce qui me donne comme code pour le moment :



    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Division()
    For Each MaCellule In Selection
    MaCellule.Value = MaCellule.Value / 2
    Next MaCellule
    End Sub
    Exemple :

    Sélection de A1
    A1 = x/2

    Ce code fonctionne très bien.

    Maintenant je souhaite à travers cette même macro ajouter à mes cellules sélectionnées (et préalablement diviser par 2) une formule (non la valeur) d'une autre cellule* d'une autre feuille.

    Exemple :

    Sélection de A1
    A1 = x/2 + FormuleA1*

    Avec :
    A1 Feuille 1
    A1* Feuille 2


    Je n'arrive pas à trouver le code de cette étape déjà .

    Enfin pour finir, et surement le plus compliqué :

    La formule en A1* est propre à la cellule sélectionnée en A1.
    La formule en B1* est propre à la cellule sélectionnée en B1

    Exemple :

    Sélection de A1 et de B1
    A1 = x/2 + FormuleA1*
    B1 = x/2 + FormuleB1*



    Pour Explication, mon but de copier uniquement la formule est qu'elle correspond au calcul d'une différence de temps entre deux dates, dont une est l'instant présent (=maintenant()). Donc le résultat est en permanence évolution et je souhaite garder ce facteur temps dans mes différentes cellules.

    Pour information, si l'envie vous prend d'écrire le code avec les bonnes cellules et les bons noms de feuilles :

    C6 à C53 sur la feuille 'Station de Bord'!.
    G5 à G52 sur la feuille 'Système interne'!

    Exemple :

    Sélection de C6, C7 et de C20
    C6 = x/2 + FormuleG5*
    C7 = x/2 + FormuleG6*
    C20 = x/2 + FormuleG19*



    Encore merci pour le temps que vous m'aurez accordé.

    Bonne chance

  2. #2
    Inactif  

    Homme Profil pro
    Développeur .NET
    Inscrit en
    Janvier 2012
    Messages
    4 904
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 67
    Localisation : Canada

    Informations professionnelles :
    Activité : Développeur .NET
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2012
    Messages : 4 904
    Points : 10 168
    Points
    10 168
    Billets dans le blog
    36
    Par défaut
    Bonjour,

    Citation Envoyé par MarieJuan Voir le message
    Bonjour à tous !

    Exemple :

    Sélection de A1 et de B1
    A1 = x/2 + FormuleA1*
    B1 = x/2 + FormuleB1*



    Bonne chance
    Ce genre de manipulation, pour faire court, une cellule qui fait référence à elle-même, est fortement déconseillé, sinon impossible dans Excel. Cela génère, ce que l'on appelle une référence circulaire. Comme la cellule se modifie à chaque calcul, c'est pratiquement impossible de "figer" la vraie réponse.
    À ma connaissance, le seul personnage qui a été diagnostiqué comme étant allergique au mot effort. c'est Gaston Lagaffe.

    Ô Saint Excel, Grand Dieu de l'Inutile.

    Excel n'a jamais été, n'est pas et ne sera jamais un SGBD, c'est pour cela que Excel s'appelle Excel et ne s'appelle pas Access junior.

  3. #3
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Février 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Février 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonsoir,

    A1 différent de A1*

    A1 est sur la première feuille et A1* est sur la deuxième feuille.
    Je l'avais indiqué en légende lors du premier exemple, cette légende est à prendre en compte pour les autres exemples.

    EDIT :

    Votre message m'a donné une idée. Il s'agit d'utiliser ce système d'itération afin de facilité l'écriture de mon but qui est :

    Initialement :
    A1=A1*
    Puis après macro :
    A1 = A1/2 + A1*

    Il me faudrait à ce moment une macro capable d'augmenter le nombre d'itération une après une (en cliquant sur un bouton par exemple)


    Voila

  4. #4
    Membre actif
    Homme Profil pro
    Pompier de service
    Inscrit en
    Février 2014
    Messages
    144
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 58
    Localisation : France, Rhône (Rhône Alpes)

    Informations professionnelles :
    Activité : Pompier de service

    Informations forums :
    Inscription : Février 2014
    Messages : 144
    Points : 223
    Points
    223
    Par défaut
    Salut,

    Pour ta première question, est-ce que cela pourrait convenir ?
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    Sub Division()
    For Each MaCellule In Selection
       MaCellule.FormulaLocal = Evaluate(MaCellule.Value) / 2 & " + " & MaDeuxiemeFeuille.Range(MaCellule.Address).FormulaLocal
       Next MaCellule
    End Sub
    "Rien ne sert de dire ce qu'on fait, si on ne fait pas ce qu'on dit" (Moi)

  5. #5
    Nouveau Candidat au Club
    Homme Profil pro
    Chargé d'affaire
    Inscrit en
    Février 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chargé d'affaire

    Informations forums :
    Inscription : Février 2014
    Messages : 3
    Points : 1
    Points
    1
    Par défaut
    Bonjour Phil'oche,

    Je viens d'essayer votre code sur ma macro, cela semble presque marché, peut être dû à une erreur de ma part lors de l'adaptation du code que voici :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
     
    Sub Division()
    For Each MaCellule In Selection
       MaCellule.FormulaLocal = Evaluate(MaCellule.Value) / 2 & " + " & Worksheets("Système interne").Range("D5").FormulaLocal
       Next MaCellule
    End Sub
    La formule est belle et bien recopiée, il y a juste un "égal" qui se promène au milieu de la formule après macro, le résultat s'affiche de tel manière :

    Select A1 :
    A1=A1/2 + =FormuleA1*


    J'ai discuté de mon problème avec des amis (connaissant le C, C++ etc, mais pas le VBA) qui m'ont expliqué que ma démarche n'était pas bonne.
    En effet, il serait plus intéressant selon eux de d'abord lire ce qu'il y a dans les cellules sélectionnées pour ensuite copier la référence à la cellule contenant la formule, ici le A1*, pour ensuite le coller de nouveau.

    Cela permettrait, selon n'importe quelle cellule sélectionnée, de toujours recopier la bonne formule propre à chaque cellule.

    Exemple :

    A1 = x + A1*

    Avec x une constante
    A1* la formule en feuille 2 de A1


    La macro serait capable de reconnaitre la formule (ou la référence à la cellule) en A1* et de la recopier de nouveau après division.

    A1 = x + A1*
    Reconnaissance de A1*
    A1 = (x + A1*)/2
    A1 = y

    Ajout de la reconnaissance A1* plus tôt :
    A1 = y + A1*

    Avec y = (x + A1*)/2

Discussions similaires

  1. Réponses: 15
    Dernier message: 13/02/2015, 16h24
  2. Affichage d'une image différemment selon les navigateurs
    Par CaNiBaLe dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/06/2012, 14h55
  3. MACRO - Copier une feuille dans toutes les feuilles (sauf 2)
    Par macto dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 09/02/2011, 08h53
  4. resultat d'une formule variable
    Par Roger Combe-Ferrier dans le forum Excel
    Réponses: 1
    Dernier message: 24/08/2010, 20h41
  5. Réponses: 2
    Dernier message: 21/04/2006, 20h18

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