VBA - Copier Coller d'un fichier A vers fichier B

Bonjour,

J'aurais besoin d'aide pour faire une Macro VBA - Copier les données d'un fichier B vers un fichier A mais n'ayant pas plus d'expérience voir de connaissance sur VBA, il m'est difficile de mettre ma demande en pratique de moi même.

Voici les deux fichiers.

Fichier A - Fiche de liaison 2023

Fichier B - Test - Fab2023

Ce que j'aimerais faire, c'est que la personne qui aura le fichier aura juste à cliquer sur un bouton et automatiquement la macro devra aller sur le fichier B (Fab2023v1) se rendre sur l'onglet "Feuil1", venir copier de la cellule B21:C35 et venir les coller dans le fichier A (fiche de liaison 2023) dans la cellule A6:B16.

Ma question c'est si jamais les deux fichiers ne sont pas situés dans le même dossier comment pourrions nous faire ? Et, autre question faut-il que le fichier B soit lancé pour que la macro puisse fonctionner ? ou la macro est capable de l'ouvrir, copier, coller et fermer le fichier B ?

Ci joint les fichiers

10test-fab2023.zip (149.37 Ko)

Merci beaucoup !

Au plaisir de vous lire.

Cordialement,

Bonjour Ghandi,

Je ne vois pas d'onglet "Indicateur journalier" dans le classeur "Test - Fab2023" ...

Pourquoi ne pas utiliser un copier / collage spécial avec liaison pour que les données saisies dans "Fiche de liaison 2023" soient disponibles / rafraichies dans "Test - Fab2023" ?

@Cylfo

Oups, l'onglet en question "Indicateur journalier" du fichier Test - Fab2023 est "Feuil1"

Je n'ai jamais utilisé l'option collage spécial avec liaison. Pourriez-vous m'en dire plus ? est-ce que c'est un moyen plus simple sans forcement se casser la tête par une macro vba ?

Je viens d'essayer le collage spécial avec lien, effectivement c'est pratique. La question est la suivante, le fichier se met à jour automatiquement même sans avoir le fichier d'ouvert ?

Le procédé c'est la suivante : Test - Fab2023 est mis à jour régulièrement --> La donnée doit être transféré vers la fiche de liaison 2023

Bonjour,

"Ma question c'est si jamais les deux fichiers ne sont pas situés dans le même dossier comment pourrions nous faire ?"

Il faut connaître le chemin d'accés au fichier si il n'est pas placé au même endroit que celui contenant la macro.

Et, autre question faut-il que le fichier B soit lancé pour que la macro puisse fonctionner ? ou la macro est capable de l'ouvrir, copier, coller et fermer le fichier B ?

La macro peut tout a fait ouvrir copier et fermer si la condition question 1 est vrai.

Nota : Copier coller en ce qui vous concerne ; revient à écrire en VBA

la plage.fichier A. (A6:B16)=plage fichier B...( B21:C35).value

Ah d'accord je vois, par exemple le fichier B se trouvera sur le chemin suivant : N:\Centres\BL\Fabrication\10-Ordonnancement\10-Fichiers 2023.

Je vous avouerais que je comprends la logique de votre VBA par contre pour la construire, j'en serais incapable ^^"

Est-il possible d'avoir un code VBA où je pourrais idéalement modifier le chemin d'accès du fichier ; plage à copier/coller ?

Tu ouvres les 2 fichiers :

  1. Dans le 1er classeur (la source), tu sélectionnes la plage à copier, tu la copies (Ctrl+C)
  2. Dans le second classeur (la cible), tu sélectionnes la cellule supérieure / gauche de la plage où tu veux coller les données. Dans le menu "Coller", tu sélectionnes "Collage spécial ...", tu cliques sur "Coller avec liaison" et le tour est joué.

Il 'est pas obligatoire que les 2 classeurs soient dans le même dossier. A l'ouverture du classeur cible, un message est affiché te prévenant que le fichier est lié et peut présenter un risque (mais dans ton cas, tu connais l'origine) et si tu veux ou non mettre à jour les données.

Une limite : si le classeur source est en cours d'actualisation et sauvegardé, tu peux récupérer des données intermédiaires si tu rafraichis ton classeur cible. D'un autre côté avec la macro, tu ne saurais pas non plus à quel moment la personne a envoyé les données et elle pourrait aussi se raviser après coup, refaire des modifs et les renvoyer (ou oublier de le faire ...).

Avantages : Il n'y a pas le risque que la personne oublie d'envoyer les données. Si tu n'as pas de connaissances poussées en Excel et VBA, c'est facile à maintenir.

Ah mais carrément top !

Du coup, j'aurais juste une question. Il faudrait que j'actualise pour obtenir mes données intermédiaires dans le cas où la personne est en train de modifier / a déjà modifier quelques lignes ? Dans le cas contraire, est-ce que les lignes restes figés ou c'est en temps réel que le fichier A se met à jour ?

Les copier collés avec liaisons sont mise à jour à l'ouverture du fichier source.

- Si c'est vous qui modifier le fichier B alors que votre fichier A est ouvert alors les données sont à jour.

- Si une autre personne modifie le fichier B alors votre Fichier A sera à jour si vous ouvrez le fichier B.

( sans ouverture du fichier B le fichier A conserve les anciennes valeurs )

Ah d'accord, c'est beaucoup plus clair. J'aurais bien aimé éviter cette ouverture du fichier B pour que le fichier A soit autonome en se rafraichissant automatiquement.

Cependant, ce n'est pas plus mal dans le cas où il y a une double vérification qui se fera pour la personne qui ouvrira le fichier B pour s'assurer que le fichier A est bien à jour.

Bonjour Xmenpl,

Quelques questions pour parfaire mes connaissances (si j'ai bien compris et juste pour être en phase avec ce que tu dis, Ghandi veut copier les données de B (source) vers A (cible)).

Les copier collés avec liaisons sont mise à jour à l'ouverture du fichier source.

=> Il y a un truc qui m'échappe ... pourquoi dans cas, il y a le message à l'ouverture du fichier cible A demandant si on veut ou non mettre à jour les données ?

- Si c'est vous qui modifier le fichier B alors que votre fichier A est ouvert alors les données sont à jour.

- Si une autre personne modifie le fichier B alors votre Fichier A sera à jour si vous ouvrez le fichier B.

( sans ouverture du fichier B le fichier A conserve les anciennes valeurs )

=> La mise à jour en cours d'utilisation via "Fichier" / "Informations" / "Modifier les liaisons ..." / "Mettre à jour les valeurs" ne fonctionne pas ? et "Données" / "Actualiser tout" ?

Bonjour, Cylfo. pour préciser ma pensée,

Le message à l'ouverture voulez vous actualiser ne veut pas dire qu'Excel va réussir à actualiser.

- De mon coté Si B se trouve sur un autre emplacement réseau je suis obligé de l'ouvrir.

- idem si B est actuellement utilisé par un autre.

Aprés je n'ai pas activé le Partage du fichier B ? faudra que j'essai.

@Xmempl,

Une idée ... Tu as essayé, une fois la liaison établie (j'imagine avec un nom de lecteur) de revenir sur "Données" / "Modifier les liaisons" / "Modifier la source" et d'indiquer le chemin avec le nom UNC et de voir si cela ne fonctionne pas mieux ?

Merci Cylfo je ferais un test.

De mon coté j'avais fini par contourner le problème.

A l'ouverture de mon fichier A une macro ouvre le fichier B en lecture seule afin que je sois certains de l'actualisation.

Ok. De mon côté, je fais le test jeudi et je te dirai.

Rechercher des sujets similaires à "vba copier coller fichier"