Copier feuille d'un classeur à un autre

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 :

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

  1. ThauTheme Messages postés 1564 Statut Membre 160
     
    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
    1. Plum
       
      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
    2. Plum
       
      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
      1. ThauTheme Messages postés 1564 Statut Membre 160 > Plum
         
        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
    3. Plum
       
      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