Microsoft 365 Importer une feuille excel vers un mon classeur

lolo_76

XLDnaute Nouveau
Bonjour à tous,

Mon sujet est le suivant, j'aimerai récupérer un onglet nommé "Page1" d'un fichier excel et de le coller sur mon classeur de l'onglet nommé "Données"

J'ai créé un code mais il plante, quelqu'un à t'il une idée ?

VB:
Sub Import()

Dim classeurSource As Workbook, classeurDestination As Workbook

  Application.ScreenUpdating = False
  Application.EnableEvents = False
  Application.Calculation = xlManual

'Efface la feuille entière
Sheets("Données").Cells.Clear


'ouvrir le classeur source
Set classeurSource = Application.GetOpenFilename
'définir le classeur destination
Set classeurDestination = ThisWorkbook

'copier les données de la "Feuil1" du classeur source vers la "Feuil1" du classeur destination
classeurSource.Sheets("Page1").Cells.Copy classeurDestination.Sheets("Données").Range("A1")

'fermer le classeur source
classeurSource.Close False

  Application.ScreenUpdating = True
  Application.EnableEvents = True
  Application.Calculation = xlAutomatic

  MsgBox ("Import fini")


End Sub


Merci à vous tous
 
Solution
Re,

et si il n'y a pas besoin des options de configuration et de retour de chaîne string de Getopenfilename, on peut directement ouvrir le fichier par la boite standard.

Cordialement, @+
VB:
Sub Import()

Dim classeurSource As Workbook, classeurDestination As Workbook

  Application.ScreenUpdating = False
  Application.EnableEvents = False
  Application.Calculation = xlManual

'Efface la feuille entière
Sheets("Données").Cells.Clear


'ouvrir le classeur source
Application.Dialogs(xlDialogOpen).Show
Set classeurSource = ActiveWorkbook
'définir le classeur destination
Set classeurDestination = ThisWorkbook

'copier les données de la "Feuil1" du classeur source vers la "Feuil1" du classeur destination...

natorp

XLDnaute Accro
Bonjour Lolo et Bruno

J'ai testé et j'ai également une erreur :
1630593365378.png

Merci, cordialement, Gérard
 

ChTi160

XLDnaute Barbatruc
Re
ce que j'ai mis et semble fonctionner
VB:
Sub Import()

Dim ClasseurSource, classeurDestination
  Application.ScreenUpdating = False
  Application.EnableEvents = False
  Application.Calculation = xlManual
'Efface la feuille entière
Worksheets("Données").Range("A:BZ").Clear
'Supprime les filtres et affiche les colonnes masquées
    Sheets("Données").Activate
    Rows("1:1").Select
   ' Selection.AutoFilter
    Selection.EntireColumn.Hidden = False
'ouvrir le classeur source (en lecture seule)
' ClasseurSource = Application.GetOpenFilename()
 ClasseurSource = Application _
 .GetOpenFilename("Text Files (*.xlsm), *.xlsm")
If ClasseurSource <> False Then
 MsgBox "Open " & ClasseurSource
End If
'définir le classeur destination
Set classeurDestination = ThisWorkbook
'copier les données de la "Feuil1" du classeur source vers la "Feuil1" du classeur destination
ClasseurSource.Sheets("Page1").Cells.Copy classeurDestination.Sheets("Données").Range("A1")
'fermer le classeur source
ClasseurSource.Close False
    Sheets("Accueil").Activate
  Application.ScreenUpdating = True
  Application.EnableEvents = True
  Application.Calculation = xlAutomatic
End Sub
au moins pour ce qui est de l'erreur
Bonne Journée
jean marie
 

BrunoM45

XLDnaute Barbatruc
Bonjour le fil,

Pour ceux qui ont testé et chez qui ça a beugué, vous avez quelle version d'office 🤔

Je suis vraiment navré pour vous, mais pour moi sous O365, ça ne pose absolument aucun problème
VB:
Set classeurSource = Application.GetOpenFilename
M'ouvre bien une fenêtre pour choisir mon fichier

En revanche, vous avez l'erreur si vous cliquez sur "Annuler", logique... puisque l'objet Workbook n'a pas été ouvert :rolleyes:

@+
 
Bonjour lolo_76, Chti160, BrunoM45, le forum

pour moi, Classeursource est déclaré en workbook et getopenfilename renvoie un string
un set classeursource sur getopenfilename tente d'affecter une chaine de caractère à un objet workbook et ça le fait pas !
il faudrait normalement un truc genre set classeursource=application.open(application.getopenfilename) qui devrait se traduire comme cela.

Bien cordialement, @+
VB:
Sub Import()

Dim classeurSource As Workbook, classeurDestination As Workbook

  Application.ScreenUpdating = False
  Application.EnableEvents = False
  Application.Calculation = xlManual

'Efface la feuille entière
Sheets("Données").Cells.Clear


'ouvrir le classeur source
Workbooks.Open Filename:=Application.GetOpenFilename
Set classeurSource = ActiveWorkbook
'définir le classeur destination
Set classeurDestination = ThisWorkbook

'copier les données de la "Feuil1" du classeur source vers la "Feuil1" du classeur destination
classeurSource.Sheets("Page1").Cells.Copy classeurDestination.Sheets("Données").Range("A1")

'fermer le classeur source
classeurSource.Close False

  Application.ScreenUpdating = True
  Application.EnableEvents = True
  Application.Calculation = xlAutomatic

  MsgBox ("Import fini")


End Sub
 
Re,

et si il n'y a pas besoin des options de configuration et de retour de chaîne string de Getopenfilename, on peut directement ouvrir le fichier par la boite standard.

Cordialement, @+
VB:
Sub Import()

Dim classeurSource As Workbook, classeurDestination As Workbook

  Application.ScreenUpdating = False
  Application.EnableEvents = False
  Application.Calculation = xlManual

'Efface la feuille entière
Sheets("Données").Cells.Clear


'ouvrir le classeur source
Application.Dialogs(xlDialogOpen).Show
Set classeurSource = ActiveWorkbook
'définir le classeur destination
Set classeurDestination = ThisWorkbook

'copier les données de la "Feuil1" du classeur source vers la "Feuil1" du classeur destination
classeurSource.Sheets("Page1").Cells.Copy classeurDestination.Sheets("Données").Range("A1")

'fermer le classeur source
classeurSource.Close False

  Application.ScreenUpdating = True
  Application.EnableEvents = True
  Application.Calculation = xlAutomatic

  MsgBox ("Import fini")


End Sub
 

lolo_76

XLDnaute Nouveau
Un grand merci à vous les pros d'excel, ça fonctionne parfaitement.

Par contre j'ai une autre question, car j'incorpore un fichier très lourd (+ de 12 MO), est-il possible d’éviter de copier / coller bêtement la feuille pour ensuite la travailler pour ne prendre que les informations voulu ?
 

Discussions similaires