Comment importer différents feuils d'un même classeur dans un autre ?

Je souhaite importer feuils (first,second et third) du classeur "Trial2" dans la feuil (Feuil1) du classeur "trial" tout en appliquant quelques codes sur chacune des feuils importer.

J'ai fait ça comme code mais ça bloque sur l'ouverture de la 3eme feuil.

Auriez vous un code plus puissant ou une correction de mon code pour éviter les bugs ?

7trial.xlsx (19.66 Ko)
6trial2.xlsx (15.59 Ko)

Sub Importation_ITO()

'declaration des variables '
Dim fichier_choisi As Variant
Dim MonClasseur As Workbook
'desactiver le presse-papier'
Application.CutCopyMode = False
Application.ScreenUpdating = False
'Recuperer le fichier excel'
fichier_choisi = Application.GetOpenFilename(filefilter:="Fichier Excel(*.Xls*),*Xls*")
'prevoir le cas du bouton annuler'
If fichier_choisi <> False Then

'affecter le fichier selectionner '
Set MonClasseur = Application.Workbooks.Open(fichier_choisi)

'copier les données du fichier séléctionné'
MonClasseur.Sheets("first").Range("A1").CurrentRegion.Copy

'coller les données dans la feuille active'
ThisWorkbook.Sheets("Feuil3").Range("A1").PasteSpecial

MonClasseur.Close


'Desactiver les messages d'alerte de Microsoft'
Application.DisplayAlerts = False
'fermer le classeur source'

'supprimer la premiere ligne des titres'
Rows(1).EntireRow.Delete

'supprimer la premiere colonne '
Columns("A").EntireColumn.Delete

'copier coller les données importer
Dim LastRow As String
Sheets("Feuil3").Range("A:AA").CurrentRegion.Copy
Sheets("Feuil1").Select
LastRow = Range("A" & Rows.Count).End(xlUp).Row + 1
Range("F" & LastRow).PasteSpecial xlPasteValues


'affecter le fichier selectionner '
Set MonClasseur = Application.Workbooks.Open(fichier_choisi)

'copier les données du fichier séléctionné'
MonClasseur.Sheets("second").Range("A1").CurrentRegion.Copy

'coller les données dans la feuille active'
ThisWorkbook.Sheets("Feuil3").Range("A1").PasteSpecial

MonClasseur.Close

'supprimer la premiere ligne des titres'
Rows(1).EntireRow.Delete

'copier coller les elements de la feuille Feuil3à la feuille GFIT
lastRow1 = Sheets("Feuil1").Range("F" & Rows.Count).End(xlUp).Row + 1
LastRow2 = Sheets("Feuil3").Range("A" & Rows.Count).End(xlUp).Row

Sheets("Feuil1").Range("F" & lastRow1 & ":G" & lastRow1 + LastRow2 - 1).Value = Sheets("Feuil3").Range("B1:C" & LastRow2).Value
Sheets("Feuil1").Range("I" & lastRow1 & ":AF" & lastRow1 + LastRow2 - 1).Value = Sheets("Feuil3").Range("D1:AA" & LastRow2).Value

' MonClasseur.Sheets(1).Range("A1").CurrentRegion.Copy
MonClasseur.Sheets("third").Range("A1").CurrentRegion.Copy

'coller les données dans la feuille active'
ThisWorkbook.Sheets("Feuil3").Range("A1").PasteSpecial
'Desactiver les messages d'alerte de Microsoft'

MonClasseur.Close
End If

'supprimer la premiere ligne des titres'
Rows(1).EntireRow.Delete


'copier coller les elements de la feuille Feuil3 à la feuille Feuil1

lastRow1 = Sheets("Feuil1").Range("F" & Rows.Count).End(xlUp).Row + 1
LastRow2 = Sheets("Feuil3").Range("A" & Rows.Count).End(xlUp).Row

Sheets("Feuil1").Range("F" & lastRow1 & ":G" & lastRow1 + LastRow2 - 1).Value = Sheets("Feuil3").Range("B1:C" & LastRow2).Value
Sheets("Feuil1").Range("I" & lastRow1 & ":AF" & lastRow1 + LastRow2 - 1).Value = Sheets("Feuil3").Range("D1:AA" & LastRow2).Value

Application.DisplayAlerts = False
'fermer le classeur source'

'desactiver le presse-papier'
Application.CutCopyMode = True
Application.ScreenUpdating = True

End Sub

Salut,

