Trouver les doublons entre une plage et plusieurs autres en VBA

Oraff

XLDnaute Nouveau
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

  • DoublesEntrePlages.xls
    70.5 KB · Affichages: 59
Dernière édition:

Robert

XLDnaute Barbatruc
Repose en paix
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...
 

Oraff

XLDnaute Nouveau
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 ?
 

Robert

XLDnaute Barbatruc
Repose en paix
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:

PHG

XLDnaute Nouveau
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

  • RECAP FORMATION test.xls
    38.5 KB · Affichages: 52
  • RECAP FORMATION test.xls
    38.5 KB · Affichages: 61
  • RECAP FORMATION test.xls
    38.5 KB · Affichages: 51

PHG

XLDnaute Nouveau
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
 

Oraff

XLDnaute Nouveau
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.....
 

PHG

XLDnaute Nouveau
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
 

Discussions similaires

Réponses
50
Affichages
5 K

Statistiques des forums

Discussions
312 529
Messages
2 089 368
Membres
104 144
dernier inscrit
Mikeml01