Trouver les doublons entre une plage et plusieurs autres en VBA

  • Initiateur de la discussion Initiateur de la discussion Oraff
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

O

Oraff

Guest
hello le forum !

Je bloque sur une recherche du doublons. J'ai 4 plages de numéros........Une plage est ma référence.....mon but est de révéler les numéros des 3 autres plages qui sont présents dans ma plage référence. Je rame seul au milieu de l'océan......help me please !
 

Pièces jointes

Dernière modification par un modérateur:
Re : Trouver les doublons entre une plage et plusieurs autres en VBA

Bonjour le fil, bonjour le forum,

Avast a bloqué un virus à l'ouverture de ton site hébergeur ! À éviter donc à l'avenir...

Le code modifié :
Code:
Sub Doublons()Dim pf As Range 'déclare la variable pf (Plage de réFérence)
Dim pr As Range 'déclare la variable pr (Plage de Recherche)
Dim cf As Range 'déclare la variable cf (Cellule de la plage de réFérence)
Dim cr As Range 'déclare la variable cr (Cellule de la plage de Recherche)

Range("B5:AL64000").Interior.ColorIndex = xlNone
With Sheets("Vision élargie") 'prend en compte l'onglet "Vision élargie"
    Set pf = .Range("J5:J" & .Cells(Application.Rows.Count, 8).End(xlUp).Row) 'définit la plage pf
    'définit la plage pr
    Set pr = Application.Union(.Range("B5:B" & .Cells(Application.Rows.Count, 2).End(xlUp).Row), .Range("R5:R" & .Cells(Application.Rows.Count, 18).End(xlUp).Row), .Range("Z5:Z" & .Cells(Application.Rows.Count, 26).End(xlUp).Row), _
        .Range("AH5:AH" & .Cells(Application.Rows.Count, 34).End(xlUp).Row))
    For Each cf In pf 'boucle 1 : sur toutes les cellules cf de la plage pf
        For Each cr In pr 'boucle 2 : sur toutes les cellules cr de la plage pr
            If cr.Value = cf.Value Then 'condition : si les deux cellules sont identiques
                cr.Resize(1, 5).Interior.ColorIndex = 6 'colore la ligne de cr de jaune
                Exit For 'sort de la boucle 2
            End If 'fin de la condition
        Next cr 'prochaine cellule cr de la boucle 2
    Next cf 'prochaine cellule cf de la boucle 1
End With 'fin de la prise en compte de l'onglet "Vision élargie"
End Sub

Alors j'explique...
Code:
("B5:B" & .Cells(Application.Rows.Count, 2
Ça signifie une plage de B5 à la dernière ligne éditée de la colonne B (B=2, R=18, Z=26 et AH=34)
Tu avais modifié les plage mais la dernière ligne éditée ne correspondait plus...
 
Re : Trouver les doublons entre une plage et plusieurs autres en VBA

Wahou....ok...je suis nul....! Merci robert.....et pour le truc des doubles du coup ? On e l'exemple avec le 121 qui apparait deux fois en Semaine 30, on peut mettre en Jaune autant de fois que le double est présent ?

au fait "application.union"....ca fait quoi en fait ?
 
Re : Trouver les doublons entre une plage et plusieurs autres en VBA

Bonjour le fil, bonjour le forum,

Le code modifié, j'ai enlevé le Exit For (je l'avais mis pour accélerer le temps d'exécution de la macro)...
Code:
Sub Doublons()Dim pf As Range 'déclare la variable pf (Plage de réFérence)
Dim pr As Range 'déclare la variable pr (Plage de Recherche)
Dim cf As Range 'déclare la variable cf (Cellule de la plage de réFérence)
Dim cr As Range 'déclare la variable cr (Cellule de la plage de Recherche)


Range("B5:AL64000").Interior.ColorIndex = xlNone
With Sheets("Vision élargie") 'prend en compte l'onglet "Vision élargie"
    Set pf = .Range("J5:J" & .Cells(Application.Rows.Count, 8).End(xlUp).Row) 'définit la plage pf
    'définit la plage pr
    Set pr = Application.Union(.Range("B5:B" & .Cells(Application.Rows.Count, 2).End(xlUp).Row), .Range("R5:R" & .Cells(Application.Rows.Count, 18).End(xlUp).Row), .Range("Z5:Z" & .Cells(Application.Rows.Count, 26).End(xlUp).Row), _
        .Range("AH5:AH" & .Cells(Application.Rows.Count, 34).End(xlUp).Row))
    For Each cf In pf 'boucle 1 : sur toutes les cellules cf de la plage pf
        For Each cr In pr 'boucle 2 : sur toutes les cellules cr de la plage pr
            If cr.Value = cf.Value Then 'condition : si les deux cellules sont identiques
                cr.Resize(1, 5).Interior.ColorIndex = 6 'colore la ligne de cr de jaune
            End If 'fin de la condition
        Next cr 'prochaine cellule cr de la boucle 2
    Next cf 'prochaine cellule cf de la boucle 1
End With 'fin de la prise en compte de l'onglet "Vision élargie"
End Sub
Set Mapage = Application.Union(plage1, Plage2, Plage3) permet de créer une plage formée de plusieurs plages non contiguës (c'est ton cas).
Set Mapage = Application.Intersect(plage1, Plage2) permet de créer une plage formée de l'intersection de deux plages.

 
Dernière édition:
Re : Trouver les doublons entre une plage et plusieurs autres en VBA

Bonjour à toutes et à tous,
Je suis nouveau dans la communauté et c'est la première fois que je participe à un forum. Je rencontre des difficultés pour résoudre un problème avec Excel. Dois-je créer un nouveau forum? En attendant je vous soumet mon souci qui peut être en rapport avec les doublons en vous communiquant un fichier joint.

Merci d'avance à celles et ceux qui pourront m'aider.
 

Pièces jointes

Re : Trouver les doublons entre une plage et plusieurs autres en VBA

Bonjour Oraff,
Avec les différents éléments présent dans les premiers onglets je voudrai réaliser le dernier automatiquement. Je sais utiliser par exemple la rechercheV mais pour un collaborateur concerné par plusieurs lignes je ne peux qu'en récupérer une. L'idée serait de repositionner ce qui est en ligne sur les 3 preimiers tableaux les représenter en colonne dans le dernier de telle sorte que sur une même ligne je puis avoir le nom la formation demandée, la formation réalisée etc.

Merci d'avance
 
Re : Trouver les doublons entre une plage et plusieurs autres en VBA

Tu pourrais peut-être utiliser un tableau croisé dynamique....? en tout cas par formule ca me parrait un peu difficile.... quelqu'un peut aider PHG..? moi je n'ai pas le niveau...pas encore.....
 
Re : Trouver les doublons entre une plage et plusieurs autres en VBA

Bonjour Oraff
Après un bon week-end-end j'ai réfléchi et ai compris de la complexité de ma demande. J'ai trouvé une possibilité en créant des liens depuis un fichier Excel qui me renvoie fiche collaborateurs par collaborateurs vers un fichier PDF où j'ai toutes les infos. Cela me permet ensuite de finaliser mon document.

Merci encore pour ton aide et bonne journée

PHG
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

A
Réponses
11
Affichages
2 K
A
A
Réponses
1
Affichages
1 K
Astragor
A
S
Réponses
11
Affichages
1 K
sgangbadjo
S
Retour