Comparer 2 objet ranges

  • Initiateur de la discussion KmiKze
  • Date de début
K

KmiKze

Guest
Bonsoir,

Je suis sur un projet. Pb, je dois transférer des plages d'un classeur à l'autre.
Rien de plus simple : un copier coller.
Là où ça se complique : il faut éviter les doublons. Il me faut donc comparer chaque valeur que j'exporte avant de l'insérer à ma nouvelle base de donnée.
Qui pourrez m'indiquez quelle méthode permet la comparaison de 2 objet range !

Merci d'avance.

Ps : promis dès que mon projet est effectif je le mets sur à disposition !
 
M

mireille

Guest
Je proposerai plutôt cela (avec les filtres élaborés)

Sub CopieSansDoublon()
ActiveCell.CurrentRegion.Name = "maselect"
Range("maselect").AdvancedFilter Action:=xlFilterCopy, CopyToRange:=Range( _
"F1"), Unique:=True
End Sub
 
@

@+Thierry

Guest
=> DEMO VBA Filtrer les Doublons en Comparaison 2 Objet Ranges(Complete Row)

Bonjour Mireille, Ronan, KmiKze, le Forum

Une autre approche 100% VBA, avec des Dynamic Arrays, et un Objet New Collection qui va analyser ligne par ligne les données de deux feuilles "DB1" et "DB2" et les reporter en clef unique sur une feuille "Reporting".

Ici je ne traite que 8 colonnes pour cette démo, mais on peut "élargir" à condition de bien respecter :
¤ D'ajuste les Tailles respectives de "PlageA" et "PlageB"
¤ D'ajuster correctement les deux Redim du Tableau "DataTab" en ajoutant les incrémentations nécessaires de colonnes.
¤ D'ajuster la Concaténation de la Variable String "TheKey"

Bonne Fin d'Après Midi
@+Thierry
 

Pièces jointes

  • Tab-Report-No-Duplicate.zip
    18.6 KB · Affichages: 37
R

Ronan

Guest
Bonsoir à tous,

Que dire !!!

A part, trop d'la balle (pour parler comme les jeunes de maintenant).

Moi qui utilise énormément les tableaux pour extraire les doublons (où chaque ligne d'un tableau est comparée avec chaque ligne du second tableau), je ne connaissais pas la méthode utilisant l'objet "collection".
Franchement, le system :

On Error Resume Next
UnicItem.Add TheKey, TheKey

permettant d'inscrire dans l'objet "UnicItem" toutes les données sauf les doublons grâce au 2ème argument TheKey .......

Bon, décidemment, j'suis un gros nul

@+

Ronan
 
R

Ronan

Guest
Re-Bonsoir

Une petite question à @+Thierry

Je ne comprend pas la subtilité de transposer un tableau vertical en tableau horizontal :

For i = 1 To UBound(PlageA, 1)
ReDim Preserve DataTab(8, x)
DataTab(0, x) = PlageA(i, 1)
DataTab(1, x) = PlageA(i, 2)
DataTab(2, x) = PlageA(i, 3)
DataTab(3, x) = PlageA(i, 4)
DataTab(4, x) = PlageA(i, 5)
DataTab(5, x) = PlageA(i, 6)
DataTab(6, x) = PlageA(i, 7)
DataTab(7, x) = PlageA(i, 8)
x = x + 1
Next i

Besoin d'une petite explication ???

@+

Ronan
 
@

@+Thierry

Guest
Bonjour Ronan, Mireille, KmiKze, le Forum

Merci des compliments, et personne n'est nul, juste tout le monde a besoin d'apprendre c'est ce que je fais ici aussin et d'ailleurs en voici le preuve :

Pour la petite histoire et dans un souci d'équité, la méthode New Collection pour filtrer les items en double par sa propriété sur l'erreur pour la clef unique a été introduite dans ce Forum par Hurricane. Depuis c'est vrai que je me la suis octroyée !!! C'est vraiment trop pratique !! lol

Pour ta question "Pourquoi transposer un tableau vertical en tableau horizontal"...

Et bien c'est simple, dans un ReDim on ne peut que redimensionner la seconde dimension, donc je transpose...... Là aussi dans un souci d'équité avant que Zon me donne cette astuce, je cherchais la taille de mon tableau puis je l'incrémentais ensuite pour le garder à l'endroit, puis Zon m'a conseillé ce truc...

Il est évident que de faire un tableau à l'envers est un peu perturbant pour l'équilibre mental (lol) mais celà évite d'avoir à connaitre les dimensions à l'avance....

Voilà c'est tout simple. Et çà aussi je me le suis octroyé dans toutes mes applis, c'est nettement plus rapide que de faire un passage à blanc pour connaitre les dimensions...

Voilà je pense que c'est clair maintenant.

Bon Samedi à Tous et Toutes
@+Thierry
 

Membres actuellement en ligne

Statistiques des forums

Discussions
312 400
Messages
2 088 086
Membres
103 711
dernier inscrit
mindo