Copier coller une plage d'un classeur à un autre

Bonjour,

Je suis coincé avec cette erreur "la méthode de sélection de la classe Worksheet a échoué", j'ai créé un bouton qui permet à l'utilisateur de choisir un fichier, après que la macro ouvre le fichier et vérifie si l'antete et le même qu'il a déjà, la prochaine étape est de copier toutes les données sauf l'autete qui existe déjà dans le fichier qui contient le bouton et c'est là que j'ai ce problème, merci d'avance pour votre suggestions.

Sub Selectfile()

Dim WB As Workbook
Dim WB2 As Workbook
Dim WS As Worksheet
Dim headerImport As Range

Dim FileToOpen As Variant
Dim isAccepted As Boolean
Dim cell As Range
isAccepted = True

Set WB = ActiveWorkbook

Set WS = WB.Worksheets(1)

FileToOpen = Application.GetOpenFilename(Title:="Please select a file", FileFilter:="Excel Files(*.xls*),*xls*")
If FileToOpen <> False Then
    Set WB2 = Application.Workbooks.Open(FileToOpen)
Else
    Exit Sub
End If

With WB2.Worksheets(1)

'Set headerImport = .Range("A1:N1")
For Each cell In WB.Worksheets(1).Range("A1:N1")
If cell.Value <> .Range(cell.Address).Value Then isAccepted = False
Next
End With
If isAccepted = False Then WB2.Close MsgBox("Retry!")
WB2.Worksheets(1).Range("A2:N" & WB2.Worksheets(1).Rows.Count).Copy
WB.Worksheets(1).Select ' erreur ici 
WB.Worksheets(1).Range("A5").Select ' meme chose
WB.Worksheets(1).Paste

Bonjour,

En final essaies :

If isAccepted = False Then
  WB2.Close False
  MsgBox ("Retry!")
Else
  WB2.Worksheets(1).Range("A2:N" & WB2.Worksheets(1).Rows.Count).Copy WB.Worksheets(1).Range("A5")
End If

Bonjour,

Voici une proposition de réorganisation du code :

Sub Selectfile()

Dim WB As Workbook, WB2 As Workbook
Dim WS As Worksheet
Dim FileToOpen As Variant
Dim isAccepted As Boolean

FileToOpen = Application.GetOpenFilename(Title:="Please select a file", FileFilter:="Excel Files(*.xls*),*xls*")
If FileToOpen <> False Then
    Set WB2 = Application.Workbooks.Open(FileToOpen)
Else
    Exit Sub
End If

Set WB = Thisworkbook
Set WS = WB.Worksheets(1)
isAccepted = True

With WB2.Worksheets(1)
    For Each cell In WS.Range("A1:N1")
        If cell.Value <> .Range(cell.Address).Value Then isAccepted = False
    Next
    If isAccepted = False Then WB2.Close false: MsgBox("Retry!"): exit sub
    dl2 = .cells(.rows.count, 1).end(xlup).row
    .Range("A2:N" & dl2).Copy destination:=WS.Range("A5:N" & dl2 + 5 - 2)
end with

WB2.close false
msgbox "terminé"

end sub

Ici, on copie directement sur la destination sans sélection... Il y avait une erreur car au moment où vous cherchez à sélectionner la feuille du classeur WB, c'est le classeur WB2 qui est actif. Ce n'est donc pas possible...

Cdlt,

Edit : Salut Patrice !

Rechercher des sujets similaires à "copier coller plage classeur"