Copier feuille d'un classeur à un autre
Plum
-
Plum -
Plum -
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 :
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 :)
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 :)
1 réponse
-
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
-
-
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") -
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 :DSub 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
-