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 :

Comptabiliser des cellules en couleur


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 55
    Points : 18
    Points
    18
    Par défaut Comptabiliser des cellules en couleur
    Bonjour,

    Dans un tableau j'ai une formule qui m'aide a comptabiliser les cellules contenant une croix ( =SI(I6="x";1;0) ).

    J'aimerais faire de meme avec les cellules en couleur ( ex si la cellule est verte donner la valeur 1 sinon 0

    J'ai essaye avec cette formule mais ca ne marche pas. ( =SI(I6="ColorIndex = 4";1;0)

    Quelqu'un peut il m'aider?

    Merci

  2. #2
    Membre expert
    Homme Profil pro
    Retraité
    Inscrit en
    Juillet 2009
    Messages
    1 794
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 85
    Localisation : Belgique

    Informations professionnelles :
    Activité : Retraité
    Secteur : Enseignement

    Informations forums :
    Inscription : Juillet 2009
    Messages : 1 794
    Points : 3 094
    Points
    3 094
    Par défaut
    Bonjour,
    Avec une procédure VBA
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    Sub Cellule_Couleur()
    Dim Cellule as Range
    For Each Cellule In Range("A1:A10") ' A adapter suivant la plage qui contient les cellules à comptabiliser
    If Cellule.Interior.ColorIndex = 4 Then
         Cellule.Value = 1
    Else
         Cellule.Value = 0
    End If
    Next Cellule
    End Sub

  3. #3
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 55
    Points : 18
    Points
    18
    Par défaut
    Bonjour rjamin,

    Merci de m'aider a nouveau !

    Cela marche bien mais bon je suis obliger a chaque fois d'executer la macro et de plus il met la valeur 1 dans la cellule en couleur.

    j'aimerais que cela se fasse automatiquement des qu'on met une cellule en vert par exemple bien dans une autre cellule que j'ai cache il met la valeur 1 et la somme est directement faite dans une autre cellule comme j'ai fait avec =SI(I6="x";1;0) je ne dois rien executer c'est automatique.

    Avec cette formule =SI(I6="ColorIndex"= 4;1;0) il me donne bien la valeur 1
    met il l'applique a toute la plage selectionne meme les celulle blanche??? or je devrait avoir la valeur zero

    Bien a toi

  4. #4
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2010
    Messages : 12
    Points : 13
    Points
    13
    Par défaut
    Hello,

    Je pense qu'on est obligé de passer par le vba pour vérifier la couleur d'une cellule.

    Pour ne plus avoir les 1 dans les cellules vertes, et 0 dans les cellules non vertes, et pour avoir la somme :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    13
    14
    Sub Cellule_Couleur()
    Dim Cellule as Range
    Dim compteur as integer
     
    compteur =0 'Initialisation du compteur
    For Each Cellule In Range("A1:A10") ' A adapter suivant la plage qui contient les cellules à comptabiliser
    If Cellule.Interior.ColorIndex = 4 Then
         compteur=compteur+1
    End If
    Next Cellule
     
    Sheets(1).range("A1").value=compteur 'A adapter suivant l'endroit où tu veux mettre le compteur 
     
    End Sub
    Par contre, on a juste la somme, et il faudra relancer la macro à chaque fois qu'il y aura des modifications dans le fichier, tu peux l'associer à un bouton pour aller plus vite ^^'

  5. #5
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 55
    Points : 18
    Points
    18
    Par défaut
    Bonjour,

    Merci pour votre aide !

    Cela fonctionne mais par contre quand je lance la macro a partir d'une touche de racourci ca marche pas il me met " espace pile insuffisant"

    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
     
    '
    ' Macro3 Macro
    ' Macro enregistrée le 23/12/2010 par Admin
    '
    ' Touche de raccourci du clavier: Ctrl+Maj+A
    '
     
       Sub Cellule_Couleur()
    Dim Cellule As Range
    Dim compteur As Integer
     
    compteur = 0 'Initialisation du compteur
    For Each Cellule In Range("I4:IQ4") ' A adapter suivant la plage qui contient les cellules à comptabiliser
    If Cellule.Interior.ColorIndex = 4 Then
         compteur = compteur + 1
    End If
    Next Cellule
     
    Sheets(2).Range("B4").Value = compteur 'A adapter suivant l'endroit où tu veux mettre le compteur
     
        Range("U4").Select
        With Selection.Interior
            .ColorIndex = 4
            .Pattern = xlSolid
        End With
        Range("U8").Select
        ActiveWorkbook.Save
        Range("L12").Select
    End Sub

  6. #6
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 55
    Points : 18
    Points
    18
    Par défaut
    Voici en annexe le fichier qui contient mon tableau.

    J'aimerais executer ce type de macro pour chaque personne repris dans le tableau.

    Est ce possible?
    Fichiers attachés Fichiers attachés

  7. #7
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2010
    Messages : 12
    Points : 13
    Points
    13
    Par défaut
    Le code suivant permet d'avoir sur la 2e feuille le compte de cellules vertes ainsi que les noms et prénoms pour chaque personne du tableau.

    En ce qui concerne le message d'erreur je ne vois pas trop d'où cela pourrait venir ><

    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 Cellule_Couleur()
     
    Dim Cellule As Range
    Dim compteur, ligne As Integer
     
    ligne = 4
     
    For ligne = 4 To 104 Step 2 
     
        compteur = 0 'Initialisation du compteur
     
        For Each Cellule In Sheets(1).Range("I" & ligne & ":IQ" & ligne) 'A adapter suivant la plage qui contient les cellules à comptabiliser
            If Cellule.Interior.ColorIndex = 4 Then
                compteur = compteur + 1
            End If
        Next Cellule
     
        'A adapter suivant l'endroit où l'on veut mettre les informations
     
        Sheets(2).Range("A" & ligne).Value = Sheets(1).Range("A" & ligne)
        Sheets(2).Range("B" & ligne).Value = Sheets(1).Range("C" & ligne)
        Sheets(2).Range("C" & ligne).Value = compteur 
     
     
    Next ligne
     
    End Sub

  8. #8
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 55
    Points : 18
    Points
    18
    Par défaut
    je ne comprend pas comment adapter les lignes suivantes:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each Cellule In Sheets(3).Range("I" & ligne & ":IQ" & ligne)
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    heets(2).Range("A" & ligne).Value = Sheets(1).Range("A" & ligne)
        Sheets(2).Range("B" & ligne).Value = Sheets(1).Range("C" & ligne)
        Sheets(2).Range("C" & ligne).Value = compteur
    peux expliquer avec un exemple?

    Merci a toi

  9. #9
    Expert éminent Avatar de jfontaine
    Homme Profil pro
    Contrôleur de Gestion
    Inscrit en
    Juin 2006
    Messages
    4 756
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 51
    Localisation : France, Sarthe (Pays de la Loire)

    Informations professionnelles :
    Activité : Contrôleur de Gestion

    Informations forums :
    Inscription : Juin 2006
    Messages : 4 756
    Points : 9 402
    Points
    9 402
    Par défaut
    Bonjour,

    Ci dessous une fonction te permettant de retourner le nombre de cellule contenant un code couleur dans une plage de cellule

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
     
    Public Function Nb_Couleur(Plage As Range, NumCouleur As XlColorIndex) As Long
     
    Dim i As Long
     
    For Each cel In Plage.Cells
        If cel.Interior.colorindex = NumCouleur Then i = i + 1
    Next
     
    Nb_Couleur = i
     
    End Function
    dans ton cas

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =SI(Nb_Couleur(I6;4)= 1;1;0)

  10. #10
    Membre à l'essai
    Profil pro
    Inscrit en
    Décembre 2010
    Messages
    12
    Détails du profil
    Informations personnelles :
    Localisation : France, Nord (Nord Pas de Calais)

    Informations forums :
    Inscription : Décembre 2010
    Messages : 12
    Points : 13
    Points
    13
    Par défaut
    En fait la macro se compose de 2 boucles.
    D'abord une boucle pour parcourir toute les lignes du tableau :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For ligne =4 to 104 step=2
    Le tableau commence à la ligne 4, et se termine à la ligne 104.
    Le step 2 est rajouté car il y a un espace d'une ligne entre chaque individu dans ton tableau.
    Ligne (qu'on appelle comme on veut, c'est juste une variable) va donc renvoyer le numéro de la ligne sur laquelle on travail. (4,6,8,....,104)

    Ensuite pour la ligne en cours, on fait une boucle :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    For Each Cellule In Sheets(1).Range("I" & ligne & ":IQ" & ligne)
    Pour toutes les cellules entre les colonnes I et IQ de la ligne en cours (I4,J4,K4,...IQ4), la macro vérifie si la couleur de la cellule est verte. Si oui +1 au compteur et on avance à la prochaine cellule, sinon, on avance juste à la prochaine cellule.


    Une fois arrivé à la fin de la ligne en cours (IQ4), on "imprime" le compteur sur la cellule que l'on souhaite :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets(2).Range("C" & ligne).Value = compteur
    Ici sur la feuille 2, colonne C; et toujours sur la même ligne de travail (Donc C4)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    Sheets(2).Range("A" & ligne).Value = Sheets(1).Range("A" & ligne)
    Sheets(2).Range("B" & ligne).Value = Sheets(1).Range("C" & ligne)
    Pour plus de visibilité, les noms et prénoms qui étaient sur les colonnes A et C, de la feuille 1, sont recopier sur la colonne A et B de la feuille 2, avec le compteur en colonne C.
    On passe ensuite à la ligne suivante, on remet le compteur à zéro, et on répète l'opération.

    Donc en récapitulant :
    - On se positionne sur une ligne
    - On parcours toutes les cellules de cette ligne pour vérifier si la couleur est verte
    - On colle le nom, prénom, et le nombre de cellule verte de la ligne en cours, à l'endroit voulu.

    J' espère avoir été plus clair, ce sont mes premiers posts sur le forum ^^'


    EDIT : C'est vrai qu'on peut aussi passer par les fonctions, j'ai pas encore ce réflexe, et tendance à tout coder en VBA

  11. #11
    Membre à l'essai
    Profil pro
    Inscrit en
    Janvier 2010
    Messages
    55
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Janvier 2010
    Messages : 55
    Points : 18
    Points
    18
    Par défaut
    Tu es un tueur !

    Cela marche tres bien. Je ne sais comment te remercier.

    As tu une adresse mail?

    Au cas ou j'aurais besoin de tes connaissances.

    Bien a toi

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

Discussions similaires

  1. [XL-2003] Comptabiliser des cellules de même format
    Par STOUPI dans le forum Macros et VBA Excel
    Réponses: 3
    Dernier message: 21/03/2013, 11h19
  2. Réponses: 2
    Dernier message: 02/08/2007, 12h30
  3. Compter des cellules de couleurs différentes
    Par solorac dans le forum Excel
    Réponses: 3
    Dernier message: 13/06/2007, 11h24
  4. Compte des cellules par couleur
    Par Tiresia dans le forum Macros et VBA Excel
    Réponses: 16
    Dernier message: 12/06/2007, 00h45
  5. selectionner des cellules de couleurs
    Par SAINT-BERNARD dans le forum Macros et VBA Excel
    Réponses: 11
    Dernier message: 25/08/2006, 19h25

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