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 :

Moyenne Pondérée en vba


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 50
    Par défaut Moyenne Pondérée en vba
    Bonjour à tous ,
    Je cherche à calculer une moyenne pondérée!

    En m'y prenant de la facon suivant :
    J'ai 2 colonnes avec des chiffres dans chacunes des cellules.
    pour la ligne 1 je souhaite multiplier les 2 cellules entre elles.
    Puis faire de meme pour chaque ligne de mes colonnes et additionner l'ensemble.

    Enfin, je souhaite diviser le resultat obtenu par la somme de la 1ere colonne (une moyenne ponderé quoi!)

    Pour l'instant je fais une moyenne simple de ma colonne!
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
     
    Sub CalculMoyenneTerme()
     Application.ScreenUpdating = False
     
      Sheets("Gestion").Activate
      Range("N1").Select
     
        K = (Range("N1").End(xlDown).Row + 1)
         Formule = "=AVERAGE(" & Cells(2, 14).Address & ":" & Cells(K - 1, 14).Address & ")"
        Cells(K, 14).Value = Formule
     
     Application.ScreenUpdating = True
      End Sub
    Merci pour ton aide à toi qui connait la réponse à cette question!

  2. #2
    Membre Expert
    Avatar de zazaraignée
    Profil pro
    Étudiant
    Inscrit en
    Février 2004
    Messages
    3 174
    Détails du profil
    Informations personnelles :
    Localisation : Canada

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Février 2004
    Messages : 3 174
    Par défaut
    Pas besoin de Activate ni de Select qui ralentissent l'exécution et font clignoter inutilement l'écran...

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    Function CalculMoyenneTerme(valeursMoyenne As Range, valeursSomme As Range) As Double
        Dim laMoyenne As Double, laSomme As Double
        laMoyenne = Average(valeursMoyenne)
        laSomme = Sum(valeursSomme)
        CalculMoyenneTerme = laSomme / laMoyenne
    End Function
    Tu peux même utiliser cette fonction comme formule de cellule !

    C'est-y pas magique !

  3. #3
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 50
    Par défaut Magie: je comprends plus rien!
    Bonjour Zaza,

    Pourrais tu me donner quelques infos sup pour l'utilisation de cette fonction?

    En effet je ne sais pas trop comment l'utiliser, la remplir et l'exploiter ...

    Cordialement,

  4. #4
    Membre averti
    Inscrit en
    Mai 2008
    Messages
    50
    Détails du profil
    Informations forums :
    Inscription : Mai 2008
    Messages : 50
    Par défaut Petit .
    Bon finallement voici le code que j'ai utilisé:

    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
    27
    28
    29
     
    Sub CalculMoyenneCG()
    Application.ScreenUpdating = False
     
      Sheets("Gestion").Activate
     
    lDerniereLigneReelle = Range("A1").End(xlDown).Address
    lDerniereLigneReelle = Range(lDerniereLigneReelle).Row
     
    For I = 1 To lDerniereLigneReelle
        K = (Range("A1").End(xlDown).Row + 1)
         Formule1 = "=(" & Cells(I, 15).Address & "*" & Cells(I, 12).Address & ")"
        Cells(I, 37).Value = Formule1
    Next
     
         H = (Range("N1").End(xlDown).Row + 1)
         Formule2 = "=Sum(" & Cells(2, 37).Address & ":" & Cells(K - 1, 37).Address & ")"
        Cells(K, 37).Value = Formule2
     
                    G = (Range("N1").End(xlDown).Row + 1)
                 Formule3 = "=Sum(" & Cells(2, 12).Address & ":" & Cells(K - 1, 12).Address & ")"
                Cells(K, 38).Value = Formule3
     
                            Cells(K, 15).Value = Cells(K, 37).Value / Cells(K, 38).Value
                            Cells(K, 15).NumberFormat = "0.0000"
     
      Application.ScreenUpdating = True
     
      End Sub
    Il fonctionne très bien!

    Si quelqu'un à une idée pour l'ameliorer je suis à votre écoute, sinon cette discussion passera en mode résolu d'ici peu.

    Cordialement

    rsoul

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

Discussions similaires

  1. Moyenne pondérée VBA nbre lignes variables
    Par Piloute69 dans le forum Macros et VBA Excel
    Réponses: 0
    Dernier message: 11/06/2010, 15h37
  2. Réponses: 4
    Dernier message: 28/07/2006, 08h31
  3. Requête sql, moyenne pondérée
    Par ouiffi dans le forum Langage SQL
    Réponses: 2
    Dernier message: 26/07/2006, 11h03
  4. URGENT : Moyenne pondéré?
    Par cquadjul dans le forum MS SQL Server
    Réponses: 1
    Dernier message: 24/04/2006, 19h08
  5. Moyenne pondérée
    Par Tijee dans le forum Langage SQL
    Réponses: 7
    Dernier message: 28/01/2006, 21h13

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