Copier/coller données dans autre classeur au choix avec VBA

Bonjour,

Je cherche à copier/coller des données de mon classeur ci-dessous dans un autre classeur que l'utilisateur viendra choisir en utilisant VBA (projet initié)

Je bloque au moment où j'aimerais coller les données dans la classeur sélectionné.

Pourriez-vous me guider svp ?

Je poste ici un projet exemple.

Merci

JB

9export.xlsm (17.67 Ko)

Bonsoir,

une proposition :

Sub LRD()
    CheminFichier = Application.GetOpenFilename( _
        FileFilter:="Fichiers Excel (*.xlsx*), *.xlsx*", _
        Title:="Choisissez un fichier Excel à ouvrir", _
        MultiSelect:=False)
    NomClasseurSource = ActiveWorkbook.Name
    Workbooks.Open CheminFichier, 0, ReadOnly:=False
    NomClasseurDestination = ActiveWorkbook.Name
    Workbooks(NomClasseurSource).Sheets("Test").Copy after:=Workbooks(NomClasseurDestination).Sheets(ActiveWorkbook.Worksheets.Count)
End Sub

@ bientôt

LouReeD

Bonjour LouReeD,

Merci pour votre contribution, je l'ai adapté à mon projet.

Par contre je bloque sur la macro suivante, présente dans le fichier Classeur_Source.

Sub Exporter_feuille()
Dim Nom As String
Application.ScreenUpdating = False
Application.DisplayAlerts = False

cheminfichier = Application.GetOpenFilename( _
    FileFilter:="Fichiers Excel (*.xlsm*), *.xlsm*", _
    Title:="Choisissez un fichier Excel à ouvrir", _
    MultiSelect:=False)
    NomClasseurSource = ActiveWorkbook.Name
    If cheminfichier = "Faux" Then Exit Sub
    Workbooks.Open cheminfichier, 0, ReadOnly:=False

    NomClasseurDestination = ActiveWorkbook.Name

derniereLigne_source = Workbooks(NomClasseurSource).Sheets("JB").Range("C" & Rows.Count).End(xlUp).Row
derniereLigne_destination = Workbooks(NomClasseurDestination).Sheets("JB").Range("C" & Rows.Count).End(xlUp).Row

Workbooks(NomClasseurDestination).Sheets("JB").Select
Workbooks(NomClasseurDestination).Sheets("JB").Unprotect
Rows("8:" & derniereLigne_destination).Delete
Workbooks(NomClasseurSource).Sheets("JB").Select
Rows("8:" & derniereLigne_source).Copy
Workbooks(NomClasseurDestination).Sheets("JB").Select
Rows("8:8").Select
Selection.Insert Shift:=xlDown
Workbooks(NomClasseurDestination).Sheets("JB").Protect
    MsgBox "Export réalisé avec succès!"
Application.ScreenUpdating = True
Application.DisplayAlerts = True

End Sub

Le but de ma macro est depuis le classeur Source, ouvrir une boite de dialogue pour choisir le classeur de destination ici c'est "Classeur_Destination".

Ensuite, sur la feuille JB du Classeur_Destination, je supprimer les lignes 8 à la dernière ligne non vide

Je reviens sur la feuille JB du Classeur_Source, je copie les lignes 8 à la dernière ligne puis je viens les coller à partir de la ligne 8 du Classeur_Destination

La macro bloque lorsqu'il s'agit de travailler sur les 2 classeurs par intermittence. Je pense que le problème vient du fait qu'à 2 reprise j'écrive "NomClasseurDestination = ActiveWorkbook.Name" et "NomClasseurSource = ActiveWorkbook.Name". Comment bien différencier ces 2 classeurs ? Est-il possible d'optimiser la macro ?

Merci beaucoup pour votre aide :)

Je poste ici un exemple de fichiers:

Oups, je n'avais pas déposé les 2 bons fichiers, j'ai corrigé dans mon post :)

Bonsoir,

Est-il envisageable de travailler sur 2 fichiers EXCEL en même temps ?

JB

Bonjour à tous,

Auriez-vous une proposition de code pour ma problématique ci-dessus s'il vous plait ?

Bonne journée

JB

Bonjour,

