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 :

Formule dépendante de la valeur d'une cellule


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 93
    Points : 49
    Points
    49
    Par défaut Formule dépendante de la valeur d'une cellule
    Bonjour.

    Je souhaiterais écrire une formule dépendant de la vealur d'une cellule : quand la valeur change, la plage de cellule à laquelle la formule s'applique change.

    Si la cellule contient la valeur 1, faire la somme des cellules de A2 à G2.
    Si c'est deux, alors on somme de A4 à G4.

    En gors écrire quelque chose comme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Somme(L(2*A1)C(1):L(2*A1)C(7))
    Merci pour votre aide.

    (je sais que les parenthèses indique un déplacement parrapport à la cellule sélectionner. Mais comme je na sais pas écrire ce que je veux faire, la notation fonctionnelle, entre parenthèse, me semble pertinente).

  2. #2
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Bonjour,

    Via une formule ou via un bout de code en VBA ?

    Via une formule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(A1=1;SOMME(A2:G2);SI(A1=2;SOMME(A4:G4);"***"))
    "***" = résultat si A1 est différent de 1 ou de 2

  3. #3
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 93
    Points : 49
    Points
    49
    Par défaut
    Merci de ta réponse.

    Ce srait plutôt une formule que je mettrais dans la celule par l'intermédiare d'un code vba.

    Pour se que tu me proposes : je souhaiterais ne pas avoir à énumérer tous les cas... mais que cela marche quelle que soit la valeur de A1. Quelquechose du style

    Si(A1=i,Somme(...))

    Je voudrais donc faire intervenir la valuer de A1 dans les coordonnées des cellules.

  4. #4
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    euuh oui ok mais cela ne pourra quand même pas se faire via la boule de cristal...quelque soit la valeur de A1 ça ne veut rien dire, il faut fixer des conditions.

    A1 peut être = de 1 à combien ?
    Si A1 = 1 --> somme A2:G2
    Si A1 = 2 --> somme A4:G4
    Si A1 = 3 --> ?? on continue un pas de 2 ? somme A6:G6 ?
    Si A1 = 7 --> somme A14:G14 ?

  5. #5
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 93
    Points : 49
    Points
    49
    Par défaut
    Il n'y a pas de boule de cristal; la seule condition serait que a1 soit un nombre entier strictement positif, et encore.

    Je voudrais que cela marche comme une fonction : f(x)=2x+3. Si x=1, alors f(x)=5...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Somme(Cellule(f(A1),g(A1)):Cellule(h(A1),i(A1))
    Faire dépendre les coordonnées des cellules de la valeur de A1, cela directement par la syntaxe de la formule.

    Mais peut-être que ce n'est pas possible et qu'il faut que je crée une fonction en vba.

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    function Sommme(Valeur)
     
    Somme=somme(Cells(2*valeur,1).address:Cells(2*valeur,7).address)
     
    end
    Et dans une cellule =Sommme(A1)

    ????????????????????????

  6. #6
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Si j'ai bien compris, cela devrait ressembler à :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SOMME(DECALER(A1;(2*A1)-1;0;1;7))

  7. #7
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 93
    Points : 49
    Points
    49
    Par défaut
    Merci.

    C'est vrai que les arguement ligne et colonne de decaler me permettent d'utiliser la valeur d'une cellule et même un calcul dépendant de celle-là.
    Je crois que ça me suffire, cependant ce n'est pas ce que j'espérais.

    Je voulais queuque chose de plus souple, qui ne m'oblige pas à avoir une plage de référence, du genre

    Somme(L[A1]C2:L[A1]C14), La valeur entre crochet représentant le numéro de la ligne qui se trouve dans la cellule a1.

    Maleheureusement les crochets n'existe pas. Si je met des parenthèses, ça représente un déplacement et sans parenthèse, ça ne marche pas.

  8. #8
    Expert éminent
    Avatar de fring
    Homme Profil pro
    Engineering
    Inscrit en
    Février 2008
    Messages
    3 900
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 61
    Localisation : Belgique

    Informations professionnelles :
    Activité : Engineering

    Informations forums :
    Inscription : Février 2008
    Messages : 3 900
    Points : 7 964
    Points
    7 964
    Par défaut
    Citation Envoyé par Apranax Voir le message
    Je voulais queuque chose de plus souple, qui ne m'oblige pas à avoir une plage de référence, du genre

    Somme(L[A1]C2:L[A1]C14), La valeur entre crochet représentant le numéro de la ligne qui se trouve dans la cellule a1.
    Tu peux m'expliquer où est la souplesse par rapport à la formule Décaler ???

  9. #9
    Membre du Club
    Profil pro
    Inscrit en
    Février 2008
    Messages
    93
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 93
    Points : 49
    Points
    49
    Par défaut
    En fait, j'ai vu que l'on pouvait choisir la largeur et la hauteur de la plage, donc c'est parfait.


    Merci beaucoup pour ton aide.

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

Discussions similaires

  1. [XL-2007] Formule pour récuperer valeur d'une cellule à partir d'une autre
    Par toushusss dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 26/09/2011, 17h23
  2. formule qui récupere la valeur d'une cellule
    Par huître dans le forum Excel
    Réponses: 14
    Dernier message: 09/05/2011, 21h02
  3. [XL-2003] Formule d'appel de la valeur d'une cellule dans une feuille différente
    Par julieng31 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 29/11/2010, 08h55
  4. Réponses: 3
    Dernier message: 27/04/2010, 19h00
  5. Réponses: 1
    Dernier message: 31/07/2007, 09h19

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