Transférer des lignes d'un fichier à un autre sous condition

Bonjour à tous !

Je bloque sur un code depuis déjà quelques jours.

Je souhaite copier toutes les lignes de codes qui ne sont pas présentes dans un fichier initiale à un autre fichier. Plus concrètement, ma base de données initiales va être mis à jour régulièrement, de ce fait je souhaite que lorsque j'ouvre le deuxième fichier:

-La base de donnée s'ouvre

-Les lignes présentes dans la base de donnée (ici ID 145156) non présentes dans le 2eme fichier soient copié collé, et donc décalé tout le tableau du classeureeel d'un cran vers le bas pour chaque ligne

Sachant que les lignes ajoutés seront toujours en haut et que chaque ligne aura un ID unique.

10classseurbase.xlsx (9.37 Ko)

Merci !

up

Bonjour,

Un essai avec power query. Pour l'actualisation, onglet Données, Requêtes et connexions, Actualiser tout.

Cordialement.

7classeurreel.xlsx (19.83 Ko)

Merci ! Cependant j'ai beaucoup de mal avec Power Pivot (de plus mon ordi rame enormement avec, je ne sais pas pourquoi) et cela m'affiche cette erreur

Impossible de terminer la commande. Aucun tableau n'a été détecté dans le classeur Excel actif lié aux tableaux PowerPivot.

Cela n'est il pas possible via VBA ? Merci !

Re,

Ce n'est pas du Power Pivot, mais du power query. onglet Données, Requêtes et connexions, les requêtes apparaissent sur la droite.

Il faut indiquer, à power query, dans le classeur réel en G1 où se trouve le classeur base pour pouvoir actualiser la requête.

Cordialement.

Bonjour toto1825, le fil

un exemple en VBA

Public wkBase                   As Workbook
Public wkReel                   As Workbook
Public tabBase()
Public tabReel()

Sub MajBdd()
    '   Le classeur "REEL"  classeur à mettre à jour
    Set wkReel = ActiveWorkbook
    tabReel = Range("tableau1")     '   à remplacer par le nom du tableau

    '   Le classeur "BASE" classeur qui fait office de base de données modifiée
    Set wkBase = Workbooks.Open("nomComplet du classeur BASE avec chemin et extension tel que C:\..\classeurBDD.xlsx")
    tabBase = Range("tableau1")     '   à remplacer par le nom du tableau
    wkBase.Close False

    '   Si les tailles des 2 tbleaux issus de BASE et REEL ne sont pas de tailles identiques
    If Not (UBound(tabBase, 1) = UBound(tabReel, 1)) Then
        '   Il faut mettre à jour le classeur REEL
        '   Redimensier le tableau à la nouvelle taille et copier celui lu dans BASE
        Range("tableau1").Resize(UBound(tabBase, 1), UBound(tabBase, 2)) = tabBase
    End If
End Sub

Merci à vous deux, j'ai essayé vos 2 méthodes et cela marche !

Merci beaucoup !!

Bonjour toto1825

De rien et bonne continuation...

Tu peux si tu le souhaites rendre automatique à chaque ouverture du classeur "REEL" cette procédure de "mise à jour", en plaçant un appel à celle-ci dans le module événementiel du classeur ......le procédure événementielle concernée est WorkBook_Open

Rechercher des sujets similaires à "transferer lignes fichier condition"