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 :

colorer une cellule si identique à une autre


Sujet :

Macros et VBA Excel

  1. #1
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 141
    Par défaut colorer une cellule si identique à une autre
    Bonjour,


    j'ai un code qui détecte un changement de la cellule existante et lui donne une couleur (bleu par exemple).
    je souhaite colorer toutes valeurs identique à la cellule bleu en jaune par exemple.

    résultat :

    cellule bleu( car valeur modifié)
    cellule jaune ( car valeur identique aux cellules bleu)

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    12
    // changer la couleur de ma cellule si on détecte une modification 
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Valeur
        Application.EnableEvents = False
        Valeur = Target
        Application.Undo
            If Target.Value <> Valeur Then
                Target.Interior.ColorIndex = 23
            End If
        Target = Valeur
        Application.EnableEvents = True
    End Sub
    merci pour votre aide

  2. #2
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 329
    Billets dans le blog
    2
    Par défaut
    Bonjour Peerl,

    Dans quelle plage les cellules jaunes ?

  3. #3
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 141
    Par défaut
    Re,

    je pensais que c'était pas nécessaire comme il doit chercher dans toutes la feuilles mais sinon c'est à partir de F jusqu'à DP ( y a bcp de données)
    merci

  4. #4
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 329
    Billets dans le blog
    2
    Par défaut
    Re,

    un truc comme ça peut-être

    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
    Private Sub Worksheet_Change(ByVal Target As Range)
    Dim Valeur, Tablo, Plage As Range, i As Long, j As Long
     
        Valeur = Target.Value
        Set Plage = Range("F1:DP10000")
        Plage.Interior.ColorIndex = xlNone
        Tablo = Plage.Value
        For i = 1 To UBound(Tablo, 1)
            For j = 1 To UBound(Tablo, 2)
                If Tablo(i, j) = Valeur Then
                    Plage.Cells(i, j).Interior.Color = RGB(255, 255, 0)
                End If
            Next j
        Next i
        Target.Interior.Color = RGB(0, 0, 255)
        Erase Tablo
        Set Plage = Nothing
     
    End Sub
    Plus la plage à scanner est grande, plus c'est long...

  5. #5
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 141
    Par défaut
    Good Mornin,

    Je vais tester et je te tiens au courant par contre il me semble que je dois activer le gestionnaire des événements pour que ce code s’exécute ?

  6. #6
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 329
    Billets dans le blog
    2
    Par défaut
    Bonjour,

    Oui, Worksheet_Change est un événement de la feuille

  7. #7
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 141
    Par défaut
    Honnêtement j'ai oublié comment on fait pour activer le gestionnaire... si tu peux m'éclairer STP

  8. #8
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 329
    Billets dans le blog
    2
    Par défaut
    Copié de ton code

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.EnableEvents = True

  9. #9
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 141
    Par défaut
    Je me sens bête lol mais c'est parce que ça s’exécute pas quand je sélectionne mon code dans le module classe et que j'appuie sur exécuter j'ai une fenêtre de d'autres macros qui s'affiche pour choisir une macro à exécuter donc il reconnait pas mon code..

  10. #10
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 329
    Billets dans le blog
    2
    Par défaut
    Re,

    Si tu as réactivé les événements

    (crée une Sub dans un module, colle Application.enableevents=true, clique dessus puis sur la flèche verte)

    Colle mon code (Worksheet_change) dans la feuille concernée
    Tu ne peux pas avoir 2 Worksheet_change, il faudra enlever le tien

    Du côté Excel, dans ta feuille, tapes une valeur dans une cellule

  11. #11
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 141
    Par défaut
    Je comprends mieux, merci j'ai testé et le code s'exécute avec une erreur incompatibilité type 13 sur la ligne :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If Tablo(i, j) = Valeur Then
    Et l'idée au départ comme je comprenais pas très bien le principe du gestionnaire d’événements je pensais que je pouvais le mettre dans un module class pour pouvoir l'utiliser sur des feuilles dupliquées ( copier une feuille et exécuté le code )

  12. #12
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 329
    Billets dans le blog
    2
    Par défaut
    Re,

    comme je comprenais pas très bien le principe du gestionnaire d’événements je pensais que je pouvais le mettre dans un module class pour pouvoir l'utiliser sur des feuilles dupliquées
    Faut déjà avoir un code qui fonctionne sur une feuille, on verra pour la classe ensuite

    erreur incompatibilité type 13
    Je n'arrive pas à reproduire, va falloir commencer à regarder tes données
    Que vaut Valeur quand ça plante ? Que vaut Tablo(i,j) ?

  13. #13
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 329
    Billets dans le blog
    2
    Par défaut
    Essaye de modifier la ligne comme ça :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    If CStr(Tablo(i, j)) = CStr(Valeur) Then

  14. #14
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 141
    Par défaut
    Alors là ça fonctionne comme de la magie !! mais le principe avec ce code c'est que ça se réinitialise alors que je veux garder les couleurs de toutes les modifications

  15. #15
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 329
    Billets dans le blog
    2
    Par défaut
    C'est pas très stable, plus d'un million de cellules testées à chaque saisie, ça ne m'étonnerais pas que ça puisse entraîner des plantages...


    mais le principe avec ce code c'est que ça se réinitialise alors que je veux garder les couleurs de toutes les modifications
    tout deviendra jaune au fur et à mesure ?
    si oui, mets la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Plage.Interior.ColorIndex = xlNone
    en commentaire

  16. #16
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 141
    Par défaut
    tout deviendra jaune au fur et à mesure ?

    toute cellule modifiée reste bleu et les jaunes restes jaunes ,

    J'ai testé cette ligne qui existe déjà dans le code précédent mais aucun changement
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Plage.Interior.ColorIndex = xlNone
    en commentaire[/QUOTE]

  17. #17
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 329
    Billets dans le blog
    2
    Par défaut
    tu as tapé une apostrophe au début de cette ligne ?

  18. #18
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 141
    Par défaut
    Citation Envoyé par tototiti2008 Voir le message
    tu as tapé une apostrophe au début de cette ligne ?
    Non je ne l'ai pas mis en commentaire

  19. #19
    Membre confirmé
    Femme Profil pro
    Étudiant
    Inscrit en
    Avril 2018
    Messages
    141
    Détails du profil
    Informations personnelles :
    Sexe : Femme
    Localisation : France, Val de Marne (Île de France)

    Informations professionnelles :
    Activité : Étudiant

    Informations forums :
    Inscription : Avril 2018
    Messages : 141
    Par défaut
    Citation Envoyé par tototiti2008 Voir le message



    tout deviendra jaune au fur et à mesure ?
    si oui, mets la ligne

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Plage.Interior.ColorIndex = xlNone
    en commentaire
    Je viens de comprendre enfaite il faut mettre ça en commentaire et tester. Bon ça fonctionne ça se réinitialise pas Merci je suis sauvé pour cette étape.
    Sinon, si je veux l'utiliser sur plusieurs feuille, est il possible de passer par le module?

  20. #20
    Membre Expert
    Avatar de tototiti2008
    Homme Profil pro
    Formateur/développeur
    Inscrit en
    Octobre 2008
    Messages
    1 329
    Détails du profil
    Informations personnelles :
    Sexe : Homme
    Localisation : France, Moselle (Lorraine)

    Informations professionnelles :
    Activité : Formateur/développeur

    Informations forums :
    Inscription : Octobre 2008
    Messages : 1 329
    Billets dans le blog
    2
    Par défaut
    Re,

    il y a plusieurs façons de faire
    Par exemple, tu peux simplement copier le code dans chacune des feuilles concernées

    ou alors si tu veux que ça s'applique à toutes les feuilles du classeur, tu peux mettre ce code dans Thisworkbook

    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
    Private Sub Workbook_SheetChange(ByVal Sh As Object, ByVal Target As Range)
    Dim Valeur, Tablo, Plage As Range, i As Long, j As Long
     
        Valeur = Target.Value
        Set Plage = Sh.Range("F1:DP10000")
        'Plage.Interior.ColorIndex = xlNone
        Tablo = Plage.Value
        For i = 1 To UBound(Tablo, 1)
            For j = 1 To UBound(Tablo, 2)
                If CStr(Tablo(i, j)) = CStr(Valeur) Then
                    Plage.Cells(i, j).Interior.Color = RGB(255, 255, 0)
                End If
            Next j
        Next i
        Target.Interior.Color = RGB(0, 0, 255)
        Erase Tablo
        Set Plage = Nothing
     
    End Sub
    Et effacer le code de chaque feuille (worksheet_change)

+ Répondre à la discussion
Cette discussion est résolue.
Page 1 sur 3 123 DernièreDernière

Discussions similaires

  1. [XL-2010] Macro pour colorer une cellule en fonction d'autres
    Par Fennec51 dans le forum Macros et VBA Excel
    Réponses: 2
    Dernier message: 24/08/2014, 09h17
  2. Réponses: 5
    Dernier message: 06/08/2012, 17h46
  3. Réponses: 2
    Dernier message: 17/03/2011, 22h45
  4. Réponses: 12
    Dernier message: 30/12/2010, 15h30
  5. [XL-2000] Coloration d'une cellule en fonction du numéro saisi dans une autre
    Par Nerva dans le forum Macros et VBA Excel
    Réponses: 1
    Dernier message: 21/11/2010, 15h07

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