Fonction somme.si avec condition couleur cell

lotussss -  
 lotussss -
Bonjour,

Est-il possible d'utiliser la condition de la couleur d'une cellule dans la fonction somme.si?

Merci.
Configuration: Windows Vista Internet Explorer 7.0

13 réponses

  1. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Salut,

    En VBA, avec une fonction personnalisée ou macro, avec une formule, faut voir comment tu as colorisé tes cellules, si c’est avec une mise en forme conditionnelle, il est possible de récupérer la condition de cette mise en forme, le mieux est que tu mettes ton fichier sans données confidentielles sur le forum avec ce lien

    https://www.cjoint.com/

    A+

    Un problème sans solution est un problème mal posé  (Einstein)
    1
    1. lotussss
       
      Merci,

      J'ai découvert la fonction "formule" de la mise en forme conditionnelle qui m'a permis d'arriver à mes fins. Maintenant le hic c'est que je suis limitée à 3 conditions et que j'en ai besoin de 12 sur excel 2003. j'ai enregistré une macro qui utilise la mise en forme conditionnelle pour voir comment s'est rédigé et sur le même modèle j'ai essayé d'ajouter des lignes mais ça fonctionne pas...une idée pour résoudre ce problème?

      Merci
      0
  2. Mike-31 Messages postés 18405 Date d'inscription   Statut Contributeur Dernière intervention   5 147
     
    Re,

    Oui en VBA, quelles sont les conditions attrivuées à chaque couleur

    A+

    Un problème sans solution est un problème mal posé  (Einstein)
    1
    1. lotussss
       
      La couleur de la cellule depend d'une partie de l'intitulé d'un libellé qui se trouve en LC-2. D'ailleurs à ce sujet n'y a t-il pas comme sous excel 2007, la possibilité d'associer la mise en forme automatique à partir d'une partie d'un nom genre *nom* et non du nom exact?

      Merci.
      0
      1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320 > lotussss
         
        bonjour tt le monde

        pas trop compris ta demande:
        associer la mise en forme automatique à partir d'une partie d'un nom genre *nom* et non du nom exact?
        mise en forme conditionnelle plutôt qu'automatique ? (c'est pas pareil)

        essaies cette syntaxe
        if tonrésultat like "*nom*" then...
        0
  3. Selba
     
    Bonjour,

    J'ai fait un exemple avec des cellules colorées sur un tableau sur la plage F9:F11.
    Lors de la coloration des cellules, j'ai enregistré une macro pour pouvoir récupérer la valeur (interior.color)
    correspondant à la couleur : 255 pour rouge...
    Ensuite, je fais un petit programme VBA qui parcourt ma zone et qui augmente une variable si la couleur est rouge......
    Avec la formule if ou select case, on peut augmenter le nombre de couleur.

    A +

    Sub AJOUT()
    Dim SOMME_ROUGE As Integer
    Dim SOMME_JAUNE As Integer
    Dim i As Integer

    SOMME_ROUGE = 0
    SOMME_JAUNE = 0

    'Ma zone de saisie est F9:F11 et je parcours cette zone avec une boucle
    For i = 9 To 11
    Range("F" & i).Select

    '255 couleur rouge
    If Selection.Interior.Color = 255 Then
    SOMME_ROUGE = SOMME_ROUGE + ActiveCell.Value
    Else
    SOMME_JAUNE = SOMME_JAUNE + ActiveCell.Value
    End If
    Next

    'affectation des variables aux cellules contenant les résultats
    Range("F12").Value = SOMME_ROUGE
    Range("F13").Value = SOMME_JAUNE

    End Sub
    1
    1. lotussss
       
      Merci Selba,

      J'ai trouvé sur un site une programmation qui convient, un peu du genre de la tienne. Le problème se trouve maintenant dans le post ci -dessus. Si tu as une idée elle est très bienvenue!!

      Merci
      0
  4. Selba
     
    C'est la première fois que je participe à un forum.
    Je ne sais pas s'il y a la possibilité que tu m'envoie un exemple.
    Personnellement, je pense qu'il est possible de tout faire en VBA.
    Suivant le contenu d'une cellule, je peux la colorer (ou en colorer une autre) en une couleur déterminée.
    Je peux également faire la somme des cellules d'une couleur sans problème.
    1
    1. lotussss
       
      Merci Selba, ça marchait et voilà que la somme couleur ne marche plus...voici le fichier
      0
      1. lotussss > lotussss
         
        ben apparemment faudrait utiliser une adresse mail ou msn...
        0
      2. lotussss > lotussss
         
        apparemment la somme des couleurs ne fonctionne plus car les couleurs sont issues dela mise en forme conditionnelle...avec une coloration manuelle ça marche....c'est grave
        0
  5. Vous n’avez pas trouvé la réponse que vous recherchez ?

    Posez votre question
  6. Selba
     
    Dans cet exemple, j'ai une colonne (E) qui se colore en fonction d'une colonne située sur la gauche (B).
    Je boucle sur ma zone et je colore en fonction du texte qui est écrit dans la colonne B.

    Sub macro2()
    '
    'cellules qui contiennent prélèvement, virement ... B4:E17

    'les cellules qui se colorent E4:E17

    For i = 4 To 17
    Range("E" & i).Select

    valeur = Selection.Offset(0, -3).Value

    Select Case valeur
    Case "virement"
    Range("E" & i).Interior.ColorIndex = 3
    Case "prélèvement"
    Range("E" & i).Interior.ColorIndex = 4
    Case "remise"
    Range("E" & i).Interior.ColorIndex = 5
    Case Else
    Range("E" & i).Interior.ColorIndex = 2
    End Select

    Next

    End Sub
    1
    1. lotussss
       
      Merci beaucoup Selba c'est vraiment ça, c'est nickel!! sais tu parcontre comment je peux remettre le quadrillage autour des cellules?
      0
  7. Selba
     
    Je ne comprend pas ta dernière question
    0
    1. lotussss
       
      Sorry j'ai dû fumer!!

      ce que je voulais dire c'est que je suis limitée à 3 conditions et ça ne me convient pas car il m'en faudrait 12. Et lorsque l'on met en place une forme conditionnelle sur excel 2007 et pas sur 2003 comme je voudrais le faire, il existe une option qui dit au lieu "d'égal à", "parmi". Du coup il n'est pas obligatoire que le contenu de la cellule de reference soit exact mais une partie correspondant suffit.

      Est ce plus clair?

      Merci.
      0
      1. Selba > lotussss
         
        Si tu trouves le moyen d'avoir un format conditionnel en fonction d'une partie du contenu d'une cellule, est-ce que tu auras toujours besoin de 12 couleurs ou 3 pourront te suffire ?
        0
      2. lotussss > Selba
         
        Malheureusement il me faut les 12 et peut etre meme plus par la suite....
        0
  8. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320
     
    Lotus, excuses moi d'avoir encombré ce fil en essayant de t'aider avec une syntaxe fonctionnant suivant ta demande
    mais, rassures-toi, je ne le ferai plus.
    --
    0
    1. lotussss
       
      Ya aucun probleme; toutes les aides sont les bienvenues
      0
      1. michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention   3 320 > lotussss
         
        merci, mais c'était déjà fait dans cette discussion

        je vous signale que ce problème est très simple, niveau à peine débutant VBA...
        0
      2. lotussss > michel_m Messages postés 18903 Date d'inscription   Statut Contributeur Dernière intervention  
         
        Si je demande de l'aide c'est que je sais pas faire ou que j'ai l'esprit trop tordu. Merci pour votre amabilité!
        0
  9. Selba
     
    Désolé, je m'étais déconnecté.
    Je m'étonne que ce forum ne permette pas d'envoyer une pièce jointe.
    0
    1. lotussss
       
      Est ce que ce code fabriqué de mes ptites mains est cohérent?

      Sub macro2()
      '
      Range("E4:E17").Select
      If Formula = "=RC[-3]=""virement""" Then
      Interior.ColorIndex = 3
      Else
      If Formula = "=RC[-3]=""prélèvement""" Then
      Interior.ColorIndex = 6
      Else
      If Formula = "=RC[-3]=""remise""" Then Interior.ColorIndex = 7
      End If
      End If

      End Sub
      0
      1. Selba > lotussss
         
        Si je comprend bien, tu as une colonne dont les cellules se colorent en fonction d'une colonne placée sur la gauche (du même nombre de cellules) et qui contient soit virement soit prélèvement soit remise ???
        0
      2. lotussss > Selba
         
        Oui il y aura plus de conditions que ça à terme soit une douzaine. Mais ça ne fonctionne pas tel quel, une idée, j'ai dû faire des erreurs. Pour la suite, c'est à dire la somme des cellules par couleur j'ai trouvé un code tout près qui fonctionne bien à la condition que la cellule soit effectivement colorée et pas colorée virtuellement par une mise en forme conditionnelle, d'où ma recherche d'écriture...
        0
      3. lotussss > lotussss
         
        j'aurais aimé également ne pas fixer un terme précis comme par ex "prélèvement" car souvent les banques mettent "prélèvement en votre faveur de untel" et pas "prélèvement" tout court
        0
  10. Selba
     
    Bonjour,

    Le bout de macro que je t'ai envoyé ne modifie pas le quadrillage.
    Si tu le remets, il ne devrait pas changer à l'exécution de la macro

    A plus
    0
  11. Selba
     
    Je ne sais pas si çà peut t'aider pour ton programme, mais ce qui serait bien c'est d'affecter ta macro à un événement Worksheet_Change de manière à ce que à chaque fois que tu modifie une cellule avec l'ajout de virement, prélèvement..., la couleur se mette à jour automatiquement dans la cellule cible.

    Du style:
    Private Sub Worksheet_Change(ByVal Target As Range)
    Set Target = Range("b4:b17")
    If Not Application.Intersect(ActiveCell, Target) Is Nothing Then
    'ici tu mets le nom de ta macro
    End If
    End Sub

    code à disposer dans la feuille concernée

    A plus
    0
  12. lotussss
     
    Merci c'est une bonne idée mais en general les mise à jour se font à la suite dans mon tableau, donc pas de risque d'ecraser les anciennes données, cela dit je prends bonnes notes! malheureusement la macro que tu m'a ecrite "supprime" le quadrillage d'excel sur les cellules concernées ou plutot je pense que ce sont des parametres de cellule à definir egalement en plus de la couleur....une idée? egalement si j'ai un terme tel que "virement de mr untel" ben ça ne reconnait pas le terme "virement" et ça c'est plus embetant.

    Merci pour ton temps!
    0
    1. Selba
       
      Essaie de créer une variable qui teste le contenu de ta cellule.
      si ta cellule contient le mot prélèvement, elle prendra la valeur prélèvement .....
      voir si dessous


      Sub macro2()

      Dim choix As String
      Dim valeur As String


      For i = 4 To 17
      Range("E" & i).Select

      valeur = Selection.Offset(0, -3).Value

      If valeur Like "*virement*" Then
      choix = "virement"
      ElseIf valeur Like "*prélèvement*" Then choix = "prélèvement"
      ElseIf valeur Like "*remise*" Then choix = "remise"
      Else: choix = ""
      End If


      Select Case choix
      Case "virement"
      Range("E" & i).Interior.ColorIndex = 3
      Case "prélèvement"
      Range("E" & i).Interior.ColorIndex = 4
      Case "remise"
      Range("E" & i).Interior.ColorIndex = 5
      Case Else
      Range("E" & i).Interior.ColorIndex = 2
      End Select

      Next

      End Sub
      0
    2. wilfried_42 Messages postés 912 Statut Contributeur 245
       
      Bonjour à tous

      il existe énormément de macros permettant des mises en forme conditionelles illimitées
      en voici une dans les astuces
      http://www.commentcamarche.net/faq/sujet 16784 excel mises en forme conditionnelles illimitees
      en voici une autre donnée sur un autre forum mais non testée sur excel 2007
      https://www.excel-downloads.com/threads/mfc-multiple-excel-2007-autre-facon.117709/
      et en voici une autre avec des mises en forme conditionnelle tout azimut (MFC par image, par commentaires, sonores)
      https://www.excel-downloads.com/threads/mfc-multiples-3-formats-et-autres-mfc.91849/
      0
  13. lotussss
     
    Salut Selba,

    Merci beaucoup c'est tip top nickel!
    0
  14. lotussss
     
    Re Selba,

    J'ai voulu mettre ta macro dans le module du classeur perso afin que cette macro soit disponible dans tous les classeurs. Depuis, chaque fois que je l'exécute un message d'erreur apparait : "erreur de complilation, variable non définie" en surlignant le "i" de "for i=4 to 17" en début de macro.
    0
    1. Gilles
       
      Dans VBA, il y a une option qui se place en début de module et qui oblige à déclarer les variables pour un code plus rigoureux.
      Déclare la variable i
      dim i as integer
      0
      1. lotussss > Gilles
         
        Merci Gilles. Faudrait que jme trouve un bouquin pour me degrossir avec ce vocabulaire, en plus je suis nulle en anglais!
        0