Macro Copie données de feuilles Excel dupliquées

Bonjour à tous,

Je dispose d'une macro qui me permet de copier les données d'un fichier Excel (A) vers un tableau du fichier Excel (B).

Je traite des affaires concernant des bâtiments allant du R+1 au R+3.

Dans mon fichier Excel (A), j'ai une feuille nommée "RDC" que je duplique en fonction du nombre de niveau que possède le bâtiment pour ensuite renommer ces feuilles (R+1, R+2, R+3).

L'emplacement des données du fichier Excel (A) que je veux récupérer ne change pas, uniquement les valeurs de celles-ci.

Dans mon fichier Excel (B) j'ai ainsi créé 4 tableaux, un pour chaque niveau du bâtiment y compris le RDC.

Ce que je veux, c'est créer une macro qui lorsqu'on la lance :

  • Me demande de choisir le fichier Excel (A) à l'aide d'une fenêtre
  • Me demande à l'aide d'une boite de dialogue de choisir la feuille à copier (RDC, R+1 ....)
  • Copie les données du fichiers Excel (A) vers le tableau du fichier Excel (B)

L'idée que j'avais en tête était de mettre 1 bouton lançant la macro à coté de chaque tableau car l'emplacement des données du fichier (A) ne change pas (uniquement le nom de la feuille) tandis que l'emplacement où doit être copiées les données dans le fichier Excel (B) change

Ainsi lorsque par exemple mon bâtiment ne comportera qu'un niveau d'étage, j'aurai juste à cacher les tableaux et boutons du R+2 et R+3 (en utilisant la fonction "Grouper" d'Excel) et à imprimer le fichier une fois rempli.

Sub Copier_GOST()

Dim Fichier As String
Dim nom_onglet_source As String, nom_onglet_dest As String

'Acceleration du traitement des données
Application.ScreenUpdating = False

'Ouverture fenêtre de selection du fichier d'entrée
Fichier = Application.GetOpenFilename

Workbooks.Open Filename:=Fichier

'Suppression du chemin
Fichier = Dir(Fichier)

'Copie des données générales de l'onglet "Fond" vers l'onglet "DS"

nom_onglet_source = "Fond"
nom_onglet_dest = "DS"

    'Copie données fondations

        With ThisWorkbook.Sheets(nom_onglet_dest)

            .Range("Taux_travail_sol").Value = Workbooks(Fichier).Sheets(nom_onglet_source).Cells(665, 13).Value
            .Range("Type_fondations").Value = Workbooks(Fichier).Sheets(nom_onglet_source).Cells(665, 11).Value
            .Range("Type_plancher_bas").Value = Workbooks(Fichier).Sheets(nom_onglet_source).Cells(665, 10).Value

        End With

'Copie des données générales de l'onglet "Infra" vers l'onglet "DS"

nom_onglet_source = "Infra"
nom_onglet_dest = "DS"

    'Copie données temps unitaires

         With ThisWorkbook.Sheets(nom_onglet_dest)

            .Range("TU_coffrage_voile_infra").Value = Workbooks(Fichier).Sheets(nom_onglet_source).Range("TU_cof_voile").Value
            .Range("TU_coffrage_doka_infra").Value = Workbooks(Fichier).Sheets(nom_onglet_source).Range("TU_cof_doka").Value
            .Range("TU_finitions_infra").Value = Workbooks(Fichier).Sheets(nom_onglet_source).Range("TU_finitions").Value

         End With

    'Copie données hauteurs de voile

        With ThisWorkbook.Sheets(nom_onglet_dest)

            .Range("Hauteur_voile_min_infra").Value = Workbooks(Fichier).Sheets(nom_onglet_source).Cells(665, 13).Value
            .Range("Hauteur_voile_max_infra").Value = Workbooks(Fichier).Sheets(nom_onglet_source).Cells(665, 11).Value
            .Range("Hauteur_voile_ref_infra").Value = Workbooks(Fichier).Sheets(nom_onglet_source).Cells(665, 10).Value

         End With

'Fermeture du classeur source
Workbooks(Fichier).Close False

'Confirmation de l'exportation
MsgBox "Chargement des données réussi"

End Sub

Pour le moment je ne sais pas vraiment comment modifier ma macro. Pouvez-vous me guider dans ma démarche?

Je vous remercie d'avance

Bonjour,

Pour faire suite à mon post, j'ai pensé à mettre en place un userform qui permettrait de définir la variable

"nom_onglet_source" de ma macro.

Avec le code suivant, j'arrive à obtenir un userform qui liste toutes les feuilles contenues dans le classeur excel

Private Sub cbFeuille_Change()

End Sub

Private Sub CommandButton1_Click()
ActiveWorkbook.Worksheets(cbFeuille.Value).Activate
End Sub

Private Sub userform_initialize()
For i = 1 To ActiveWorkbook.Worksheets.Count
cbFeuille.AddItem ActiveWorkbook.Worksheets(i).Name
Next i
End Sub

Ma nouvelle question est comment faire pour lier le choix effectué dans l'userform à ma variable "nom_onglet_source" ?

Mon but final est d'avoir une macro qui me demande de choisir le fichier source, puis de choisir la feuille voulue du fichier source pour enfin copier les données désirées.

Merci d'avance !

Rechercher des sujets similaires à "macro copie donnees feuilles dupliquees"