Mettre en couleur les cellules ayant le même contenu que la cellule sélectionnée [Résolu]

Messages postés
9
Date d'inscription
vendredi 26 août 2011
Dernière intervention
11 octobre 2012
- - Dernière réponse : Juju1971
Messages postés
9
Date d'inscription
vendredi 26 août 2011
Dernière intervention
11 octobre 2012
- 11 oct. 2012 à 11:06
Bonjour,


J'essaie depuis un moment de faire une macro de recherche de doublon mais je ne m'en sort pas.

Je souhaiterais en arrivant sur ma feuille Excel (2007), que lorsque je me positionne (par un seul clic) sur n'importe quelle cellule de ma plage, les autres cellules ayant le même contenu, soient mis en fond d'une autre couleur.

Il faudrait que la macro fontionne en permance afin que je puisse sélectionner d'autres cellules au fur et à mesure que je comlète mon tableau.

Sur les forums j'ai bien trouvé une macro qui trouve les doublons de ma cellule sélectionnée mais il est nécessaire de valider la valeur de celle-ci par la touche entrée pour que çà fonctionne.

De plus lorsque je sélectionne une autre cellule, il prend bien en compte la nouvelle recherche mais la macro laisse en couleur les doublons de la première recherche au lieu de réinitialiser.

Quelqu'un pourrait-il m'aider ?


Je vous remercie par avance !
Juju1971
Afficher la suite 

Votre réponse

9 réponses

Meilleure réponse
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
3
Merci
Bonjour,
Tout simplement :
déclarer toto as range en variable générale.
Au Selection_Change :
- si toto n'est pas Nothing, lui enlever sa coloration (Interior)
- Extraire la plage toto des cellules "doublons" (utilisation de Union)
- Affecter l'interieur (interior) de celle plage)

