Tableau pour recherche de PN et copie/colle

flint6593

XLDnaute Occasionnel
Bonjour,
Voici mon souci.

J'ai un PN dans un onglet A.
Ce PN apparaît plusieurs fois dans l'onglet B colonne A.
Et pour chaque fois qu'il apparaît dans la colonne A, je copie la ligne dans l'onglet C.

La seule solution que j'ai c'est de faire une boucle avec un IF, mais j'ai plus 200 références (onglet A) à rechercher dans l'onglet B qui a plus de 100000 lignes. C'est vraiment trop long à traiter.

Auriez-vous une astuce???
Peut-être avec une tableau??
Je vous met un exemple en PJ.

Merci d'avance!!!!
 

Pièces jointes

  • Classeur1.xlsx
    10.9 KB · Affichages: 61
  • Classeur1.xlsx
    10.9 KB · Affichages: 67
  • Classeur1.xlsx
    10.9 KB · Affichages: 65

Nairolf

XLDnaute Accro
Re : Tableau pour recherche de PN et copie/colle

Salut flint, salut forum,

A mon avis, pour faire simple, il faut que tu passes par un filtre, essaye avec ce code vba comme base:

Sheets("A").Range("$A$1:$E$39").AutoFilter Field:=1, Criteria1:=Array("tata", "toto", "tutu"), Operator:=xlFilterValues
Sheets("A").Select
Rows("1:40").Select
Selection.Copy
Sheets("C").Select
Range("A1").Select
ActiveSheet.Paste
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Tableau pour recherche de PN et copie/colle

Bonjour Flint, bonjour le forum,

Peut-être comme ça :
Code:
Sub Macro1()
Dim A As Object 'déclare la variable A
Dim B As Object 'déclare la variable B
Dim C As Object 'déclare la variable C
Dim dla As Long 'déclare la variable dla (Dernière Ligne A)
Dim pla As Range 'déclare la variable pla (PLage A)
Dim dlb As Long 'déclare la variable dlb (Dernière Ligne B)
Dim plb As Range 'déclare la variable plb (PLage B)
Dim cel As Range 'déclare la variable cel (CELlule)
Dim d As Object 'déclare la variable d (Dictionnaire)
Dim temp As Variant 'déclare la variable temp (TEMPoraire)
Dim i As Long 'déclare la variable i (Incrément)
Dim dest As Range 'déclare la variable dest (cellule de DESTination)

Set A = Sheets("A") 'définit l'onglet A
Set B = Sheets("B") 'définit l'onglet B
Set C = Sheets("C") 'définit l'onglet C
dla = A.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne édité dla de la colonne 1 (=A) de l'onglet A
Set pla = A.Range("A2:E" & dla) 'définit la plage pla
dlb = B.Cells(Application.Rows.Count, 1).End(xlUp).Row 'définit la dernière ligne édité dlb de la colonne 1 (=A) de l'onglet B
Set plb = B.Range("A2:A" & dlb) 'définit la plage pla
Set d = CreateObject("Scripting.Dictionary") 'définit le dictionnaire d
For Each cel In plb 'boucle 1 : sur toutes les cellule cel de la plage plb
    d(cel.Value) = "" 'alimente le dictionnaire
Next cel 'prochaine cellule de la boucle
temp = d.keys 'récupère les valeurs uniques (sans doublon) du dictionnaire
For i = 0 To UBound(temp, 1) 'boucle 2 : sur toute les valeur unique
    Set dest = IIf(C.Range("A2").Value = "", C.Range("A2"), C.Cells(Application.Rows.Count, 1).End(xlUp).Offset(1, 0)) 'définit la cellule de destination
    A.Range("A1").AutoFilter Field:=1, Criteria1:=temp(i) 'filtre la plage pla par rapport à la valeur unique temp(i)
    pla.SpecialCells(xlCellTypeVisible).Copy dest 'copie les cellules visibles de la plage pla et les colle dans dest
    A.Range("A1").AutoFilter 'supprime le filtre automatique
Next i 'prochaine valeur unique de la boucle 2
End Sub

[Édition]
Bonjour Nairolf on s'est croisé...
 

Nairolf

XLDnaute Accro
Re : Tableau pour recherche de PN et copie/colle

Salut Robert,

ça se voit que je ne suis pas encore un Barbatruc, moi je lance un code grossièrement construit alors que le tiens (qui est sur le même principe que le miens) est complet et prend en compte la taille du tableau.

Un jour moi aussi je serais grand ;)
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Tableau pour recherche de PN et copie/colle

Bonsoir le fil, bonsoir le forum,

Un jour moi aussi je serais grand ;)

J'ai commencé tout petit, petit, petit et je ne suis qu'un Barbatruc qui apprend tous les jours... Mais pour grandir c'est vrai qu'ici il y a tout ce qu'il faut. Des balèzes de chez balèzes mais aussi un esprit spécial qui donnent à ce site un coté particulier qui me plaît beaucoup.
 

flint6593

XLDnaute Occasionnel
Re : Tableau pour recherche de PN et copie/colle

Bonjour Robert, Nairolf,

Tout d'abord merci pour vos réponses en ces périodes de fêtes... Malheureusement les pb au taf ça arrive même à cette période!! :)

Je vais tester les deux solutions, c'est vraiment super. J'avoue qu'au niveau de Robert ça devient de l'art!!!! :D:D:D

Merci encore pour vos réponses, je testes et viendrais clôturer le sujet si ok!!!

Bonnes fêtes à tous!!!!
 

Discussions similaires

Statistiques des forums

Discussions
312 489
Messages
2 088 848
Membres
103 972
dernier inscrit
steeter