[VBA] Copier une feuille vers un autre classeur

  • Initiateur de la discussion Initiateur de la discussion Metil
  • 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 !

Metil

XLDnaute Nouveau
Bonjour à tous,

J'ai effectué pas mal de recherche pour créer ma macro (n'étant pas un pro du VBA, mais un autodidacte massacreur 😛), mais je me retrouve avec un résultat peu probant.

Le contexte : J'ai un classeur Excel avec plusieurs feuilles dont je voudrais "exporter" le contenu vers un autre classeur "cible" et ce dernier n'a pas un emplacement fixe dans windows (contexte professionnel, les nominations de répertoires dépendent du nom de l'utilisateur etc.).

Donc voici une solution pour laquelle j'ai opté :

Code:
Sub CommandButton3_Click()

Application.ScreenUpdating = False
Application.DisplayAlerts = False

On Error Resume Next

Dim Fichier As String, Repdefaut As String
Dim Fich1 As String, Fich2 As String

Fich1 = ThisWorkbook.Name

RepPardefaut = "C:"
ChDrive "D:"
ChDir "D:"

Fichier = Application.GetOpenFilename("Fichiers Excel (*.xls), *.xls", , "Sélectionner un fichier.")
If Answer = vbCancel Then Exit Sub
If Fichier <> "" Then
    Workbooks.Open Fichier
        With ActiveWorkbook
        Fich2 = ActiveWorkbook.Name
        End With
    
    With Windows("Fich1.xls").Select
    ActiveWorkbook.Sheets("NomOnglet").Select
    Cells.Select
    Selection.Copy
    End With

    With Windows("Fich2.xls").Select
    ActiveWorkbook.Sheets("NomOnglet").Select
    Cells.Select
    ActiveSheet.Paste
    End With

End If
Application.ScreenUpdating = True
Application.DisplayAlerts = True
End Sub

Le code se trouve dans le fichier contenant les informations à copier. J'ai essayé plusieurs solutions mais je me retrouve soit avec uniquement la plage à copier sélectionnée dans Excel ou alors le collage ne s'oppert pas ... (et j'ai essayé sans les "" dans windows() et sans le ".xls" le résultat est identique).

Je tourne un peu en rond et je pense que c'est la partie sur la sélection des fichiers pour le copier puis le coller qui foire ...

Pour le moment le code n'est écrit que pour 1 seul onglet, mais il y en a 6 autres derrières à gérer en plus.

Je vous remercie d'avance pour votre aide.
 
Re : [VBA] Copier une feuille vers un autre classeur

Bonjour Metil,

Si j'ai bien compris les manipulations:

Code:
[COLOR=BLUE]Sub[/COLOR] CommandButton3_Click()
    Application.ScreenUpdating = [COLOR=BLUE]False[/COLOR]
    Application.DisplayAlerts = [COLOR=BLUE]False[/COLOR]
    [COLOR=BLUE]On[/COLOR] [COLOR=BLUE]Error[/COLOR] [COLOR=BLUE]Resume[/COLOR] [COLOR=BLUE]Next[/COLOR]
    [COLOR=BLUE]Dim[/COLOR] Fichier [COLOR=BLUE]As[/COLOR] [COLOR=BLUE]String[/COLOR], Repdefaut [COLOR=BLUE]As[/COLOR] [COLOR=BLUE]String[/COLOR]
    RepPardefaut = [i]"C:"[/i]
    ChDrive [i]"D:"[/i]
    ChDir [i]"D:"[/i]
    Fichier = Application.GetOpenFilename([i]"Fichiers Excel (*.xls), *.xls"[/i], , [i]"Sélectionner un fichier."[/i])
    [COLOR=BLUE]If[/COLOR] Answer = vbCancel [COLOR=BLUE]Then[/COLOR] [COLOR=BLUE]Exit[/COLOR] [COLOR=BLUE]Sub[/COLOR]
    [COLOR=BLUE]If[/COLOR] Fichier <> [i]""[/i] [COLOR=BLUE]Then[/COLOR]
        Workbooks.[COLOR=BLUE]Open[/COLOR] Fichier
        [COLOR=BLUE]With[/COLOR] ActiveWorkbook.Sheets([i]"NomOnglet"[/i])
            [COLOR=GREEN]'Efface les donnée déjà présentes,[/COLOR]
            .Cells.ClearContents
            [COLOR=GREEN]'Copie et colle les données de ce classeur dans la feuille active[/COLOR]
            ThisWorkbook.Sheets([i]"NomOnglet"[/i]).UsedRange.Copy Destination:=.Range([i]"A1"[/i])
        [COLOR=BLUE]End[/COLOR] [COLOR=BLUE]With[/COLOR]
    [COLOR=BLUE]End[/COLOR] [COLOR=BLUE]If[/COLOR]
    Application.ScreenUpdating = [COLOR=BLUE]True[/COLOR]
    Application.DisplayAlerts = [COLOR=BLUE]True[/COLOR]
[COLOR=BLUE]End[/COLOR] [COLOR=BLUE]Sub[/COLOR]

A+
 
- 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
5
Affichages
236
  • Question Question
XL 2021 VBA excel
Réponses
4
Affichages
169
Réponses
3
Affichages
672
Retour