Copier/coller données classeur B à Classeur A

  • Initiateur de la discussion Initiateur de la discussion FlorianQ
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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 ! 😎
 
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 !
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD

Discussions similaires

Réponses
3
Affichages
673
  • Question Question
Microsoft 365 Export données
Réponses
4
Affichages
650
Réponses
9
Affichages
581
Retour