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 :

calcul de moyenne par colonne (fonction GetColumnAverage )


Sujet :

Macros et VBA Excel

  1. #1
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 81
    Points : 50
    Points
    50
    Par défaut calcul de moyenne par colonne (fonction GetColumnAverage )
    Bonjour,

    Je souhaiterai écrire une fonction GetColumnAverage qui à partir d’un tableau, renvoie la moyenne par colonne.
    Exemple : en passant ce tableau en entrée de la fonction

    col1 col2 col3
    1 2 3
    2 3 4
    3 4 5
    4 5 6
    5 6 7

    On obtient ce résultat :
    col1 col2 col3
    3 4 5

    Je vous remercie de votre aide
    cdt

  2. #2
    Invité
    Invité(e)
    Par défaut
    Bonjour,

    As-tu déjà un début de code ? Si oui, où est ce que tu bloques ? Si non, as-tu une petite idée de comment commencer ? (en supposant que tu es déjà fait du vba).

  3. #3
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    A la sauvette

    sur la plage contiguë de la feuille active en partant de A1

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Sub ioi()
    Dim Tabl(), Resultat(), i As Long
    Tabl = Cells(1, 1).CurrentRegion.Value      ' récupération de la plage
    ReDim Resultat(1 To UBound(Tabl, 2))        ' création du tableau de résultat 
        For i = LBound(Tabl, 2) To UBound(Tabl, 2)  ' boucle sur chaque colonne // SINON For i = LBound(Resultat) To UBound(Resultat)
            Resultat(i) = Application.Average(Application.Index(Tabl, , i)) ' moyenne de la colonne
        Next i
    End Sub

  4. #4
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 81
    Points : 50
    Points
    50
    Par défaut
    Merci joe.levrai pour votre retour.

    par contre la personne ne veut pas de la fonction Average d’Excel dans le code.

    c'est ça qui me bloque.

    Merci de votre aide.

  5. #5
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Ceci n'est pas la fonction average de la classe WorksheetFunction (les fonction de feuille de calcul), mais de l'objet Application

    Si la personne souhaite emprunter des chemins détournés pour réinventer la poudre, c'est sans moi car ceci ressemble donc à un exercice scolaire, dont la résolution mathématique est très bête.

    Bon courage

  6. #6
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 81
    Points : 50
    Points
    50
    Par défaut
    Merci pour votre retour.
    Je vais tester votre code

  7. #7
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 81
    Points : 50
    Points
    50
    Par défaut
    Merci joe.levrai

    j'ai tester le code mais je ne vois pas mes résultats.

    je souhaiterai voir afficher les résultats dans la feuille.

    pour rappel le resultat attendu est:

    colonne1 colonne2 colonne3
    3 4 5

  8. #8
    Expert éminent

    Homme Profil pro
    Curieux
    Inscrit en
    Juillet 2012
    Messages
    5 073
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Curieux
    Secteur : Arts - Culture

    Informations forums :
    Inscription : Juillet 2012
    Messages : 5 073
    Points : 9 853
    Points
    9 853
    Billets dans le blog
    5
    Par défaut
    Bonjour,

    les résultats sont dans le tableau Resultat
    il suffit d'injecter son contenu sur la feuille

    Les trois dernières ligne :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    Sub ioi()
    Dim Tabl(), Resultat(), i As Long
    Tabl = Cells(1, 1).CurrentRegion.Value      ' récupération de la plage
    ReDim Resultat(1 To UBound(Tabl, 2))        ' création du tableau de résultat
        For i = LBound(Tabl, 2) To UBound(Tabl, 2)  ' boucle sur chaque colonne // SINON For i = LBound(Resultat) To UBound(Resultat)
            Resultat(i) = Application.Average(Application.Index(Tabl, , i)) ' moyenne de la colonne
        Next i
     
        With ThisWorkbook.Worksheets.Add
            .Cells(1, 1).Resize(1, UBound(Resultat)).Value = Resultat
        End With
    End Sub

  9. #9
    Membre du Club
    Inscrit en
    Juillet 2009
    Messages
    81
    Détails du profil
    Informations forums :
    Inscription : Juillet 2009
    Messages : 81
    Points : 50
    Points
    50
    Par défaut
    merci beaucoup

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

Discussions similaires

  1. [MySQL] calcul de moyenne par colonne
    Par toulousain3117 dans le forum PHP & Base de données
    Réponses: 6
    Dernier message: 01/07/2017, 18h48
  2. Réponses: 2
    Dernier message: 23/05/2013, 18h14
  3. Réponses: 2
    Dernier message: 16/02/2011, 14h59
  4. [Oracle] Calcul de moyenne par module
    Par naazih dans le forum Langage SQL
    Réponses: 14
    Dernier message: 27/04/2006, 14h38
  5. Réponses: 5
    Dernier message: 29/12/2005, 10h31

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