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 :

Counif égal couleur sinon autre couleur [XL-2016]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre confirmé
    Homme Profil pro
    Mécanicien avion
    Inscrit en
    Février 2018
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Mécanicien avion

    Informations forums :
    Inscription : Février 2018
    Messages : 193
    Par défaut Counif égal couleur sinon autre couleur
    Bonjour à tous,

    Je galère à faire ma comparaison entre deux colonne....

    J'aimerais pouvoir passer en rouge les cellules en colonne J si je ne trouve pas d'équivalence dans ma colonne A. Sinon cellule blanche.
    J'ai fais cela mais ca ne fonctionne pas comme je veux :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    For plage = 4 To 27
    For plageA = 4 To 39
        If WorksheetFunction.CountIf(ws11.Range("A" & plageA), ws11.Range("J" & plage)) > 0 Then
            ws11.Range("J" & plage).Font.Color = RGB(156, 0, 6)
            ws11.Range("J" & plage).Interior.Color = RGB(255, 199, 206)
        Else
            ws11.Range("J" & plage).Font.Color = RGB(0, 0, 0)
            ws11.Range("J" & plage).Interior.Color = RGB(255, 255, 255)
        End If
    Next plageA
    Next plage
    Merci à tous pour votre aide

  2. #2
    Membre Expert Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    1 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 1 175
    Par défaut
    Hello,

    juste une question : pourquoi via VBA alors que la mise en forme conditionnelle fait ça très simplement ?

    Sélectionnez la plage J4 à J27, onglet Accueil, Mise en forme conditionnelle, Nouvelle règle, Utiliser une formule etc etc, collez cette formule :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    =NB.SI($A$4:$A$27;J4)>0
    , et choisissez votre couleur dans Format...

    Le VBA c'est bien surtout pour des choses qui n'existent pas nativement, sinon c'est un peu comme réinventer la roue.

  3. #3
    Membre confirmé
    Homme Profil pro
    Mécanicien avion
    Inscrit en
    Février 2018
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Mécanicien avion

    Informations forums :
    Inscription : Février 2018
    Messages : 193
    Par défaut
    effectivement, j'ai déjà fait avec la Mise en forme conditionnelle...
    Cela fonctionne. Le problème étant que cela demande beaucoup de ressource à mon programme et il réfléchi pendant plusieurs minutes à chaque changement d'état.

    Je voudrait le réaliser en VBA pour que cela s'exécute en instantanée.

  4. #4
    Membre Expert Avatar de Nain porte koi
    Homme Profil pro
    peu importe
    Inscrit en
    Novembre 2023
    Messages
    1 175
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Bouches du Rhône (Provence Alpes Côte d'Azur)

    Informations professionnelles :
    Activité : peu importe

    Informations forums :
    Inscription : Novembre 2023
    Messages : 1 175
    Par défaut
    Ah ok, fallait préciser
    Mais la phrase "ca ne fonctionne pas comme je veux" ne dit pas ce qui ne fonctionne pas comme voulez, vous pouvez préciser ce qui ne va pas ?

  5. #5
    Expert éminent

    Profil pro
    Conseil, Formation, Développement - Indépendant
    Inscrit en
    Février 2010
    Messages
    8 562
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations professionnelles :
    Activité : Conseil, Formation, Développement - Indépendant

    Informations forums :
    Inscription : Février 2010
    Messages : 8 562
    Par défaut
    Bonjour

    Une boucle n'est jamais un solution rapide alors 2 boucles imbriquées...

    Sur une plage aussi réduite je doute que la MFC rame : si "ton programme réfléchi pendant plusieurs minutes à chaque changement d'état" il y a sans doute d'autre problèmes

  6. #6
    Membre Expert
    Inscrit en
    Décembre 2002
    Messages
    993
    Détails du profil
    Informations forums :
    Inscription : Décembre 2002
    Messages : 993
    Par défaut
    Bonjour, comme dit par les autres intervenants, je ne comprends pas que la mfc sur une si petite plage prenne autant de temps.
    Quoi qu'il en soit, voici une proposition vba à tester:

    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 ColorierCellules()
        Dim ws As Worksheet
        Dim plage As Long
        Dim plageA As Range
        Dim isFound As Boolean
     
        ' Référence à la feuille où vous travaillez
        Set ws = ThisWorkbook.Worksheets("NomDeVotreFeuille") 
     
        ' Définir la plage pour la colonne A
        Set plageA = ws.Range("A4:A39")
     
        ' Boucle sur les cellules de la colonne J
        For plage = 4 To 27
            isFound = Not IsError(Application.Match(ws.Range("J" & plage).Value, plageA, 0))
     
            If isFound Then
                ' Si une équivalence est trouvée
                ws.Range("J" & plage).Font.Color = RGB(0, 0, 0)
                ws.Range("J" & plage).Interior.Color = RGB(255, 255, 255)
            Else
                ' Si aucune équivalence n'est trouvée
                ws.Range("J" & plage).Font.Color = RGB(156, 0, 6)
                ws.Range("J" & plage).Interior.Color = RGB(255, 199, 206)
            End If
        Next plage
    End Sub

  7. #7
    Membre confirmé
    Homme Profil pro
    Mécanicien avion
    Inscrit en
    Février 2018
    Messages
    193
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Âge : 40
    Localisation : France, Charente Maritime (Poitou Charente)

    Informations professionnelles :
    Activité : Mécanicien avion

    Informations forums :
    Inscription : Février 2018
    Messages : 193
    Par défaut
    Je pense que cela réfléchi car j'ai pas que cette formule qui me change mes couleurs...

    Merci pour votre aide car je ne suis vraiment pas doué en VBA.

    Le code marche nickel. Je vais être pénible mais j'avais pas prévu un truc dans mon programme qu'il pourrait me manquer...
    Est-il possible de rajouter une condition à If isFound Then ?
    j'aimerais que le code vérifie aussi si ma cellule correspondante en B est supérieur à 0.

    dans le genre :
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    isFound = Not IsError(Application.Match(ws11.Range("J" & plage).Value, plageA , 0))
    If isFound And 'plageA décalé à droite de 1 > 0 Then
    blanc
    sinon
    rouge

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

Discussions similaires

  1. Remplacer une couleur par une autre couleur
    Par brice01 dans le forum SDL
    Réponses: 6
    Dernier message: 25/02/2007, 15h38
  2. Réponses: 3
    Dernier message: 29/03/2006, 16h32
  3. [VB.NET] Comment remplacer une couleur par une autre?
    Par jazz matazz dans le forum VB.NET
    Réponses: 5
    Dernier message: 11/02/2006, 14h29
  4. changer la couleur d'un lien en clicquant sur un autre
    Par ardi dans le forum Général JavaScript
    Réponses: 2
    Dernier message: 20/01/2006, 13h57
  5. couleur différente d'un navigateur à un autre
    Par AMarco dans le forum Balisage (X)HTML et validation W3C
    Réponses: 5
    Dernier message: 17/06/2005, 00h03

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