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