[VBA] Copier une feuille vers un autre classeur

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 :p), 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.
 
G

Guest

Guest
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+
 

Discussions similaires

Statistiques des forums

Discussions
312 416
Messages
2 088 247
Membres
103 784
dernier inscrit
Métro-logue