VBA copier onglet dans un autre classeur via un bouton
Résolu
vico31
-
Klaradoc -
Klaradoc -
Bonjour tous le monde,
Je suis sur excel 2003, en stage et débutant en VBA et je souhaite réaliser quelque chose de simple, de prime abord......
Je souhaite grâce à mon bouton "Extraction de données", extraire l'onglet d'un classeur "wbSource" pour le copier dans un autre classeur "wbRecap", je souhaite copier l'onglet en entier car il ne contient que des données, et les classeurs dont je souhaite réaliser l'importation sont fermés.
Voici le code que j'utilise, je l'ai pris d'un ami que j'ai ensuite recyclé pour mon compte (Bidouille).
Private Sub CommandButton1_Click()
Dim wbRecap As Workbook 'fichier recap
Dim wsRecap As Worksheet 'feuille où on écrit les données
Dim wbSource As Workbook 'fichier à ouvrir
Dim wsSource As Worksheet 'feuille où on cherche les données
Dim DernLign As Integer 'ligne où on écrit les données
Dim vFichiers As Variant 'noms des fichiers
Dim LaFeuille As Worksheet
Dim i As Integer, ListeAcopier
Dim k As Integer
Dim rgRecap As Range 'plage où on copie les données
Set wbRecap = ThisWorkbook 'Fichier récapitulatif
' --- Ouvrir boite de dialogue pour sélectionner les fichiers à ouvrir
vFichiers = Selectionner_Fichiers("Sélectionner les fichiers à compiler") 'Appel de Fonction pour ouvrir fichiers
' --- Vérifier qu'au moins un fichier à été sélectionné
If Not IsArray(vFichiers) Then
Debug.Print "Aucun fichier sélectionné."
MsgBox "Erreur! Aucun/Mauvais fichier sélectionné."
Exit Sub
End If
On Error Resume Next
Application.ScreenUpdating = False
' --- Boucle à travers les fichiers
For k = 1 To UBound(vFichiers)
Application.StatusBar = ">> Lecture du fichier #" & k & "/" & UBound(vFichiers)
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
' C'est ici qu'on écrit les instructions
Set wbSource = Workbooks.Open(vFichiers(k)) 'on ouvre le fichier
Set wsSource = wbSource.Sheets(1) 'On copie les données de la feuille 4
Set wsRecap = wbRecap.Sheets(2).Add
Set wsSource.Copy After =Workbooks("Absentéisme automatisation.xls").Sheets(1)
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Next k
Application.ScreenUpdating = True
Application.StatusBar = False
End Sub
Function Selectionner_Fichiers(sTitre As String) As Variant
Dim sFiltre As String, bMultiSelect As Boolean
sFiltre = "Fichiers XYZ (.xls)(.xlsm), *.xls*"
bMultiSelect = True 'Permet de choisir plusieurs fichiers à la fois
Selectionner_Fichiers = Application.GetOpenFilename(Filefilter:=sFiltre, Title:=sTitre, MultiSelect:=bMultiSelect)
End Function
En sachant que mon problème ce situe à ce niveau:
C'est ici qu'on écrit les instructions
Set wbSource = Workbooks.Open(vFichiers(k)) 'on ouvre le fichier
Set wsSource = wbSource.Sheets(1) 'On copie les données de la feuille 4
Set wsRecap = wbRecap.Sheets(2).Add
Set wsSource.Copy After =Workbooks("Absentéisme automatisation.xls").Sheets(1)
Effectivement le fichier que je souhaite importer s'ouvre mais ne se copie pas dans le classeur "wbRecap".
De, plus un message d'erreur apparait au niveau du AFter
Merci pour l'aide que vous pourrez m'apporter j'ai chercher tout et n'importe quoi sur internet mais je ne trouve pas la solution .....
Je suis sur excel 2003, en stage et débutant en VBA et je souhaite réaliser quelque chose de simple, de prime abord......
Je souhaite grâce à mon bouton "Extraction de données", extraire l'onglet d'un classeur "wbSource" pour le copier dans un autre classeur "wbRecap", je souhaite copier l'onglet en entier car il ne contient que des données, et les classeurs dont je souhaite réaliser l'importation sont fermés.
Voici le code que j'utilise, je l'ai pris d'un ami que j'ai ensuite recyclé pour mon compte (Bidouille).
Private Sub CommandButton1_Click()
Dim wbRecap As Workbook 'fichier recap
Dim wsRecap As Worksheet 'feuille où on écrit les données
Dim wbSource As Workbook 'fichier à ouvrir
Dim wsSource As Worksheet 'feuille où on cherche les données
Dim DernLign As Integer 'ligne où on écrit les données
Dim vFichiers As Variant 'noms des fichiers
Dim LaFeuille As Worksheet
Dim i As Integer, ListeAcopier
Dim k As Integer
Dim rgRecap As Range 'plage où on copie les données
Set wbRecap = ThisWorkbook 'Fichier récapitulatif
' --- Ouvrir boite de dialogue pour sélectionner les fichiers à ouvrir
vFichiers = Selectionner_Fichiers("Sélectionner les fichiers à compiler") 'Appel de Fonction pour ouvrir fichiers
' --- Vérifier qu'au moins un fichier à été sélectionné
If Not IsArray(vFichiers) Then
Debug.Print "Aucun fichier sélectionné."
MsgBox "Erreur! Aucun/Mauvais fichier sélectionné."
Exit Sub
End If
On Error Resume Next
Application.ScreenUpdating = False
' --- Boucle à travers les fichiers
For k = 1 To UBound(vFichiers)
Application.StatusBar = ">> Lecture du fichier #" & k & "/" & UBound(vFichiers)
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
' C'est ici qu'on écrit les instructions
Set wbSource = Workbooks.Open(vFichiers(k)) 'on ouvre le fichier
Set wsSource = wbSource.Sheets(1) 'On copie les données de la feuille 4
Set wsRecap = wbRecap.Sheets(2).Add
Set wsSource.Copy After =Workbooks("Absentéisme automatisation.xls").Sheets(1)
' ~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~~
Next k
Application.ScreenUpdating = True
Application.StatusBar = False
End Sub
Function Selectionner_Fichiers(sTitre As String) As Variant
Dim sFiltre As String, bMultiSelect As Boolean
sFiltre = "Fichiers XYZ (.xls)(.xlsm), *.xls*"
bMultiSelect = True 'Permet de choisir plusieurs fichiers à la fois
Selectionner_Fichiers = Application.GetOpenFilename(Filefilter:=sFiltre, Title:=sTitre, MultiSelect:=bMultiSelect)
End Function
En sachant que mon problème ce situe à ce niveau:
C'est ici qu'on écrit les instructions
Set wbSource = Workbooks.Open(vFichiers(k)) 'on ouvre le fichier
Set wsSource = wbSource.Sheets(1) 'On copie les données de la feuille 4
Set wsRecap = wbRecap.Sheets(2).Add
Set wsSource.Copy After =Workbooks("Absentéisme automatisation.xls").Sheets(1)
Effectivement le fichier que je souhaite importer s'ouvre mais ne se copie pas dans le classeur "wbRecap".
De, plus un message d'erreur apparait au niveau du AFter
Merci pour l'aide que vous pourrez m'apporter j'ai chercher tout et n'importe quoi sur internet mais je ne trouve pas la solution .....
A voir également:
- VBA copier onglet dans un autre classeur via un bouton
- Rouvrir un onglet fermé - Guide
- Copier un disque dur sur un autre - Guide
- Retrouver un copier-coller android - Guide
- Comment copier une vidéo youtube - Guide
- Super copier - Télécharger - Gestion de fichiers
2 réponses
Bonjour,
On va essayer...
Remplace tes 4 lignes :
par :
On va essayer...
Remplace tes 4 lignes :
Set wbSource = Workbooks.Open(vFichiers(k)) 'on ouvre le fichier Set wsSource = wbSource.Sheets(1) 'On copie les données de la feuille 4 Set wsRecap = wbRecap.Sheets(2).Add Set wsSource.Copy After =Workbooks("Absentéisme automatisation.xls").Sheets(1)
par :
Set wbSource = Workbooks.Open(vFichiers(k)) 'on ouvre le fichier Set wsSource = wbSource.Sheets(1) 'On copie la feuille wsSource.Copy After:=wbRecap.Sheets(1)
Klaradoc
C'est exactement ce que je veux faire. Par contre je ne comprends pas la différence entre ces deux lignes...