Importer le même onglet de plusieurs fichiers dans un seul fichier en VBA

Bonjour, j'aurais besoin de votre aide.

J'ai différents fichiers sources ayant tous la même architecture. Et je souhaiterais à la fermeture des fichiers sources qu'un seul onglet soit recopier dans le fichier final avec compilation de ce dernier.

Dans mon exemple :

  • 2 fichiers sources ayant un onglet nommé "FICHIER_FINAL" qui vont augmenté en nombre de lignes au fil du temps
  • 1 fichier PREVISIONNEL dans lequel il y a un onglet nommé "FICHIER_FINAL" et sur lequel j'aimerais qu'à la fermeture du fichier source n°1 que les données de 'l'onglet "FICHIER_FINAL" soient collées sur le fichier PREVISIONNEL et de même pour le fichier source n°2 à la suite lors de la 1ère ligne vide.

Mais il faudrait avant que de copier et coller sur le PREVISIONNEL, que toutes les lignes ayant le même "Nom fichier" soient effacées et ensuite on copie et colle, ceci afin d'éviter les doublons.

J'ai réussi à créer un code, me permettant à la fermeture du fichier source de copie et coller sur le fichier PREVISIONNEL, mais le soucis c'est que le dernier fichier que je ferme efface toutes les données importées lors de la fermeture du fichier précédent. Alors que j'aimerais qu'elle efface les doublons "Nom Fichier" et ensuite qu'elle copie et colle à la suite.

6previsionnel.xlsm (10.47 Ko)

Bonjour

Je n'ai trouvé nulle part le code dont tu parles.

Dommage, cela aurait aidé à mieux comprendre...

Bye !

Oh pardon ! Je devais être mal réveillé !

Bonjour

J'ai fait le fichier source 1

A+ François

Merci à toi, cela fonctionne parfaitement.

J'aurais une autre question, si cela est possible.

Sur les fichiers sources 1 et 2, j'ai crée un autre onglet dont le nom et l'architecture est identique sur les 2 fichiers mais différent du 1er onglet "FICHIER_FINAL". J'aimerais qu'à la fermeture que cet onglet "RECAP" s'enregistre également sur un autre fichier mais différent du 1er pas sur "PREVISIONNEL" mais sur "BILAN MENSUEL", tout en faisant comme la 1ère macro c'est à dire que toutes les lignes ayant le même "Nom fichier" soient effacées et ensuite on copie et colle, ceci afin d'éviter les doublons.

  1. Il faudrait avant que de copier et coller sur le PREVISIONNEL l'onglet "FICHIER_FINAL", que toutes les lignes ayant le même "Nom fichier" soient effacées et ensuite on copie et colle, ceci afin d'éviter les doublons.
  2. Il faudrait avant que de copier et coller sur le BILAN MENSUEL l'onglet "RECAP", que toutes les lignes ayant le même "Nom fichier" soient effacées et ensuite on copie et colle, ceci afin d'éviter les doublons.

Merci beaucoup

1previsionnel.xlsm (11.02 Ko)

Bonjour

J'ai fait le fichier: fichier source 1

A+ François

Bonjour, cela fonctionne mais pour que le fichier final soit mis à jour il faut que l'onglet lors de la fermeture soit activé.

Par exemple :

  • Quand je suis sur l'onglet "FICHIER_FINAL" du FICHIER SOURCE 1 et que je ferme il n'y a que le fichier "previsionnel.xlsm" qui ce met à jour et le fichier "bilan-mensuel.xlsm" ne se met pas à jour. Et inversement lorsque je suis sur l'onglet "RECAP" du FICHIER SOURCE 1 c'est le "Bilan-mensuel" qui se met à jour et non le "previsionnel.xlsm".
  • Si je suis sur l'onglet "Params" et que je ferme le fichier il y a mis à jour des 2 fichiers mais en mode ajout mais il n'y pas suppression des doublons par rapport à la colonne K ou L. Pour qu'il y ai vraiment suppression des doublons il faut que lors de la fermeture du fichier que je sois sur l'onglet désignant le fichier final.

Or j'aimerais lors de la fermeture du fichier que ces 2 onglets se mettent systématiquement à jour sur les 2 fichiers "previsionnel.xlsm" et "bilan-mensuel.xlsm". Car il est fort probable que lors de la fermeture que je sois sur un onglet différent de ces 2 (il en existe plein d'autres).

Merci beaucoup

Bonjour

Tu me surprends car dans la macro je précise bien les feuilles et en aucun cas je fais appel à la feuille active

A+ François

Bizarre car chez moi malheureusement ça ne fonctionne pas en supprimer les doublons lors que je ne suis pas sur la feuille active.

Exact

Je pense avoir corrigé le problème

A+ François

Encore merci à toi, cela fonctionne parfaitement (mais depuis le temps de latence avant la fermeture du fichier source est devenu très long), n'y aurait-il pas une solution pour le réduire?

Le fait que le temps de latence avant la fermeture soit très long, provient peut être sur le fait que :

  1. Lors du delete, il se fait ligne en ligne en fonction de la colonne K ou L, ne serait pas possible d'établir un filtre en fonction de la colonne K ou L et ensuite deleté le bloc de tri d'un seul coup.
  2. Lors de l'écriture sur le fichier final, elle se fait de ligne en ligne, ne serait-il pas possible de sélectionner le bloc entre la 1ère ligne et la dernière ligne non vide et ensuite de coller ce bloc d'un seul coup

Mais je n'en suis pas certains, et je n'ai pas les compétences pour le faire. Il faudrait peut être Accélérer les 2 boucles "delete" et "écriture"

Merci

Bonjour

Est ce qu'il u a une amélioration

A+ François

Sur cette nouvelle version, il n'y a pas d'enregistrement sur les 2 fichiers de destination, de mon côté le code VBA ne fonctionne pas.

Quand on exécute la macro en appuyant sur F5

Il s'arrête en mode débogage au niveau du module 1 "Windows("previsionnel.xlsm").Activate"

Option Explicit

Sub Macro3()
    Range("A2:K4").Select
    Selection.Copy
    Windows("previsionnel.xlsm").Activate 
    Range("A4").Select
    ActiveSheet.Paste
    Range("B8").Select
End Sub

A+ Snowkite

Bonjour

Excuse, j'avais pas vu, tu es sur MAC....

Donc je te laisse.

A+ François

PS: je n'ai rien contre MAC mais contre Excel pour MAC...

Rechercher des sujets similaires à "importer meme onglet fichiers seul fichier vba"