Copier/coller données classeur B à Classeur A

FlorianQ

XLDnaute Nouveau
Bonjour à tous,
je travaille en ce moment sur une macro et je fais face à quelques difficultés. Le but de ma macro est d'automatiser un ensemble de tâche qui vise à donner des résultats sous forme de tableaux croisés dynamiques à des non-initiés d'Excel, je dois donc tenter de faire au plus simple. Pour ce faire, j'utilise des macro. Je pars d'un classeur qu'on va nommé A.xlsx (nom fixe) et j'importe une base de données au choix, avec ce code
Code:
Sub CommandButton1_Click() ' RECHERCHE DU CLASSEUR SOURCE

Dim Classeur_choisi As Long
Static Classeur_choisi_bis As String

Select Case UserForm1.CommandButton1.Caption

    Case "Copier la requête"
    
        With Application.FileDialog(msoFileDialogOpen)
            .AllowMultiSelect = False
            .Show
                   For Classeur_choisi = 1 To .SelectedItems.Count
                   Workbooks.Open (.SelectedItems(Classeur_choisi))
                   Next Classeur_choisi
        End With
    Classeur_choisi_bis = ActiveWorkbook.Name
        
    ActiveWorkbook.Saved = True ' Pour éviter le message de re-calcul des formules d'une version antérieure.
    
    UserForm1.CommandButton1.Caption = "Copier cette Feuille"
    
    ' ICI ON PEUT CHOISIR LA FEUILLE A COPIER
    
    Case "Copier cette Feuille"
    
    ActiveWorkbook.ActiveSheet.Copy after:=ThisWorkbook.Worksheets(ThisWorkbook.Worksheets.Count)
    Windows(Classeur_choisi_bis).Activate
    Application.DisplayAlerts = False
    ActiveWorkbook.Close
    MsgBox ("Votre feuille est copiée dans le classeur !")
    
    Unload UserForm1
    Sheets("Macro et mode d'emploi").Select
    Application.DisplayAlerts = True
    ActiveWorkbook.Save

End Select
End Sub
Ce code n'est peut-être pas parfait (je débute en VBA et je suis prêt à recevoir des astuces si vous en avez) mais il est fonctionnel.
Maintenant cela fonctionne mais je dois aussi importer une base qui n'est pas standardisée et c'est là que se présente mon problème, j'utilise une syntaxe quasiment similaire
Code:
Private Sub CommandButton2_Click()

Dim Classeur_choisi As Long
Static Classeur_choisi_bis As String

Select Case UserForm1.CommandButton2.Caption

    Case "Copier la requête pour auto"
    
        With Application.FileDialog(msoFileDialogOpen)
            .AllowMultiSelect = False
            .Show
                   For Classeur_choisi = 1 To .SelectedItems.Count
                   Workbooks.Open (.SelectedItems(Classeur_choisi))
                   Next Classeur_choisi
        End With
    Classeur_choisi_bis = ActiveWorkbook.Name
    n = Workbooks(Classeur_choisi_bis).Sheets("DP_NACRE_Synthèse").Range("A65536").End(xlUp).Row
    
    ActiveWorkbook.Saved = True ' Pour éviter le message de re-calcul des formules d'une version antérieure.
    
    UserForm1.CommandButton1.Caption = "Copier cette Feuille"
    
    ' ICI L'ON PEUT CHOISIR LA FEUILLE A COPIER
    
    Case "Copier cette Feuille"
    
    ActiveWorkbook.ActiveSheet.Range("A24" & ":AF" & n).Copy after:=ThisWorkbook.Sheets("Autos").Range("A6")
    Windows(Classeur_choisi_bis).Activate
    Application.DisplayAlerts = False
    ActiveWorkbook.Close
    'MsgBox ("Votre feuille est copiée dans le classeur !")
    
    Unload UserForm1
    Sheets("Macro et mode d'emploi").Select
    Application.DisplayAlerts = True
    ActiveWorkbook.Save

End Select
End Sub

Cependant je fais peut-être une erreur bête mais le bouton ne fonctionne pas du tout, je n'ai pas d'erreur mais je n'ai même pas l'explorateur de fichier qui s'ouvre.

En clair je cherche à faire, dans l'ordre :
Ouverture de mon classeur A (qui dispose des macro), import d'une feuille d'un autre classeur dans une nouvelle feuille avec le premier code, puis importation dans une feuille (dans A) déjà créée cette fois, d'une partie d'une feuille d'un classeur B (qui lui a un nom variable).
C'est un peu flou mais c'est de cette manière que j'en ferai une première approche, si vous avez besoin de plus de précisions, n'hésitez pas.

Merci d'avance ! :cool:
 

FlorianQ

XLDnaute Nouveau
Re : Copier/coller données classeur B à Classeur A

Bonjour Robert et merci pour votre réponse,

En direct de mon poste de travail, il semblerait que l'importation fonctionne, cependant n'avez-vous rien remarqué d'anormal ?
J'ai toujours la même erreur au niveau de "CS.Save" à la fin. J'ai dû l'enlever pour que le code aille jusqu'à la fin. Cela ne reste qu'un petit détail, merci beaucoup pour tout !
 

Robert

XLDnaute Barbatruc
Repose en paix
Re : Copier/coller données classeur B à Classeur A

Bonjour Florian, bonjour le forum,

Oui, même erreur, même punition... Mais cette fois c'est de ma faute. Si on ferme l'UserForm, CS perd sa valeur !...
Il faut donc inverser l'ordre des lignes :

Code:
CS.Save
Unload Me
 

Discussions similaires

Statistiques des forums

Discussions
311 724
Messages
2 081 938
Membres
101 844
dernier inscrit
pktla