Copier coller classeurs distincts

Bonjour à tous,

N’ayant que quelques notions en VBA, je sollicite votre contribution afin de m’aider à automatiser une tâche pour rapatrier des données d’un fichier Excel A vers un fichier Excel B.

Dans un fichier A, où il n’y a qu’un seul onglet, la première colonne est composée de noms, la seconde de prénoms. Dans un fichier B, j’ai plusieurs onglets nommés par « nom prénom ». Je souhaiterais aller lire le nom de la première ligne dans le fichier A, ouvrir le fichier B, sélectionner l’onglet du nom lu dans le fichier A puis sélectionner un plage de cellules dans cet onglet du fichier B pour aller la copier dans une plage de cellules du fichier A (dans la même ligne que le nom lu). Puis répéter l’opération pour la ligne 2, puis pour la ligne 3…

Par avance je vous remercie de votre aide.

Bonjour et bienvenue sur le forum

Un essai à tester. Te convient-il ?

Les 2 fichiers doivent être dans le même dossier.

Bye !

Bonjour GMB,

Je te remercie pour ta réponse et la précision de ton code.

J'ai testé ton code et il fonctionne plutôt bien. Cependant, en l'intégrant dans mon fichier il subsiste deux problèmes.

Problème n°1 :

Dans le fichier A, j'ai des lignes masquées entre les noms et ce de manière à pouvoir rajouter un nom sans faire d'insertion de lignes et quand j'exécute la macro, dans les lignes masquées où il n'y a ni nom, ni prénom, elle me copie les valeurs du dernier onglet ouvert dans le fichier B et cela le fait aussi si un nom et prénom rentrés dans le fichier A ne correspond à aucun onglet du fichier B.

Problème n°2 :

Mes fichiers ne sont pas dans le même dossier car la personne qui rempli le fichier B a un accès restreint à certains lecteurs du réseau professionnel et ne peut pas lire le fichier A. Ne pourrait-on pas ouvrir une fenêtre pour demander à la personne qui exécute la macro d'aller sélectionner le chemin du fichier B.

Je pense que je pourrai adapter la plage de cellules à copier car cette dernière est discontinue.

Par avance je te remercie de ton aide.

P.S : bonne et heureuse année 2019 à tous.

Bonjour et Bonne Année !

Dans le fichier A, j'ai des lignes masquées entre les noms et ce de manière

Ce qui serait bien , c'est que tu joignes de vrais fichiers sigificatifs...

Bye !

Effectivement cela sera plus simple d'avoir une vision globale. Je n'ai pas accès à mes fichiers aujourd'hui, je les mettrai en ligne demain dans la matinée.

Bonne journée.

Bonjour,

Comme demandé hier vous trouverez les fichiers concernés. Ces fichiers ne se situent pas dans le même dossier.

Le fichier A est celui nommé Variables_2019_V_Finale – il contient déjà quelques macros (dont les codes peuvent être optimisés vu que j’essaie d’apprendre pas à pas la programmation VBA) pour des actions limitées au fichier en lui-même.

Le fichier B est celui nommé 01-Feuilles_HS_Janvier, c’est la cible dans lequel je dois aller chercher des données pour les rapatrier dans le premier fichier.

Prenons comme exemple l’onglet Janvier_N du fichier A, ce que je souhaite pouvoir réaliser est depuis le fichier A, lire le nom et le prénom à partir de la ligne 6 dans le fichier A, ouvrir le fichier B, sélectionner l’onglet du nom et prénom lu dans le fichier A puis sélectionner une plage de cellules dans cet onglet du fichier B pour aller la copier (copier les valeurs sans la mise en forme) dans une plage de cellules du fichier A (dans la même ligne que le nom et prénom lu). Puis répéter l’opération pour la ligne 2, puis pour la ligne 3… Si les lignes du fichier A sont masquées ou vides (pas de nom/prénom) et si l’onglet n’existe pas dans le fichier B (par rapport au nom/prénom dans le fichier A) alors passer à la ligne suivante.

Les plages des cellules à copier - coller sont :

  • pour les lignes 6 à 28 : (I46 :L46) dans (Gi :Ji) puis (M46 :P46) dans (Mi :Pi)
  • pour les lignes 30 à 85 : (I46 :L46) dans (Gi :Ji) ; (M46 :P46) dans (Mi :Pi) ; Q46 dans Fi et Q47 dans Wi

Pour l'onglet Février_N, le fichier cible à aller chercher sera nommé 02-Feuilles_HS_Fevrier d'où l'idée d'ouvrir une boîte de dialogue pour sélectionner le fichier cible...

Merci par avance de votre aide.

Bonne journée.

13m-h2o.zip (222.58 Ko)

Bonjour,

J'ai essayé d'adapter le code que GMB m'avait transmis mais sans succès, je n'arrive pas à solutionner ce que je souhaite réaliser.

Je vous remercie par avance de votre aide.

Bonne journée

Bonjour le forum,

N'arrivant pas à solutionner ma problématique, je me permets de remonter mon sujet dans le fil de la discussion et ce afin de savoir si ce que je souhaite pouvoir mettre en œuvre est réalisable ou si je dois envisager une autre manière de répartir les données à rapatrier.

Conscient du temps que les contributeurs consacrent à la résolution des nombreux sujets à traiter, je vous remercie par avance de vos réponses.

