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 sur colonnes variable [XL-2007]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 55
    Par défaut Moyenne sur colonnes variable
    Bonjour a tous.

    Je recherche une macro pour faire une moyenne de prix, le problème c'est que le nombre de colonne est variable.

    Donc en gros il faudrait que le calcul de la moyenne s'effectue de la colonne G, toute les 2 colonnes (G & I & K...) et cela jusqu'à la fin du tableau.

    Merci d'avance

  2. #2
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    Salut,
    As tu des titres à tes colonnes, si oui, quels sont-ils?
    Peut-on trouver des éléments communs aux colonnes à prendre en compte différents de celles à ne pas prendre en compte ?
    Exemple: Tot_A_2008 / Tot_A_2009 / Tot_B_2008 / Tot_B_2009 / ...
    A+

    Re,
    Pas été attentif, j'avais pas vu que tu voulais une Macro...

    Tu peux faire une boucle avec un 'saut'
    Exemple (pas testé, écrit à main levé):

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Dim DerCol as long, c as long, MaSom as long, MonNb as long, MaMoy
     
    DerCol = sheets("Feuil1").cells(1,rows(1).cells.count).end(xltoleft).column 'récupère la dernière colonne remplie sur base de la ligne 1
     
    For c = 7 to DerCol step 2 'Boucle de la colonne 7 (G) à la dernière remplie avec saut de 2, ça veut dire qu'à la boucle suivante c vaudra 9, ensuite 11,...
         MaSom = MaSom + cells(2,c) 'Somme les valeur de la ligne 2 toute les 2 colonne selon la boucle
         MonNb = MonNb+1 'Compte le nombre de colonne (il y a d'autre possibilité mais...)
    next c 'Passe au c suivant
     
    MaMoy = MaSom/MonNb
    A+

  3. #3
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 55
    Par défaut
    je n'arrive pas a tout saisir, voici mon fichier pour faciliter la compréhension.

    Classeur1.xls

  4. #4
    Membre Expert Avatar de Fvandermeulen
    Homme Profil pro
    Développeur informatique
    Inscrit en
    Juillet 2007
    Messages
    1 869
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 50
    Localisation : Belgique

    Informations professionnelles :
    Activité : Développeur informatique
    Secteur : High Tech - Multimédia et Internet

    Informations forums :
    Inscription : Juillet 2007
    Messages : 1 869
    Par défaut
    OK, essaies ça, j'esère que les commentaires sont assez explicites...

    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
    Sub Moy()
     
    Dim DerCol As Long, c As Long, MaSom As Long, MonNb As Long, MaMoy As Long, r As Long
     
    DerCol = Sheets("Feuil1").Cells(2, Rows(2).Cells.Count).End(xlToLeft).Column 'récupère la dernière colonne remplie sur base de la ligne 2
     
    For r = 3 To 22 'Boucle sur les lignes en considérant que le nombre est fixe
        For c = 7 To DerCol Step 2 'Boucle de la colonne 7 (G) à la dernière remplie avec saut de 2, ça veut dire qu'à la boucle suivante c vaudra 9, ensuite 11,...
            MaSom = MaSom + Cells(r, c) 'Somme les valeur de la ligne variable toute les 2 colonne selon la boucle
            MonNb = MonNb + 1 'Compte le nombre de colonne (il y a d'autre possibilité mais...)
        Next c 'Passe au c suivant
        Sheets("feuil1").Cells(r, 5) = Round(MaSom / MonNb, 2)
        MaSom = 0
        MonNb = 0
    Next r
     
    For r = 3 To 22 'Boucle sur les lignes en considérant que le nombre est fixe
        For c = 8 To DerCol Step 2 'Boucle de la colonne 8 (H) à la dernière remplie avec saut de 2, ça veut dire qu'à la boucle suivante c vaudra 9, ensuite 11,...
            MaSom = MaSom + Cells(r, c) 'Somme les valeur de la ligne variable toute les 2 colonne selon la boucle
            MonNb = MonNb + 1 'Compte le nombre de colonne (il y a d'autre possibilité mais...)
        Next c 'Passe au c suivant
        Sheets("feuil1").Cells(r, 6) = Round(MaSom / MonNb, 2)
        MaSom = 0
        MonNb = 0
    Next r
     
    End Sub
    A+

    P.S. J'ai pas vérifié si ligne vide mais c'est possible afin de ne pas avoir des 0€

  5. #5
    Membre confirmé
    Profil pro
    Inscrit en
    Décembre 2008
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Décembre 2008
    Messages : 55
    Par défaut
    Merci Fvandermeulen c'est très sympa.

    J'ai placé les résultats dans la dernière colonne et le tour est joué.

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

Discussions similaires

  1. Comment calculer la moyenne sur une colonne selon un critère
    Par Contact2012 dans le forum Requêtes
    Réponses: 3
    Dernier message: 18/06/2010, 17h07
  2. pb de macro SAS -moyenne sur plusieurs variables
    Par sas_debutant dans le forum Macro
    Réponses: 3
    Dernier message: 31/10/2009, 01h47
  3. moyenne d'une variable sur une partie des valeurs
    Par DiverSIG dans le forum Langage SQL
    Réponses: 2
    Dernier message: 12/09/2009, 23h19
  4. [BO XI] Variable Moyenne sur les X dernieres semaines
    Par bandini dans le forum Débuter
    Réponses: 4
    Dernier message: 23/01/2008, 01h14
  5. tri par moyenne sur plusieurs colonnes
    Par adr22 dans le forum Langage SQL
    Réponses: 2
    Dernier message: 11/12/2007, 17h19

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