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 :

récupérer le nbr de cellule du même fond


Sujet :

Macros et VBA Excel

  1. #1
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 25
    Points : 12
    Points
    12
    Par défaut récupérer le nbr de cellule du même fond
    bonjour à tous,

    j'utilise la fonction NB.Si lorsqu'il y a des valeurs dans la cellules mais je ne pense pas pouvoir l'utiliser dans ce cas,

    j'ai une colonne ou chaque cellule prend une couleur différente (blanc, orange, verte, rouge) en fonction d'événement,

    j'aimerais récupérer dans une cellule sur une autre feuille le nombre de cellule avec la couleur orange, verte et rouge

    Quelqu'un aurait un bout de code, merci de votre aide

  2. #2
    Membre habitué Avatar de conconbrr
    Inscrit en
    Février 2006
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 198
    Points : 198
    Points
    198
    Par défaut
    Tiens je te file un exemple issu de mon projet en cours

    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
    Sub Effacer_RemplissageJaune()
        Dim cfFormatCelluleDepart As CellFormat
        Dim cfFormatCelluleArrivee As CellFormat
        Dim rgRecherche As Range
        Set cfFormatCelluleDepart = Application.FindFormat
        Set cfFormatCelluleArrivee = Application.ReplaceFormat
     
        cfFormatCelluleDepart.Clear
        cfFormatCelluleDepart.Interior.ColorIndex = 6
        cfFormatCelluleArrivee.Clear
        cfFormatCelluleArrivee.Interior.ColorIndex = 2
     
        Set rgRecherche = Range("m:o").Find(what:="", searchformat:=True)
        If Not rgRecherche Is Nothing Then
            Range("m:o").Replace what:="", replacement:="", searchformat:=True, ReplaceFormat:=True
        End If
     
        cfFormatCelluleDepart.Clear
        cfFormatCelluleArrivee.Clear
     
    End Sub
    Tu devrais pas avoir trop de mal à comprendre et à adpater... En gros tu cherches le format avec findformat.
    Si tu souhaitais le remplacer par un autre tu utilserais replaceformat

    Mon bout de code permet de remplacer tous les formats définis mais si tu fais find à la place de replace tu n'auras que le premier.

    Tu dois donc faire une boucle while dans le quel tu utiliseras findnext. Rajoutes-y un compteur et une condition de sortie lorsque ton findnext vaut Nothing
    Voilà le tour est joué

  3. #3
    Membre à l'essai
    Inscrit en
    Mars 2004
    Messages
    25
    Détails du profil
    Informations forums :
    Inscription : Mars 2004
    Messages : 25
    Points : 12
    Points
    12
    Par défaut
    merci bien pour la réponse

    A+

  4. #4
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    bonjour

    ci joint une autre possiblité
    il restera à adapter les codes couleurs


    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
    Sub compteurCouleursCellules()
        Dim Cell As Range
     
        Feuil2.Range("A1:A10").Clear
     
        'recherche dans la plage A1:A10 de la Feuil1
        'Le résultat s'affiche dans la Feuil2
        For Each Cell In Feuil1.Range("A1:A10")
            Select Case Cell.Interior.ColorIndex
                'sans couleur
                Case xlNone: Feuil2.Cells(1, 1) = Feuil2.Cells(1, 1) + 1
                'orange
                Case 46: Feuil2.Cells(2, 1) = Feuil2.Cells(2, 1) + 1
                'vert
                Case 10: Feuil2.Cells(3, 1) = Feuil2.Cells(3, 1) + 1
                'rouge
                Case 3: Feuil2.Cells(4, 1) = Feuil2.Cells(4, 1) + 1
            End Select
        Next Cell
     
    Feuil2.Cells(1, 1).Interior.ColorIndex = xlNone
    Feuil2.Cells(2, 1).Interior.ColorIndex = 46
    Feuil2.Cells(3, 1).Interior.ColorIndex = 10
    Feuil2.Cells(4, 1).Interior.ColorIndex = 3
    End Sub

    bonne journée
    michel

  5. #5
    Membre habitué Avatar de conconbrr
    Inscrit en
    Février 2006
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 198
    Points : 198
    Points
    198
    Par défaut
    Ceci dit je pense que le find et replace sont plus rapides que de parcourir les cellules.

    Enfin en tout cas si tu en as plus de deux ou trois...

    Tu confirmes michel?

    EDIT:Cette remarque a simplement pour but l'optimisation d'une méthode

  6. #6
    Expert éminent sénior

    Homme Profil pro
    Inscrit en
    Août 2005
    Messages
    3 317
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Isère (Rhône Alpes)

    Informations professionnelles :
    Secteur : Industrie

    Informations forums :
    Inscription : Août 2005
    Messages : 3 317
    Points : 20 144
    Points
    20 144
    Par défaut
    rebonjour

    j'ai interprété (peut etre à tort) que Jekeclo souhaitait boucler sur toutes les cellules pour compter les couleurs...


    bonne soiree
    michel

  7. #7
    Membre habitué Avatar de conconbrr
    Inscrit en
    Février 2006
    Messages
    198
    Détails du profil
    Informations forums :
    Inscription : Février 2006
    Messages : 198
    Points : 198
    Points
    198
    Par défaut
    Non non je crois que c'est bien ça. C'est pour ça que je posais la question. Le findenext est-il plus rapide que de tester chaque cellule??

    Il me semblait que oui mais peut être que je me trompe?

Discussions similaires

  1. Récupérer la valeur dùne cellule d'une datagrid
    Par Julien1987 dans le forum Windows Forms
    Réponses: 4
    Dernier message: 29/01/2007, 11h57
  2. Réponses: 16
    Dernier message: 19/07/2006, 00h16
  3. récupérer le nbr de sessions ouverts sur mon site
    Par lehic dans le forum Servlets/JSP
    Réponses: 3
    Dernier message: 05/06/2006, 19h59
  4. [Vba-Excel] Récupérer événement sur une cellule
    Par steps5ive dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 26/04/2006, 20h27
  5. [JTable] Récupérer données d'une cellule éditée
    Par lilou77 dans le forum Composants
    Réponses: 9
    Dernier message: 14/09/2005, 10h34

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