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 :

Ajouter NBVAL à une boucle pour obtenir la moyenne [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre éprouvé Avatar de Vadorblanc
    Profil pro
    Inscrit en
    Février 2008
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 309
    Par défaut Ajouter NBVAL à une boucle pour obtenir la moyenne
    Bonjour
    Cette boucle insère une ligne à chaque changement de la colonne G (7ème) fait la somme mise en colonne H (8ème) des nombres de la colonne E (5ème).
    Je souhaiterais que la somme H soit divisée par NBVAL, c'est à dire si 5 nombres additionnées en E, que ce soit divisé par 5, sachant que les nombres additionnés sont variables.
    Merci


    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 Module11_Insere_Lignes_et_Somme_()
     
     
    Dim oWsh As Excel.Worksheet
    Dim i As Long, curTot As Currency, lDerCompte As Long
     
    Set oWsh = ThisWorkbook.Worksheets(2)
    lDerCompte = oWsh.Range("A" & Application.Rows.Count).End(xlUp).Row
     
    If lDerCompte <= 2 Then Exit Sub
     
    For i = oWsh.Range("A" & Application.Rows.Count).End(xlUp).Row To 2 Step -1
        If Cells(i, 7) <> Cells(i - 1, 7) Then ' 7 = insert ligne en fonction de changement col G
     
            curTot = curTot + oWsh.Cells(i, 5) ' Nombres à additionner pris en compte en col 5
     
            oWsh.Cells(lDerCompte, 8) = curTot 'somme des nombres additionnés mis en col 8
            lDerCompte = i - 1
            curTot = 0
            oWsh.Rows(i).Insert
        Else
            curTot = curTot + oWsh.Cells(i, 5)
        End If
     
    Next i
     
    Set oWsh = Nothing
     
    End Sub

  2. #2
    Expert éminent Avatar de mercatog
    Homme Profil pro
    Inscrit en
    Juillet 2008
    Messages
    9 435
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Autre

    Informations forums :
    Inscription : Juillet 2008
    Messages : 9 435
    Par défaut
    Bonjour Vadorblanc

    Je te propose une autre manière qui utilise la fonction MOYENNE d'excel.
    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 Module11_Insere_Lignes_et_Somme_()
    Dim i As Long, Deb As Long, lDerCompte As Long
    Dim oWsh As Worksheet
     
     
    Application.ScreenUpdating = False
    Set oWsh = ThisWorkbook.Worksheets(2)
    With oWsh
        lDerCompte = .Range("A" & .Rows.Count).End(xlUp).Row
     
        If lDerCompte > 2 Then
            Deb = lDerCompte
            For i = lDerCompte To 2 Step -1
                If .Range("G" & i).Value <> .Range("G" & i - 1).Value Then
                    With .Range("H" & Deb)
                        .FormulaR1C1 = "=AVERAGE(R[" & i - Deb & "]C[-3]:RC[-3])"
                        .Value = .Value
                        .NumberFormat = "#,##0.00 $"
                    End With
                    .Rows(i).Insert
                    Deb = i - 1
                End If
            Next i
        End If
    End With
    Set oWsh = Nothing
    End Sub

  3. #3
    Membre éprouvé Avatar de Vadorblanc
    Profil pro
    Inscrit en
    Février 2008
    Messages
    309
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2008
    Messages : 309
    Par défaut
    Bonjour Mercatog

    C'est parfait, ça fonctionne

    Je viens d'essayer de transformer une formule Excel en VBA avec la fonction "Moyenne"
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    .FormulaR1C1 = "=AVERAGE(R[-6]C:R[-1]C)"
    Toujours en admiration de tes réponses sur ce forum

    Un grand merci à toi

    Bien amicalement

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

Discussions similaires

  1. Réponses: 21
    Dernier message: 23/05/2007, 16h16
  2. ajout d'une procédure pour un évènement
    Par Wormus dans le forum wxPython
    Réponses: 3
    Dernier message: 14/10/2006, 16h54
  3. je sais pas utilisé une boucle pour ?
    Par napz dans le forum Général JavaScript
    Réponses: 5
    Dernier message: 09/10/2006, 01h09
  4. Réponses: 5
    Dernier message: 29/07/2006, 00h35
  5. [ImageMagick] Une boucle pour ImageLine ?
    Par isa150183 dans le forum Bibliothèques et frameworks
    Réponses: 1
    Dernier message: 26/11/2005, 18h41

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