Bonne journée à tous

Bonjour le forum,

Bonjour GMB,

Je me permets de te solliciter à nouveau sur ma problématique, comme tu avais commencer à répondre à mon sujet...

Par avance merci

Bonne journée

Bonjour

Un essai à tester. Te convient-il ?

Bye !

Bonsoir GMB,

Merci beaucoup pour ton aide et pour ton code. La macro fonctionne super bien, j’ai testé plusieurs scénarios cas et tout semble fonctionner.

Je me suis aperçu d’une mini-coquille concernant la copie de Q46 dans Fi car le code

fb.Range("Q46").Copy fa.Range("Q" & i + 5).PasteSpecial xlPasteValues

Il faudra que je remplace par fa.Range("F" & i + 5).PasteSpecial xlPasteValues

Aussi, ma seule réelle problématique est que mes deux fichiers ne sont pas dans le même dossier – dans ce cas puis-je remplacer :

chemin = ThisWorkbook.Path & "\"

par

chemin = C:\ Essai & "\" si C: \Essai est le chemin d’accès au dossier dans lequel se trouve le fichier B ?

Enfin, en ce qui concerne le fichier B, en fin de macro, je souhaiterais masquer tous les onglets dont la cellule A11 ne contient aucune information puis exporter les onglets restants (non masqués) vers une impression pdf à stocker dans un dossier dont je connais le chemin (par exemple C:\Desktop\Essai) puis enregistrer le fichier b, le fermer et le renommer en rajoutant l'extenstion_Ok. Pour le fichier A, je souhaite le laisser ouvert comme codé dans ta macro.

Est-ce possible ?

Bonne fin de journée et encore merci pour le partage de tes connaissances.

Bonjour

Je me suis aperçu d’une mini-coquille...

OK

puis-je remplacer :...

En principe oui mais ... fais l'essai !

Nouvelle version :

Bye !

Bonjour,

J'ai fait l'essai en remplaçant par le chemin d'accès au fichier, ça fonctionne

Par contre, dans la dernière version que tu m'as envoyée, j'ai une fenêtre erreur qui apparait avec le message

Compile Error

Variable not Defined

On crée un fichier pdf pour chaque feuille visible For Each onglet In wb.Worksheets If onglet.Visible = True Then wb.Sheets(onglet.Name).ExportAsFixedFormat Type:=xlTypePDF, Filename:=chemin & onglet.Name & ".pdf" End If Next onglet

J'ai en surbrillance xlTypePDF

Bonne journée

Délolé mais je ne vois pas pourquoi ça marche dans un cas et pas dans l'autre...

Bye !

Désolé je me suis mal exprimé. Le test avec le chemin du fichier je l'ai fait sur l'ancienne version de ce que tu m'avais transmis...

La dernière version ne fonctionne pas et bloque comme annoncé précédemment.

Bonne soirée

Bonjour gmb, bonjour le forum,

J'ai testé le fichier avec une version Excel de 2007 et ça fonctionne.

Par contre avec une version 2003, j'ai une fenêtre erreur qui apparaît avec le message :

Compile Error

Variable not Defined

et le terme xlTypePDF. en surbrillance dans la macro... Le code utilisé est-il compatible avec Excel 2003 ?

Enfin, est-il possible que l'exportation pdf de plusieurs onglets puisse se faire dans un seul fichier ?

Bonne journée

Bonjour

Le code utilisé est-il compatible avec Excel 2003 ?

Apparemment non ...

est-il possible que l'exportation pdf de plusieurs onglets puisse se faire dans un seul fichier ?

Je ne sais pas et en tout cas, je ne sais pas faire ça.

Désolé.

Bye !

Bonjour gmb,

Merci de ton retour et de ton aide précieuse.

Je vais exécuter la macro sous excel 2007, ce qui me permettra de générer les pdf.

Avant de clore définitivement ce post, je souhaiterais une dernière adaptation.

En fin de macro est-il possible d'aller faire une copie du fichier 00-Feuilles_HS_xx, de le coller dans le dossier et de le renommer en 02-Feuilles_HS_Février et ainsi de suite à la fin de chaque mois qui sera généré.

02 correspond donc au mois associé à xx qui correspond à Février que est le nom de l'onglet qui suit celui nommé Janvier_N.

Par avance je te remercie.

Bonne fin de journée

Bonjour

En fin de macro est-il possible d'aller faire une copie du fichier 00-Feuilles_HS_x

Je ne vois pas l'intérêt de faire ça : les données de février ne seront pas les mêmes que celles de janvier, et peut-être même en sera-t-il de même des onglets.

Il serait plus intéressant de garder un fichier modèle et de s'en servir pour y mettre les données mensuelles avant de l'enregistrer sous le nom du mois en question.

Bye !

En fait le fichier est généré en début de mois pour que le personnel puisse le remplir. Chaque début de mois, après avoir validé le mois précédent, on fait un copier-coller du fichier trame et on le renomme. Le personnel peux ainsi remplir le fichier dès qu'il réalise une intervention.

Par exemple dès la fin du mois de janvier, on va lancer la macro pour incrémenter les données dans l'onglet Janvier_N depuis la feuille 01_... puis on va créer la feuille 02_..._Fevrier depuis la trame 00_..._xx

Bonne soirée

Rechercher des sujets similaires à "copier coller classeurs distincts"