Montre-nous ce que tu es capable de faire sur ces bases (ton code d'essaià.
Reviens avec ce code, si encore en difficulté.
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ

Dire « Merci » 3

Quelques mots de remerciements seront grandement appréciés. Ajouter un commentaire

Codes Sources a aidé 106 internautes ce mois-ci

Commenter la réponse de ucfoutu
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Dernière intervention
23 août 2018
0
Merci
Tout dépend de ce que tu veux faire avec les cellules doublons.

Une méthode pourrait être de mettre une mise en forme conditionnelle en utilisant un "nom" que tu crées dans le gestionnaire de noms

Puis, dans l'événement SelectionChange, tu changes la valeur de ce "nom"

exemple avec le nom "Sélection" et qui a la valeur de A1 au départ (ou encore ="") et une mise en forme conditionnelle sur toutes les cellules de la feuille avec la condition suivante
[Valeur de la cellule] [égale à] [=""&Sélection]

Puis comme code
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    Application.Names("Sélection").Value = ActiveCell.Value
End Sub


MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Commenter la réponse de cs_MPi
Messages postés
9
Date d'inscription
vendredi 26 août 2011
Dernière intervention
11 octobre 2012
0
Merci
Merci Ucfoutu et MPi pour vos réponses.


Je vais essayer de modifier ma macro selon vos conseils.

Ucfoutu, je ne comprend pas bien le principe d'extraire la plage.
S'agit-il de copier toutes les cellules qui ont des doublons dans une seconde feuille ?

Mpi, lorsque je me place sur une cellule, je souhaiterais pouvoir rapidement repérer si d'autres cellules ont la même valeur en changeant la couleur de fond de celles-ci.

Je n'ai pas besoin que la macro en fasse plus car ces doublons ne sont pas forcément des erreurs dans mon cas.


Merci déja pour votre aide,
Juju1971
Commenter la réponse de Juju1971
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Ucfoutu, je ne comprend pas bien le principe d'extraire la plage.
S'agit-il de copier toutes les cellules qui ont des doublons dans une seconde feuille ?

NON ! Pas du tout !
Il s'agit de constituer la plage des cellules doublons. Cette plage n'est pas forcément continue.
Relis ce que je t'en ai dit ici :
- Extraire la plage toto des cellules "doublons" (utilisation de Union)

Ouvre donc ton aide VB6 sur le mot Union !
C'est ensuite cette plage que tu dois utiliser pour :
Affecter l'interieur (interior) de celle plage)

Je ne pourrai aller loin avec toi si tu ne t'intéresses pas aux choses de base !
________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Dernière intervention
23 août 2018
0
Merci
>>Mpi, lorsque je me place sur une cellule, je souhaiterais pouvoir rapidement repérer si d'autres cellules ont la même valeur en changeant la couleur de fond de celles-ci.

C'est exactement ce que fait ce que je t'ai donné. Dès que tu sélectionnes une cellule, toutes les autres identiques changeront selon le format que tu as donné dans la mise en forme conditionnelle.

MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Commenter la réponse de cs_MPi
Messages postés
18039
Date d'inscription
lundi 7 décembre 2009
Statut
Contributeur
Dernière intervention
11 avril 2018
0
Merci
Un petit rappel d'un aspect de la demande :
De plus lorsque je sélectionne une autre cellule, il prend bien en compte la nouvelle recherche mais la macro laisse en couleur les doublons de la première recherche au lieu de réinitialiser



________________________
Réponse exacte ? => "REPONSE ACCEPTEE" pour faciliter les recherches.
Pas d'aide en ligne installée ? => ne comptez pas sur moi pour simplement vous dire ce qu'elle contient. Je n'interviendrai qu'en cas de nécessité de développ
Commenter la réponse de ucfoutu
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Dernière intervention
23 août 2018
0
Merci
La façon de procéder que j'ai mise permet d'afficher toutes les cellules identiques à celle sélectionnée. Si on clique une autre cellule, seule les cellules identiques à cette nouvelle cellule sélectionnée seront affichées selon le format chosi dans la mise en forme conditionnelle.

Et c'est très rapide

Par contre, il s'agit de voir quelles actions seront posées sur ces cellules. Est-ce qu'elles seront effacées ? déplacées ? autre ?

On pourrait modifier le code de SelectionChange() pour y créer le "nom" au cas où il disparaîtrait de quelconque façon
Private Sub Worksheet_SelectionChange(ByVal Target As Range)
    On Error Resume Next
    
    If IsError(Application.Names("Sélection").Value) Then
        ActiveWorkbook.Names.Add Name:="Sélection", RefersToR1C1:="="""""
    End If
    Application.Names("Sélection").Value = ActiveCell.Value
    
    On Error GoTo 0
End Sub


MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Commenter la réponse de cs_MPi
Messages postés
3877
Date d'inscription
mardi 19 mars 2002
Dernière intervention
23 août 2018
0
Merci
Peut-être que j'ai créé la confusion en utilisant le nom "Sélection" qui se confond aisément avec le mot réservé Selection. Donc on pourrait changer ce mot dans le code et la mise en forme conditionnelle par "MaCellule" ou autre...


MPi²
Pour ceux qui programment sous Office, n'oubliez pas qu'il existe un forum dédié à ces applications VBA....... ICI
Commenter la réponse de cs_MPi
Messages postés
9
Date d'inscription
vendredi 26 août 2011
Dernière intervention
11 octobre 2012
0
Merci
Merci pour vos réponses à tous les deux.

Etant novice en VBA, je continue à étudier vos commentaires.

J'essaie d'aller le plus loin que je peux avec les codes avant de vous en demander plus car je ne cherche pas à faire du "copier/coller".

Sinon pour les cellules qui seraient en double dans mon tableau, je ne vais pas les effacer.

Elles se situent sur deux colonnes D et I.

Et si par exemple une donnée se trouve dans la colonne D, et que j'observe un ou plusieurs doublons ailleurs dans mon tableau dans la colonne I, je vais croiser les données entre la colonne D et I afin qu'elles soient toujours dans la même colonne.

Pour ce croisement, j'ai déja fait une macro qui fonctionne, je n'ai qu'à me mettre quelque part sur la colonne D et un bouton inverse le contenu de la cellule en D avec celui de la colonne en I.

Je ne cherche pas non plus à faire une inversion automatique, car il peut arriver d'avoir la même donnée dans les deux colonnes et dans ce cas je dois décider d'un croisement selon le contenu dans les autres colonnes.

Autre point la totalité de la feuille est régulièrement remplacée par l'importation d'une nouvelle feuille, avec les mêmes colonnes mais avec des données totalement différentes.

Mpi, je regarde aussi pour la mise en forme conditionnelle via le gestionnaire de nom, pour l'instant je ne connais que le principe de base en Excel.
Commenter la réponse de Juju1971

Vous n'êtes pas encore membre ?

inscrivez-vous, c'est gratuit et ça prend moins d'une minute !

Les membres obtiennent plus de réponses que les utilisateurs anonymes.

Le fait d'être membre vous permet d'avoir un suivi détaillé de vos demandes et codes sources.

Le fait d'être membre vous permet d'avoir des options supplémentaires.