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 :

Comment obtenir une moyenne à partir de bornes situées sur une autre feuille?


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti Avatar de eliniel
    Femme Profil pro
    Ingénieure Essais et validation
    Inscrit en
    Septembre 2014
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieure Essais et validation
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2014
    Messages : 115
    Points : 429
    Points
    429
    Par défaut Comment obtenir une moyenne à partir de bornes situées sur une autre feuille?
    Bonjour,
    Mon classeur comporte deux feuilles:
    Une feuille qui contient des données et une où l'utilisateur rentre des paramètres.
    L'un des paramètres est un intervalle, définit par deux adresses de cellules dont je me sers pour calculer une moyenne d'une partie d'une colonne. (à faire pour chaque colonne)

    Ce qui ressemble à peu près à ceci.
    Pièce jointe 157072 feuille 1

    Pièce jointe 157073 feuille 2

    Seulement, lorsque que je code en VBA la fonction :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.WorksheetFunctionMax(Sheets("donnees!C27:C28"))
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =MOYENNE("donnees!A27:A28")
    Cela ne donne rien.

    de même en testant de manière directe (dans la barre de formule du tableur), je n'obtient que l'erreur "#VALEUR!".
    Je comprends donc qu'il n'arrive pas à comprendre où est la valeur.

    Une fois la valeur moyenne calculée pour chaque colonne, il me suffira de les copier dans une feuille toute propre afin d'exporter les résultats.

  2. #2
    Candidat au Club
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2014
    Messages : 3
    Points : 4
    Points
    4
    Par défaut Info
    Si tu donnais ton fichier ou un exemple, ce serait plus facile de corriger le problème

  3. #3
    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
    La moyenne, c'est la somme divisée par le nombre.

    Tu fais la somme de ce qui est inférieur à ta borne supérieure (SOMME.SI) et tu soustrais la somme de ce qui est inférieur à la borne inférieure.
    Ca te donne la somme de ce qui se trouve entre les deux bornes (tu peux aussi l'obtenir avec un SOMME.SI.ENS).

    Tu fais la même chose pour les nombres (avec deux NB.SI ou un NB.SI.ENS).

    Tu divises le premier par le second.

    Il n'existe malheureusement pas de MOYENNE.SI.ENS qui aurait permis de faire tout ça d'un coup.

  4. #4
    Candidat au Club
    Homme Profil pro
    Chef de projet NTIC
    Inscrit en
    Septembre 2014
    Messages
    3
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Chef de projet NTIC
    Secteur : Finance

    Informations forums :
    Inscription : Septembre 2014
    Messages : 3
    Points : 4
    Points
    4
    Par défaut
    La fonction MOYENNE.SI.ENS existe dans Excel 2010

  5. #5
    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 me suis arrêté à 2007 (pour l'instant), d'où ma méconnaissance de cette fonction.

  6. #6
    Membre averti Avatar de eliniel
    Femme Profil pro
    Ingénieure Essais et validation
    Inscrit en
    Septembre 2014
    Messages
    115
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Bas Rhin (Alsace)

    Informations professionnelles :
    Activité : Ingénieure Essais et validation
    Secteur : Industrie

    Informations forums :
    Inscription : Septembre 2014
    Messages : 115
    Points : 429
    Points
    429
    Par défaut
    La fonction Moyenne.Si.ens donne quoi une fois transcrise en vba?

    Voici mon code, qui est censé me donner la moyenne, la valeur minimum et maximum de cette colonne.
    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
     
    REF = Sheets("donnees").Cells(27, 1).Value
    Ref2 = Sheets("donnees").Cells(28, 1).Value
     
    'Moyenne, valeur max, valeur min: Temp T°air sec1
        Sheets("donnees").Activate     'activer la feuille des données
        'Calcul de la moyenne
        MoyT°airsec1 = Application.WorksheetFunction.Average(Sheets("donnees!(INDIRECT(Ref:Ref2)"))    'faire la moyenne des valeurs de la colonne C
        'Calcul de la valeur max
        Valmax1 = Application.WorksheetFunctionMax(Sheets("donnees!C27:C28"))
        'Calcul de la valeur min
        Valmin1 = Application.WorkSheetFunctionMin(Sheets("donnees!C27:C28"))
        'Calcul d'écart-type
        ec1 = Application.WorksheetFunction.StDev(Sheets("donnees!C27:C28"))
        'Affichage des résultats
        Sheets("resultats").Activate   'Activer la feuille des résultats
        Range("G4") = MoyT°airsec1     'Afficher la valeur dans la cellule adaptée
        Range("H4") = Valmin1
        Range("II4") = Valmax1
        Range("J4") = ec1

    EDIT: J'ai trouvé une autre solution.
    Je place sous les bornes les cases indirectes de ces bornes et je fais la moyenne de ces cases indirectes.
    De manière écrite sous le tableur ça marche.
    Mais comment écrire la fonction indirecte d'une cellule en VBA?

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

Discussions similaires

  1. Relancer une fonction à partir d'un clique sur une checkbox
    Par yop3112 dans le forum Interfaces Graphiques
    Réponses: 2
    Dernier message: 25/06/2015, 11h45
  2. ouvrit une base à partir d'un form sur une autre
    Par Stéph utilisateur d'acces dans le forum IHM
    Réponses: 3
    Dernier message: 22/04/2008, 08h12
  3. [EJB] EJB sur une PC et l'application web sur un autre
    Par hichaminfo dans le forum Java EE
    Réponses: 1
    Dernier message: 24/04/2007, 16h16
  4. Réponses: 3
    Dernier message: 19/04/2007, 14h21
  5. Requete sur une table qui pointe 2 fois sur une autre
    Par Satch dans le forum Langage SQL
    Réponses: 1
    Dernier message: 10/01/2006, 08h48

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