Copier feuille d'un classeur à un autre

Fermé
Plum - Modifié par Plum le 8/12/2016 à 11:38
 Plum - 19 janv. 2017 à 14:12
Hello hello,

Donc depuis ce matin je cherche simplement à copier coller la première feuille, d'un classeur que je viens d'ouvrir, vers une feuille précise de mon classeur de départ. (Je précise, je débute en VBA)
Malgré pas mal de recherche sur internet, j'ai toujours la même erreur que je n'arrive pas à comprendre.

Donc voilà le vilain code qui veut pas coopérer :

Sub RecupDonnees()

Dim FichierContact As Variant

MsgBox "Sélectionner le fichier contact"

FichierContact = Application.GetOpenFilename("Tous les fichiers (*.*),*.*")
If FichierContact = False Then Exit Sub

ThisWorkbook.Worksheets("CONTACT").Cells.ClearContents
'Efface le contenu des feuilles qui vont recevoir les données

Set Contact = Application.Workbooks.Open(Filename = FichierContact)

'A partir de là ça veut plus :(
'A priori c'est la ligne là qui pose problème
Contact.Worksheets("Feuil1").Cells.Copy
ThisWorkbook.Worksheets("CONTACT").Range ("A1")

FichierContact.Close False

End Sub

Je suis donc à la recherche d'une âme charitable qui pourrait m'expliquer ce qui ne va pas.

Merci beaucoup d'avance pour votre aide :)
A voir également:

1 réponse

ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160
8 déc. 2016 à 13:45
Bonjour Plum, bonjour le forum,

Essaie comme ça :

Sub RecupDonnees()
Dim CC As Workbook 'déclare la variable CC (Classeur Cible)
Dim FichierContact As Variant
Dim CS As Workbook 'déclare la variable CS (Classeur Source)

Set CC = ThisWorkbook 'définit le classeur cible CC
MsgBox "Sélectionner le fichier contact"
FichierContact = Application.GetOpenFilename("Tous les fichiers (*.*),*.*")
If FichierContact = False Then Exit Sub
Set CS = ActiveWorkbook 'définit le classeur source
CC.Worksheets("CONTACT").Cells.ClearContents
CS.Worksheets("Feuil1").Cells.Copy CC.Worksheets("CONTACT").Range("A1")
CS.Close False
End Sub

1
Oh ça marche ! Merci merci merci :'D !

Du coup le problème de mon code c'est que je n'ai pas clairement identifié mes classeurs en fait ?
0
J'ai parlé un peu trop vite, ça a fonctionné nickel au premier essai.
Maintenant quand je relance, j'ai droit à une "erreur d'exécution "9" : L'indice n'appartient pas à la sélection" xD

Et plus précisément, l'erreur se met sur la ligne :
CS.Worksheets("Feuil1").Cells.Copy CC.Worksheets("CONTACT").Range("A1")
0
ThauTheme Messages postés 1442 Date d'inscription mardi 21 octobre 2014 Statut Membre Dernière intervention 29 juillet 2022 160 > Plum
8 déc. 2016 à 17:16
Erreur 9 signifie que le nom de l'onglet d'un des deux classeurs a été modifié et ne correspond plus au nom mentionné dans le code. Soit Feuil1 soit CONTACT.
0
Désolée de répondre 1000 ans après, finalement le problème n'était pas dans les noms de mes feuilles.
J'ai fini par trouver une solution, du coup je la poste au cas où ça pourrait servir à quelqu'un.

Dans tous les cas, merci beaucoup pour ton aide :D

Sub RecupDonneesContact()

Dim CC As Workbook '= Classeur Cible
Dim CS As Workbook '= Classeur Source
Set CC = ThisWorkbook 'définit le classeur cible CC

Reponse = MsgBox("Sélectionner le fichier contact à traiter", vbOKCancel)

If Reponse = vbOK Then
    FichierContact = Application.GetOpenFilename("Tous les fichiers (*.*),*.*")
    If FichierContact = False Then Exit Sub
    Workbooks.Open (FichierContact) 'Ouvre le fichier choisi par l'utilisateur
Else
    Exit Sub
End If

Set CS = ActiveWorkbook 'définit le classeur source CS comme FichierContact

'-- Copie de la feuille du fichier contact
CC.Worksheets("CONTACT").Cells.ClearContents 'vide la feuille CONTACT
CS.Worksheets(1).Cells.Copy CC.Worksheets("CONTACT").Range("A1") 'Copie le contenu de la feuille 1 du fichier choisi dans le classeur de base
CS.Close False 'Ferme le fichier ouvert
  
End Sub
0