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 :

Pb sur macro de comptage


Sujet :

Macros et VBA Excel

  1. #1
    Membre averti
    Inscrit en
    Février 2010
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 61
    Par défaut Pb sur macro de comptage
    J'ai maintenant ma macro qui fonctionne bien (elle compte le nombre de cellule ayant la couleur de fond que je demande sur la plage que je demande) dont voici le code :

    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 comptagesurcouleur()
     
    Dim a As Byte, j As Integer, i As Integer, compteur As Integer, colonnedebut As Integer, colonnefin As Integer, lignedebut As Integer, lignefin As Integer
    MsgBox "Macro qui va compter le nombre de cellules de la couleur de votre choix dans les plages que vous allez déterminer!", vbOKOnly, "Macro par Nicolas MANIN le 19/01/11"
    colonnedebut = InputBox("Entrez le numéro de la première colonne à sonder, exemple :" & Chr(13) & "A=1" & Chr(13) & "B=2" & Chr(13) & "...", "Choix de la colonne de début")
    colonnefin = InputBox("Entrez le numéro de la dernière colonne à sonder, exemple :" & Chr(13) & "A=1" & Chr(13) & "B=2" & Chr(13) & "...", "Choix de la colonne de fin")
    lignedebut = InputBox("Entrez le numéro de la première ligne à sonder", "Choix de la ligne de début")
    lignefin = InputBox("Entrez le numéro de la dernière ligne à sonder", "Choix de la ligne de fin")
    a = InputBox("1=Noir" & Chr(13) & "2=Blanc" & Chr(13) & "3=Rouge" & Chr(13) & "4=Vert brillant" & Chr(13) & "5= Bleu" & Chr(13) & "6=Jaune" & Chr(13) & "7=Rose" & Chr(13) & "8=Turquoise", "Choix de la couleur")
    compteur = 0
     
    For j = lignedebut To lignefin
        For i = colonnedebut To colonnefin
            If Cells(j, i).Interior.ColorIndex = a Then
                compteur = compteur + 1
            End If
        Next
    Next
    MsgBox compteur, vbOKOnly, "Résultat"
    End Sub
    Le problème est que je me suis aperçu que ma macro compte les fond de couleur quand on les a mis manuellement, mais quand le fond de la cellule est colorié en résultat d'une mise en forme conditionnelle par exemple, il ne reconnait pas ce fond et ne le compte pas...

    Quelqu'un à une idée de comment je peux corriger ça? Moi je ne vois pas d'où viens le problème ?

  2. #2
    Rédacteur
    Avatar de Philippe Tulliez
    Homme Profil pro
    Formateur, développeur et consultant Excel, Access, Word et VBA
    Inscrit en
    Janvier 2010
    Messages
    13 178
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : Belgique

    Informations professionnelles :
    Activité : Formateur, développeur et consultant Excel, Access, Word et VBA

    Informations forums :
    Inscription : Janvier 2010
    Messages : 13 178
    Billets dans le blog
    53
    Par défaut
    Bonjour,
    Le problème vient du fait que la mise en forme d'une cellule est celle que l'on fixe manuellement ou par programmation alors que la mise en forme conditionnelle est le résultat d'un test fait par Excel.
    Pour savoir quel est la mise en forme faite par la MEFC il faut refaire le test par programmation.
    Il y a déjà eu une discussion à ce sujet il y a plusieurs jours
    Philippe Tulliez
    Ce que l'on conçoit bien s'énonce clairement, et les mots pour le dire arrivent aisément. (Nicolas Boileau)
    Lorsque vous avez la réponse à votre question, n'oubliez pas de cliquer sur et si celle-ci est pertinente pensez à voter
    Mes tutoriels : Utilisation de l'assistant « Insertion de fonction », Les filtres avancés ou élaborés dans Excel
    Mon dernier billet : Utilisation de la fonction Dir en VBA pour vérifier l'existence d'un fichier

  3. #3
    Membre averti
    Inscrit en
    Février 2010
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 61
    Par défaut
    En effet il s'agit bien du même problème, j'ai lu votre conversation mais là comme ça je n'ai rien compris :s va falloir que je me re penche dessus!

    Mon idéal serait de tester la couleur du fond de cellule "OU" la couleur du fond de cellule renvoyé par la MEFC s'il y en a une...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Cells(j, i).Interior.ColorIndex = a Then
    en gros compléter cette ligne avec un "or"... (je ne sais pas si c'est possible, je n'ai pas un bon niveau en VBA)
    C'est une macro qui doit pouvoir être implantée sur n'importe quel document Excel

    Merci, je repasserais sur votre discussion voir si des choses que vous avez énoncées peuvent m'aider!

  4. #4
    Membre averti
    Inscrit en
    Février 2010
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 61
    Par défaut
    Ok en refaisant le test par programmation ça fonctionne bien mais ça ne me convient pas vraiment car c'est une macro qui doit pouvoir être implanté sur n'importe quel document excel par n'importe qui (même un non connaisseur de VBA) ==> J'ai fait un petit tutoriel pour leur apprendre à implanter cette macro

    et donc du coup je suis bloqué...

  5. #5
    pgz
    pgz est déconnecté
    Expert confirmé Avatar de pgz
    Homme Profil pro
    Développeur Office VBA
    Inscrit en
    Août 2005
    Messages
    3 692
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 72
    Localisation : France

    Informations professionnelles :
    Activité : Développeur Office VBA
    Secteur : Conseil

    Informations forums :
    Inscription : Août 2005
    Messages : 3 692
    Par défaut
    Bonjour.

    Citation Envoyé par vapordinateur Voir le message
    Mon idéal serait de tester la couleur du fond de cellule "OU" la couleur du fond de cellule renvoyé par la MEFC s'il y en a une...
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Cells(j, i).Interior.ColorIndex = a Then
    en gros compléter cette ligne avec un "or"...
    Tu cherches les cellules qui ont le fond avec colorindex = a. Dans ta MFC, tu as une condition pour que cette valeur soit attribuée à la cellule. Par exemple la valeur est > 5.

    Tu peux reprendre cette condition
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If (Cells(j, i).Interior.ColorIndex = a) or (Cells(i,j).Value > 5) Then
    COrdialement,

    PGZ

  6. #6
    Membre averti
    Inscrit en
    Février 2010
    Messages
    61
    Détails du profil
    Informations forums :
    Inscription : Février 2010
    Messages : 61
    Par défaut
    Oui ça j'ai bien compris mais dans mon cas ça ne fonctionnera pas car ça doit être une macro disponible pour l'implanter dans n'importe quel document Excel, et ce n'est pas forcément moi qui vais m'en servir, et les gens qui vont s'en servir ne sont pas caler en VBA... En gros ça sera un outil disponible à tous

    Merci quand même

    Vapo

Discussions similaires

  1. {VBA Excel}Probleme sur macro mauvaise lecture de feuille excel
    Par Thomas69 dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 09/08/2007, 15h38
  2. Réponses: 8
    Dernier message: 27/07/2007, 17h06
  3. Aide sur Macro
    Par anisr dans le forum Macros et VBA Excel
    Réponses: 4
    Dernier message: 17/07/2007, 22h28
  4. Problème sur macro (2 exécutions de code)
    Par Tsuna78 dans le forum Access
    Réponses: 2
    Dernier message: 19/03/2007, 20h24
  5. Probleme d'enregistrement sur Macro/VBA de Excel
    Par life is magic dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 28/11/2005, 17h23

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