Dans le classeur ci-joint, j'ai ajouté une ligne de code afin que ton fichier-source soit ouvert au moment où tu veux y copier des données. Tu peux rechercher l'endroit où j'ai placé ce bout de code avec les mots-clé "Rajout Yvouille''.

Mais ton code est assez abracadabrant ! Tu ouvres et refermes plusieurs fois ce fichier inutilement et il doit y avoir des manières plus simples d'effectuer les copier-coller. Mais j'ai un peu peur de me lancer. Donc si la macro te convient avec cette correction, tant mieux.

7trial.xlsm (33.46 Ko)

Bonjour, Merci beaucoup, j'ai pu corriger mon code.

Sub import()

'declaration des variables '
Dim fichier_choisi As Variant
Dim MonClasseur As Workbook
'desactiver le presse-papier'
Application.CutCopyMode = False
Application.ScreenUpdating = False
'Recuperer le fichier excel'
fichier_choisi = Application.GetOpenFilename(filefilter:="Fichier Excel(*.Xls*),*Xls*")
'prevoir le cas du bouton annuler'
If fichier_choisi <> False Then
'affecter le fichier selectionner '
Set MonClasseur = Application.Workbooks.Open(fichier_choisi)
'copier les données du fichier séléctionné'


MonClasseur.Sheets("first").Range("A1").CurrentRegion.Copy
'coller les données dans la feuille active'
ThisWorkbook.Sheets("Feuil3").Range("A1").PasteSpecial
'Desactiver les messages d'alerte de Microsoft'
Application.DisplayAlerts = False
'supprimer la premiere ligne des titres'
Rows(1).EntireRow.Delete
'supprimer la premiere colonne '
Columns("A").EntireColumn.Delete
'copier coller les données importer de Feuil3 à Feuil1
Dim LastRow As String
Sheets("Feuil3").Range("A:AA").CurrentRegion.Copy
Sheets("Feuil1").Select
LastRow = Range("A" & Rows.Count).End(xlUp).Row + 1
Range("F" & LastRow).PasteSpecial xlPasteValues



MonClasseur.Sheets("second").Range("A1").CurrentRegion.Copy
'coller les données dans la feuille active'
ThisWorkbook.Sheets("Feuil3").Range("A1").PasteSpecial
'Desactiver les messages d'alerte de Microsoft'
Application.DisplayAlerts = False
'supprimer la premiere ligne des titres'
Rows(1).EntireRow.Delete
'supprimer la premiere colonne '
Columns("A").EntireColumn.Delete
'copier coller les elements de la feuille Feuil3 à la feuille Feuil1
Dim LastRow As String
Dim LastRow1 As String
Dim LastRow2 As String
LastRow1 = Sheets("Feuil3").Range("A" & Rows.Count).End(xlUp).Row
Sheets("Feuil3").Range("A1:B1" & LastRow1).Copy
LastRow = Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row + 1
Sheets("Feuil1").Range("F" & LastRow).PasteSpecial xlPasteValues
Sheets("Feuil3").Range("C1:Z1" & LastRow1).Copy
Sheets("Feuil1").Range("I" & LastRow).PasteSpecial xlPasteValues



MonClasseur.Sheets("third").Range("A14").CurrentRegion.Copy
'coller les données dans la feuille active'
ThisWorkbook.Sheets("Feuil3").Range("A1").PasteSpecial
'supprimer la premiere ligne des titres'
Rows(1).EntireRow.Delete
'supprimer la premiere colonne '
Columns("A").EntireColumn.Delete
'copier coller les elements de la feuille Feuil3 à la feuille Feuil1
LastRow1 = Sheets("Feuil3").Range("A" & Rows.Count).End(xlUp).Row
Sheets("Feuil3").Range("A1:B1" & LastRow1).Copy
LastRow = Sheets("Feuil1").Range("A" & Rows.Count).End(xlUp).Row + 1
Sheets("Feuil1").Range("F" & LastRow).PasteSpecial xlPasteValues
Sheets("Feuil3").Range("C1:Z1" & LastRow1).Copy
Sheets("Feuil1").Range("I" & LastRow).PasteSpecial xlPasteValues



'fermer le classeur source'
MonClasseur.Close
End If

'Desactiver les messages d'alerte de Microsoft'
Application.DisplayAlerts = False
'desactiver le presse-papier'
Application.CutCopyMode = True
Application.ScreenUpdating = True


End Sub

Rechercher des sujets similaires à "comment importer differents feuils meme classeur"