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 :

Somme a deux conditions : valeur et couleur d'une cellule


Sujet :

Macros et VBA Excel

  1. #1
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2013
    Messages : 2
    Par défaut Somme a deux conditions : valeur et couleur d'une cellule
    Bonjour a tous je suis nouveau sur le forum et je commence a débuter en macro

    Je suis en train d'essayer de construire une macro mais la je galere vraiment ! Si une bonne ame pouvait m'aider ca serait vraiment chouette !

    Mon probleme est le suivant : je veux créer une fonction, qui me permettre de sommer les cellulesde la colonne B qui :
    -Sont de couleurs orange
    -Sont sur la meme ligne que les valeurs X sur la colonne A

    En gros la colonne A a plein de valeur, seul les valeurs de la colonne B qui sont sur la meme ligne que les valeurs X de la colonne A m'intéressent, A CONDITION que ces valeurs soient en jaune .

    EN PJ par exemple j'aimerai trouver la somme des valeurs jaune qui correspondent a la valeur F.33027.6.1.6 sur la colonne A.

    QQN peut t'il m'aider pleeease !!

    Merci d'avance
    Jack
    Fichiers attachés Fichiers attachés

  2. #2
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2013
    Messages : 14
    Par défaut
    Salut!

    Je ne sais pas si j'ai tout a fait compris ce que tu attendais mais voilà ce que j'ai pensé:

    - Tu rentres ta chaîne de caractère dans une InputBox
    - Les valeurs qui sont sur la même ligne que cette chaîne de caractère, dans la case adjacente, et dont le fonds est jaune sont sommées

    Le résultat apparaît en bas de la colonne.

    Bien sûr c'est à adapter suivant le fonctionnement voulu

    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
    Sub Test()
     
    Dim x As String
    Dim y As Double
     
    x = InputBox("Valeur:")
     
    y = 0
     
    For i = 1 To 79
     
        If Cells(i, 1).Value = x And Cells(i, 2).Interior.ColorIndex = 6 Then
     
            y = y + Cells(i, 2).Value
     
        End If
     
    Next i
     
    Cells(80, 2).Value = y
     
    End Sub

  3. #3
    Membre Expert
    Homme Profil pro
    Retraité
    Inscrit en
    Avril 2011
    Messages
    1 858
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France

    Informations professionnelles :
    Activité : Retraité

    Informations forums :
    Inscription : Avril 2011
    Messages : 1 858
    Par défaut
    Bonjour,

    Tu trouveras en pièce jointe une solution qui utilise la procédure Worksheet_Change de la feuille.
    Celle-ci permet :
    - de trouver toutes les références qui correspondent à celle indiquée dans la fenêtre de recherche.
    - de sommer les cellules de la colonne adjacente (colonne B) qui sont de couleur jaune.
    La recherche est effectuée avec la méthode Find.
    Les références sont indiquées en cellule D2 par une liste de validation dont la source se situe en Feuil2 (plage nommée "References").
    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
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim C As Range
    Dim firstAddress As String
    Dim Cumul As Double
        If Target.Address = "$D$2" Then
            With Range("A2:A" & Range("A" & Rows.Count).End(xlUp).Row)
                Set C = .Find(Target.Value, LookIn:=xlValues, lookat:=xlWhole)
                If Not C Is Nothing Then
                    firstAddress = C.Address
                    Do
                        If C.Offset(0, 1).Interior.ColorIndex = 6 Then Cumul = Cumul + C.Offset(0, 1).Value
                        Set C = .FindNext(C)
                    Loop While Not C Is Nothing And C.Address <> firstAddress
                End If
                Range("E2") = Cumul
            End With
        End If
    End Sub
    Cordialement.
    Fichiers attachés Fichiers attachés

  4. #4
    Candidat au Club
    Homme Profil pro
    Inscrit en
    Février 2013
    Messages
    2
    Détails du profil
    Informations personnelles :
    Sexe : Homme

    Informations forums :
    Inscription : Février 2013
    Messages : 2
    Par défaut
    Salut !

    Dejà merci beaucoup pour toute les réponses !
    J'ai juste une question supplémentaire, serait-il possible de mettre cela sous forme de fonction. Parce que en fait dans mon vrai dossier , j'ai une colonne de couleur pour chaque mois donc ca me permettrai de juste rentrer ma fonction en bas de chaque différente colonne !

    Un grand merci d'avance!

  5. #5
    Membre averti
    Homme Profil pro
    Étudiant
    Inscrit en
    Janvier 2013
    Messages
    14
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Luxembourg

    Informations professionnelles :
    Activité : Étudiant
    Secteur : Finance

    Informations forums :
    Inscription : Janvier 2013
    Messages : 14
    Par défaut
    J'ai adapté le code que j'avais posté:

    La fonction prend en données la plage de cellules, le code recherché et la couleur de la case adjacente. Elle retourne la somme dans la case ou elle est rentrée.

    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
    Function Truc(p As Range, x As String, c As Integer) As Double
     
    Dim y As Double
     
    y = 0
     
    For i = 1 To p.Rows.Count
     
        If p.Cells(i, 1).Value = x And p.Cells(i, 2).Interior.ColorIndex = c Then
     
            y = y + p.Cells(i, 2).Value
     
        End If
     
    Next i
     
    Truc = y
     
    End Function
    Tu peux certainement adapter le code de gFZT82 de la même façon

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

Discussions similaires

  1. Réponses: 2
    Dernier message: 28/12/2012, 14h22
  2. Somme avec deux conditions
    Par kareem74 dans le forum Oracle
    Réponses: 0
    Dernier message: 29/08/2010, 17h01
  3. Réponses: 2
    Dernier message: 24/02/2010, 16h27
  4. Réponses: 2
    Dernier message: 28/05/2009, 15h44
  5. Réponses: 2
    Dernier message: 22/05/2006, 16h48

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