Importer sans doublon des données d'un autre fichier

Bonjour à tous,

Je débute avec VBA mais en parcourant internet j'ai réussi à écrire une dizaine de macros pour le fichier sur lequel je travaille (c'est déjà une belle victoire pour moi ^^)

Mais là je bloque car à partir de mon fichier existant, contenant déjà des données, je cherche à importer depuis un autre fichier que des nouvelles données (sans doublons quoi).

En simplifiant, j'ai un fichier suivi sectoriel (base_suivi_simplifiee) et un fichier contenant tous les secteurs (base_all_simplifiee) qui lui est renseigner tous les jours.

Je souhaite créer une macro dans le fichier base_suivi_simplifiee pour qu'il aille retrouver les numéros d'intervention de base_all_simplifiee dont le code activité est "VER" ET qui ne sont pas encore présent dans mon fichier suivi puis qui les colle à la suite des données déjà présentes dans mon fichier suivi.

Un exemple vaut mieux qu'un long discours, voici en pièces jointes les 2 fichiers.

Avec dans le fichier "base_suivi_simplifiee", le premier onglet : l'état actuel et dans le deuxième ongle le résultat attendu.

Mais c'est juste pour illustrer car je souhaiterais que les nouvelles lignes soient directement intégrer à l'onglet base_suivi

pour le code, j'ai essayé de faire quelque chose (import_sans_doublon), mais c'est pas joli joli et surtout il copie / colle même les numéros d'intervention déjà présent (donc des doublons) ...

Sub import_sans_doublon()

For i = 2 To 102 Step 1
Windows("base_suivi_simplifiee.xlsm").Activate
Test = Cells(i, 2).Value
Windows("base_all_simplifiee.xlsm").Activate
If Cells(i, 8).Value = "VER" Then

    If Test <> Cells(i, 1).Value Then Cells(i, 1).Copy _
    Workbooks("base_suivi_simplifiee.xlsm").Worksheets("base_suivi").Cells(i + 5, 2)

    End If

Next i

Windows("base_suivi_simplifiee.xlsm").Activate
ActiveSheet.ListObjects("Tableau1").Resize Range("$A$1:$M$115")
    ActiveWorkbook.Worksheets("base_suivi").ListObjects("Tableau1").Sort.SortFields _
        .clear
    ActiveWorkbook.Worksheets("base_suivi").ListObjects("Tableau1").Sort.SortFields _
        .Add Key:=Range("Tableau1[[#All],[Numéro Intervention]]"), SortOn:= _
        xlSortOnValues, Order:=xlAscending, DataOption:=xlSortTextAsNumbers
    With ActiveWorkbook.Worksheets("base_suivi").ListObjects("Tableau1").Sort
        .Header = xlYes
        .MatchCase = False
        .Orientation = xlTopToBottom
        .SortMethod = xlPinYin
        .Apply
    End With

End Sub

Merci par avance pour votre aide.

A +

mita

bonjour,

Une solution en pièce jointe.

Attention J'ai renommé les classeurs

J'ai renommé les feuilles "source" et "cible"

Il conviendra d'ajuster la macro en conséquence (Ligne 5, 9 et 11)

Si tu trouves que c'est un petit peu lent rajouter un petit coup de ScreenUpdating comme indiqué :

   If WbIsOpen(NameWbC) Then           'Si le Classeur Cible est ouvert
   Application.ScreenUpdating = False  'On crée les références d'objets

A+

164base-suivi-vg.xlsm (16.18 Ko)
137base-all-vg.xlsm (31.06 Ko)

Merci beaucoup Galopin,

Ta macro fonctionne nickel, c'est tout à fait ce que je cherchais !

J'avoue je ne connaissais pas comment utiliser les Array.

Je vais pouvoir continuer à compléter le reste du fichier.

Merci beaucoup pour ton aide précieuse !

Aux plaisirs d'un prochain échange sur le forum.

Sincèrement,

Rechercher des sujets similaires à "importer doublon donnees fichier"