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 :

Average formula avec selection variable [Toutes versions]


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Juillet 2022
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Juillet 2022
    Messages : 2
    Points : 2
    Points
    2
    Par défaut Average formula avec selection variable
    Bonjour

    Le but de ce code est de faire une moyenne avec une selection de cellule qui varie d une ligne par jour.

    Le code pointe sur la derniere ligne pleine et calcul la moyenne sur les 5 jours précédent. Derniere ligne pleine est la ligne 145.

    Le résultat de ce calcul est dans la cellule M57.

    Cependant => le code me renvoie sur la moyenne des datas lignes 198 - 203 à la place de la ligne 145 à 140

    l'idee c est que chaque jour une ligne s ajoutera et chaque jour ma moyenne se calculera sur les 5 dernieres lignes. Donc demain ça sera la moyenne de la ligne 141 à 146

    Pourriez vous m'aider à comprendre ou se situe mon erreur ?

    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
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    46
    47
    48
    49
    50
    51
    52
    53
    54
    55
    Sub LR()
     
     
    'STEP 1 : Extend formulas last line main sheet
    '-------------------------------------------------------------------------
        Dim x   As Long
        Dim y   As Long
     
        Application.ScreenUpdating = False
     
        With ActiveSheet
    'Find last row in column A
     
            x = .Cells(.Rows.Count, 1).End(xlUp).Row
     
     
    'Find last column for row X
     
            y = .Cells(x, .Columns.Count).End(xlToLeft).Column
     
     
     
    'With range [x1:xy]
            With .Cells(x, 1).Resize(, y)
                .Copy
                With .Offset(1)
                    .PasteSpecial xlPasteFormats
                    .PasteSpecial xlPasteFormulas
                End With
            End With
        End With
     
        With Application
            .CutCopyMode = False
            .ScreenUpdating = True
        End With
    '-------------------------------------------------------------
     
     
    'STEP 2 : Average Daily
    '-------------------------------------------------------------------------
    Dim x1 As Long
    Dim x2 As Long
    Dim txtFormula As String
     
    With ActiveSheet
    x1 = .Cells(.Rows.Count, 1).End(xlUp).Row
    x2 = x1 - 5
     
    txtFormula = "= Average(R" & x1 & "C3:R" & x2 & "C3)"
    Range("M57").Formula = txtFormula
     
    End With
     
    End Sub

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    12 773
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 12 773
    Points : 28 637
    Points
    28 637
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Cela crève les yeux, c'est votre concaténation qui n'est pas correcte.
    A mon avis, vous mélangez les références R1C1 et A1

    En référence A1 : =MOYENNE(C3:C7) en VBA ou version anglaise d'excel =AVERAGE(C3:C7)

    En référence R1C1 : =MOYENNE(L(-2)C(-2):L(2)C(-2)) en VBA ou version anglaise d'excel =AVERAGE(R[-2]C[-2]:R[2]C[-2])

    En VBA on utilise la propriété Formula pour le premier cas et FormulaLocal pour le second

    Donc en supposant que nous utilisons le référencement A1.
    La variable fr représente la ligne 3 et rl la ligne 7 et la variable txtFormula la chaîne représentant la formule
    Nous écrivons la formule en cellule F5
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    Sub T()
      Dim rf As Long, rl As Long
      Dim txtFormula As String
      rf = 3: rl = 7
      txtFormula = "=AVERAGE(C" & rf & ":C" & rl & ")"
      Range("F5").Formula = txtFormula
    End Sub
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Candidat au Club
    Homme Profil pro
    Analyste d'exploitation
    Inscrit en
    Juillet 2022
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 42
    Localisation : France, Paris (Île de France)

    Informations professionnelles :
    Activité : Analyste d'exploitation

    Informations forums :
    Inscription : Juillet 2022
    Messages : 2
    Points : 2
    Points
    2
    Par défaut
    merci beaucoup pour votre aide. En effet mon erreur saute aux yeux

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

Discussions similaires

  1. [XL-2019] Problème de variable avec Range.Formula
    Par TitiPointCom67 dans le forum Excel
    Réponses: 10
    Dernier message: 15/02/2022, 18h27
  2. [XL-2013] Range avec colonnes variables
    Par lulu85 dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 16/01/2017, 18h44
  3. Syntaxe Range avec une variable pour la colonne
    Par Spykerman dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 25/06/2008, 13h50
  4. Somme d'une colonne (avec nombre de rangée variable)
    Par Berny77 dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 13/05/2008, 23h30
  5. Problème avec Range.Formula
    Par zerti dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 23/07/2007, 17h25

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