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 avec VBA [Toutes versions]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2019
    Messages : 11
    Par défaut Calcul de moyenne avec VBA
    Salut à tous,

    Je dispose d'un classeur avec une centaine de feuilles dans laquelle j'aimerais faire un calcul de moyenne de façon dynamique (avec plages de cellules variables) dans chacune d'entre elles.

    Avec l'enregistreur de Macro et les adaptations que j'y ai effectué, j'en ai déterminé le code suivant:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
     
    Sub test()
    Dim DerLigneMat As Long
    DerLigneMat = Range("A" & Rows.Count).End(xlUp).Row
     
    Range("B3").Select
    ActiveCell.FormulaR1C1 = "=AVERAGE(R[6]C[8]:R[" & DerLigneMat & "]C[8])/(AVERAGE(R[6]C[7]:R[" & DerLigneMat & "]C[7])+AVERAGE[R6]C[8]:R[" & DerLigneMat & "]C[8]))"
    End sub
    Le soucis est que Visual Basic m'affiche un message d'erreur avec ce code. Comment pourrais-je m'y prendre afin de prendre en compte la dernière ligne de ma plage de chaque feuille?

  2. #2
    Expert confirmé
    Homme Profil pro
    Electrotechnicien
    Inscrit en
    Juillet 2016
    Messages
    3 241
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 71
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Electrotechnicien

    Informations forums :
    Inscription : Juillet 2016
    Messages : 3 241
    Par défaut
    Bonjour,

    erreur en bleu dans la formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "=AVERAGE(R[6]C[8]:R[" & DerLigneMat & "]C[8])/(AVERAGE(R[6]C[7]:R[" & DerLigneMat & "]C[7])+AVERAGE[R6]C[8]:R[" & DerLigneMat & "]C[8]))"
    la bonne formule
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "=AVERAGE(R[6]C[8]:R[" & DerLigneMat & "]C[8])/(AVERAGE(R[6]C[7]:R[" & DerLigneMat & "]C[7])+AVERAGE(R[6]C[8]:R[" & DerLigneMat & "]C[8]))"
    Pour balayer toutes les feuilles, il faut employer une boucle FOR, chercher la dernière ligne de chaque feuille
    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
        For i = 1 To Sheets.Count
            DerLigneMat = Range("A" & Rows.Count).End(xlUp).Row
            Sheets(i).[B3].FormulaR1C1 = "=AVERAGE(R[6]C[8]:R[" & DerLigneMat & "]C[8])/(AVERAGE(R[6]C[7]:R[" & DerLigneMat & "]C[7])+AVERAGE(R[6]C[8]:R[" & DerLigneMat & "]C[8]))"
        Next i
    Cdlt

  3. #3
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    bonjour
    heu..ARTURO83 tu es sur !!!?????
    tu n'a pas l'impression qu'il manque quelque chose sur la ligne "DerLigneMat ="
    Pour balayer toutes les feuilles, il faut employer une boucle FOR, chercher la dernière ligne de chaque feuille
    exemple:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    For i = 1 To Sheets.Count
            DerLigneMat = Range("A" & Rows.Count).End(xlUp).Row
            Sheets(i).[B3].FormulaR1C1 = "=AVERAGE(R[6]C[8]:R[" & DerLigneMat & "]C[8])/(AVERAGE(R[6]C[7]:R[" & DerLigneMat & "]C[7])+AVERAGE(R[6]C[8]:R[" & DerLigneMat & "]C[8]))"
        Next i
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juin 2019
    Messages
    11
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 31
    Localisation : France, Eure (Haute Normandie)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juin 2019
    Messages : 11
    Par défaut
    Merci beaucoup à tous les deux. La macro fonctionne parfaitement maintenant.

  5. #5
    Inactif  

    Homme Profil pro
    cuisiniste
    Inscrit en
    Avril 2009
    Messages
    15 374
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Var (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : cuisiniste
    Secteur : Bâtiment

    Informations forums :
    Inscription : Avril 2009
    Messages : 15 374
    Billets dans le blog
    8
    Par défaut re
    re
    je donne la ligne au cas ou
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    DerLigneMat = sheets(i).Range("A" & Rows.Count).End(xlUp).Row
    mes fichiers dans les contributions:
    mail avec CDO en vba et mail avec CDO en vbs dans un HTA
    survol des bouton dans userform
    prendre un cliché d'un range

    si ton problème est résolu n'oublie pas de pointer : : ça peut servir aux autres
    et n'oublie pas de voter

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

Discussions similaires

  1. calcul de moyenne avec sommeprod
    Par nazaire dans le forum Excel
    Réponses: 5
    Dernier message: 08/02/2009, 16h06
  2. Réponses: 14
    Dernier message: 06/05/2008, 15h16
  3. Calculer une moyenne avec des jours absents
    Par guidav dans le forum Langage SQL
    Réponses: 7
    Dernier message: 25/01/2008, 09h35
  4. Calculer une moyenne avec une matrice
    Par progfou dans le forum Algorithmes et structures de données
    Réponses: 5
    Dernier message: 05/06/2006, 16h47
  5. calculer une moyenne avec une requete externe
    Par allowen dans le forum Langage SQL
    Réponses: 3
    Dernier message: 27/01/2005, 16h02

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