Désolé je n'ai pas le temps de regarder... Une chose est sur c'est qu'il n'y a pas besoin de Select et d'Activate pour faire des copies, enfin je pense.

Il suffit de désigner le classeur source et celui de destination dans les lignes de commande :

Classeur_S.Sheets("JB").Range(maPlage).Copy Destination:= Classeur_Destination.Sheets("JB").Range(première cellule où copier)

Voilà pour le principe et du coup peut importe le classeur actif, à voir si j'ai raison...

@ bientôt

LouReeD

Bonsoir LouReeD,

Merci d'avoir pris le temps de répondre. Je comprends bien votre réponse. Cependant moi je souhaite travailler sur les 2 classeurs en même temps, est-ce possible par VBA ou non ?

Bonne soirée :)

JB

Bonsoir,

si les deux classeurs sont ouverts, il est possible de travailler sur les deux mais je crois (je dis bien je crois) que seul les macros du classeur actif seront lancées par les éventuels boutons ou autre, ou bien alors s'il y a deux boutons ayant la même fonction sur chacun des classeurs, vous pouvez affecter une macro existante sur un seul des classeurs et cela devrait fonctionner, mais il faut alors de la rigueur d'écriture pour ne pas se mélanger les pinceaux.
comme vous pouvait (ou avez pu) le voir, mes applications sont "autonomes" donc ce n'est pas un sujet que je maitrise !

Le plus simple est d'ouvrir le débat avec d'autre intervenant, en clôturant celui-ci et en relançant une nouvelle question à laquelle je ne répondrais pas mais que je suivrais pour mon apprentissage !

@ bientôt

LouReeD

Bonsoir LouReeD,

Merci beaucoup pour votre réponse, je comprends tout à fait, c'est très gentil à vous d'avoir pris le temps d'étudier ma problématique.

Je vais suivre vos conseils, merci à vous LouReeD :)

Bonne soirée

JB

Bonjour LouReeD,

Je viens de m'apercevoir que je pourrais, pour faciliter les choses, copier/coller ma feuille dans mon nouveau classeur. Par contre, ma feuille contient des formats de cellules, graphiques et formules qui se retrouvent liés à mon ancien classeur. Comment procéder pour modifier ces liaisons au nouveau classeur ?

Je m'explique, si mon ancien classeur s'appelle TEST1 et le nouveau classeur ouvert par la macro ci-dessous s'appelle "TEST2" je souhaiterais que les liaisons se fassent avec le classeur TEST2

Sub LRD()
    CheminFichier = Application.GetOpenFilename( _
        FileFilter:="Fichiers Excel (*.xlsx*), *.xlsx*", _
        Title:="Choisissez un fichier Excel à ouvrir", _
        MultiSelect:=False)
    NomClasseurSource = ActiveWorkbook.Name
    Workbooks.Open CheminFichier, 0, ReadOnly:=False
    NomClasseurDestination = ActiveWorkbook.Name
    Workbooks(NomClasseurSource).Sheets("Test").Copy after:=Workbooks(NomClasseurDestination).Sheets(ActiveWorkbook.Worksheets.Count)
End Sub

Pour info, mes 2 classeurs sont identiques (juste le nom du classeur qui change)

Merci beaucoup pour votre aide

JB

En complément,

Puis-je m'inspirer de ceci :

https://forum.excel-pratique.com/s/goto/931084

Merci beaucoup !

JB

Bonjour à toutes et à tous,

Auriez-vous une piste pour supprimer des liaisons EXCEL avec l'ancien classeur et les affecter au classeur en cours ?

Bonne journée

JB

Bonjour,

un ancien sujet avec plusieurs réponses et une intervention d'un "répondeur" fait souvent que le sujet ne passionne pas...
Comme dit plus haut :

Le plus simple est d'ouvrir le débat avec d'autre intervenant, en clôturant celui-ci et en relançant une nouvelle question à laquelle je ne répondrais pas mais que je suivrais pour mon apprentissage !

Alors bonne chance pour cette nouvelle question sur un nouveau fil !

Mettez celui-ci comme résolu afin de ne pas tromper l'ennemi !

@ bientôt

LouReeD

Rechercher des sujets similaires à "copier coller donnees classeur choix vba"