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 :

Automatisation moyenne au dernier + couleur


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
    Juillet 2020
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2020
    Messages : 14
    Par défaut Automatisation moyenne au dernier + couleur
    Bonjour,

    J'ai un projet d'automatisation à réaliser et je souhaite faire la moyenne de mon fichier en sachant que le nombre de ligne n'est pas stable il me faudrait donc faire une moyenne qui apparaitrait à la première cellule vide pour qu'elle apparaisse en dessous du total mais qu'elle ne prenne pas en compte le total.

    Utilisateur TOTAL CV
    1 187
    2 1063
    3 598
    4 436
    total 2284
    Moyenne 571
    Objectif

    j'ai vraiment du mal avec les boucles, j'ai fais ceci pour l'instant qui fonctionne bien mais que si il y a toujours 4 lignes.

    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
    Sub moyenne()
     
        Dim C As Range
        Range("B7") = Application.Average(Range("B2:B5"))
        Range("B7").Select
        For Each C In Range("B2:B5")
            If C.Value < Range("B7") Then
                If C.Value < Range("B7") And C.Value > Range("B8") Then
                C.Interior.ColorIndex = 46
                Else
                C.Interior.ColorIndex = 3
                End If
            Else
                C.Interior.ColorIndex = 43
            End If
        Next C
    Je ne comprend pas comment il est possible d'appeler la dernière ligne -1 pour le calcul de la moyenne puis la dernière ligne plus un pour mettre le résultat et la dernière ligne +2 pour récupérer la valeur objectif.
    j'ai essayé plusieurs solution en partant de ceci :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    lastrow = Range("B" & Rows.Count).End(xlUp).Row
    Mais il n'y a rien qui marche

  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,

    Supprimez les 2 lignes "Total" et "Moyenne" et appliquez ceci
    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
    Sub Moyenne()
        Dim C As Range
        Derlig = Range("A" & Rows.Count).End(xlUp).Row
        For Each C In Range("B2:B" & Derlig)
            If C.Value < Range("B" & Derlig) Then
                If C.Value > C.Offset(1, 0).Value Then
                    C.Interior.ColorIndex = 46
                Else
                    C.Interior.ColorIndex = 3
                End If
            Else
                C.Interior.ColorIndex = 43
            End If
        Next C
        Cells(Derlig + 1, "A") = "Total"
        Cells(Derlig + 1, "B") = Application.WorksheetFunction.Sum(Cells(2, "B"), Cells(Derlig, "B"))
        Cells(Derlig + 2, "A") = "Moyenne"
        Cells(Derlig + 2, "B") = Application.Average(Range("B2:B" & Derlig))
    End Sub

    Cdlt

  3. #3
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 566
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 566
    Par défaut
    Bonjour

    Un tableau structuré avec la ligne de total activée et paramétrée sur Moyenne fait cela tout seul sans coder...

  4. #4
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2020
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2020
    Messages : 14
    Par défaut
    Citation Envoyé par 78chris Voir le message
    Bonjour

    Un tableau structuré avec la ligne de total activée et paramétrée sur Moyenne fait cela tout seul sans coder...
    Oui je suis totalement d'accord avec vous mais j'essaie de mettre en place quelque chose de stable pour un service RH qui doit analyser des données exporter et ils ne sont pas très portés excel.

  5. #5
    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,

    Ceci est-il mieux? toujours effacer les lignes "Total" et "Moyenne" avant de lancer la macro
    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
    Sub Moyenne()
        Dim C As Range
        Derlig = Range("A" & Rows.Count).End(xlUp).Row
        Moy = Application.Average(Range("B2:B" & Derlig))
        For Each C In Range("B2:B" & Derlig)
            If C.Value < Moy Then
                If C.Value > C.Offset(1, 0).Value Then
                    C.Interior.ColorIndex = 46
                Else
                    C.Interior.ColorIndex = 3
                End If
            Else
                C.Interior.ColorIndex = 43
            End If
        Next C
        Cells(Derlig + 1, "A") = "Total"
        Cells(Derlig + 1, "B") = Application.WorksheetFunction.Sum(Range(Cells(2, "B"), Cells(Derlig, "B")))
        Cells(Derlig + 2, "A") = "Moyenne"
        Cells(Derlig + 2, "B") = Moy
    End Sub
    Cdlt

  6. #6
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2020
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2020
    Messages : 14
    Par défaut
    Citation Envoyé par ARTURO83 Voir le message
    Bonjour,

    Ceci est-il mieux? toujours effacer les lignes "Total" et "Moyenne" avant de lancer la macro
    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
    Sub Moyenne()
        Dim C As Range
        Derlig = Range("A" & Rows.Count).End(xlUp).Row
        Moy = Application.Average(Range("B2:B" & Derlig))
        For Each C In Range("B2:B" & Derlig)
            If C.Value < Moy Then
                If C.Value > C.Offset(1, 0).Value Then
                    C.Interior.ColorIndex = 46
                Else
                    C.Interior.ColorIndex = 3
                End If
            Else
                C.Interior.ColorIndex = 43
            End If
        Next C
        Cells(Derlig + 1, "A") = "Total"
        Cells(Derlig + 1, "B") = Application.WorksheetFunction.Sum(Range(Cells(2, "B"), Cells(Derlig, "B")))
        Cells(Derlig + 2, "A") = "Moyenne"
        Cells(Derlig + 2, "B") = Moy
    End Sub
    Cdlt
    Merci oui ca fonctionne !! C'est génial !

  7. #7
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Juillet 2020
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 30
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Juillet 2020
    Messages : 14
    Par défaut
    Citation Envoyé par ARTURO83 Voir le message
    Bonjour merci beaucoup pour votre aide j'ai un petit problème au niveau de la somme il m'additionne la cellule de avec la dernière ligne et non pas la totalité des lignes

    EDIT : J'ai trouvé du coup j'ai fait comme pour la moyenne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Cells(Derlig + 1, "B") = Application.WorksheetFunction.Sum(Range("B2:B" & Derlig))
    Encore merci !!!

    EDIT 2 : Je viens de me rendre compte que les couleurs ne sont pas bonnes j'ai tout qui se met en vert alors que j'ai bien des autre couleurs qui devrait apparaitre :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If C.Value < Range("B" & Derlig) Then
    est-ce que cette ligne prend bien en compte la moyenne ?

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

Discussions similaires

  1. [2012] [MDX] Moyenne des derniers prix relevés
    Par added dans le forum SSAS
    Réponses: 2
    Dernier message: 13/09/2017, 08h35
  2. Automatisation moyenne en fonction de la date
    Par mathilde13870 dans le forum Macros et VBA Excel
    Réponses: 5
    Dernier message: 27/06/2014, 15h21
  3. Réponses: 9
    Dernier message: 22/01/2013, 13h40
  4. select moyenne 2 derniers prix
    Par fj6gtv dans le forum Requêtes
    Réponses: 2
    Dernier message: 12/08/2011, 09h50

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