Copier feuille fichier A dans dans feuille fichier B

Bonjour,

débutant, je cherche à copier une feuille d'un fichier A vers un fichier B mais je rencontre l'erreur 'erreur d'execution 9, indice n'appartient pas à la sélection" sur l'instruction en gras..

Merci

Sub copiefichier()

Dim Fichier1 As String, Fichier2 As String

Fichier1 =" toto.xls"

Fichier2 = "tata.xls"

Workbooks.Open fichier1

Workbooks(fichier1).Worksheets("Projets").Cells.ClearContents

end sub

Bonjour Makside, bonjour le forum,

Ton code est d'une part incomplet et d'autre part n'a rien à voir avec ta requête.

Quel est le fichier maître ? c'est a dire celui qui contient la macro... Est-ce que le fichier destination (le second, qui va recevoir la feuille) se trouve dans le même dossier que le fichier maître ? Si non, il faut préciser le chemin d'accès. Et pour finir si tu effaces toute les cellules tu vas copier une feuille vierge. Quel intérêt, sinon celui de récupérer juste les formats ?...

Bref, revoie ta copie et donne-nous les informations nécessaires...

Sinon ça donnerait un code du type :

Sub copiefichier()
Dim CM As Workbook 'déclare la variable CM (Classeur Maître)
Dim OM As Worksheet 'déclare la variable OM (Onglet Maître)
Dim CD As Workbook 'déclare la variable CD (Classeur Destination)
Dim CA As String 'déclare la variable CA (Chemin d'accès)

Set CM = ThisWorkbook 'définit le classeur maîte CM
Set OM = CM.Worksheets("Projets") 'définit l'onglet maître OM
CA = CM.Path & "\" 'définit la chemin d'accès CA
On Error Resume Next 'gestion des erreurs (en cas d'eereur passe à la ligne suivante)
Set CD = Workbooks("tata.xls") 'définit le classeur destination CD (génère une erreur si celui-ci n'est pas ouvert)
If Err <> 0 Then 'condition : si une erreur a été générée
    Err.Clear 'supprime l'erreur
    Set CD = Workbooks.Open(CA & "tata.xls") 'définit le classeur destination CD en l'ouvrant
End If 'fin de la condition
On Error GoTo 0 'annule la gestion des erreurs
OM.Copy Before:=CD.Sheets(1) 'copy l'onglet maître dans le classeur destination en première position
End Sub

Bonjour,

difficile de clairement dire ce qui bug dans ton programme, mais voici une piste:

Tu reçois ce message d'erreur quand par exemple tu essayes d'accéder à une adresse d'un tableau qui n'existe pas, si par exemple tu as un tableau 1x1 et que tu essayes d'accéder à la case ligne 9, colonne 3, tu vas recevoir ce message d'erreur, car tu souhaites voir une case qui n'est pas présente dans le tableau, si tu as un message d'erreur sur cette ligne de code, c'est soit que:

  • fichier1 n'a pas été ouvert et n'est donc pas présent dans la collection Workbooks, vérifie qu'il faut bien utiliser la variable fichier1 pour faire appel au classeur en question, et en mettant un espion sur "Workbooks(fichier1)", regarde si ça te renvoie Nothing ou bien si ça te renvoie bien un Workbook, si ça te renvoie Workbook, voir "Worksheets("Projets")"
  • "Projets" nexiste pas dans la collection Worksheets, le nom est soit erroné, soit tu as un souci avec la collection, il faut peut-être utiliser la collection Sheets plutôt que la collection Worksheets

Salut ThauThème

Bonjour,

La méthode Workbooks.Open opère sur une identification complète du fichier (chemin + nom) , c'est à dire: chemin & "\" & Fichier1.

Bonjour Makside, bonjour le forum,

Ton code est d'une part incomplet et d'autre part n'a rien à voir avec ta requête.

Quel est le fichier maître ? c'est a dire celui qui contient la macro... Est-ce que le fichier destination (le second, qui va recevoir la feuille) se trouve dans le même dossier que le fichier maître ? Si non, il faut préciser le chemin d'accès. Et pour finir si tu effaces toute les cellules tu vas copier une feuille vierge. Quel intérêt, sinon celui de récupérer juste les formats ?...

Bref, revoie ta copie et donne-nous les informations nécessaires...

Sinon ça donnerait un code du type :

Sub copiefichier()
Dim CM As Workbook 'déclare la variable CM (Classeur Maître)
Dim OM As Worksheet 'déclare la variable OM (Onglet Maître)
Dim CD As Workbook 'déclare la variable CD (Classeur Destination)
Dim CA As String 'déclare la variable CA (Chemin d'accès)

Set CM = ThisWorkbook 'définit le classeur maîte CM
Set OM = CM.Worksheets("Projets") 'définit l'onglet maître OM
CA = CM.Path & "\" 'définit la chemin d'accès CA
On Error Resume Next 'gestion des erreurs (en cas d'eereur passe à la ligne suivante)
Set CD = Workbooks("tata.xls") 'définit le classeur destination CD (génère une erreur si celui-ci n'est pas ouvert)
If Err <> 0 Then 'condition : si une erreur a été générée
    Err.Clear 'supprime l'erreur
    Set CD = Workbooks.Open(CA & "tata.xls") 'définit le classeur destination CD en l'ouvrant
End If 'fin de la condition
On Error GoTo 0 'annule la gestion des erreurs
OM.Copy Before:=CD.Sheets(1) 'copy l'onglet maître dans le classeur destination en première position
End Sub

merci pour cette réponse complète

Pour ma part, mon exemple était juste de montrer la ligne où j'avais le pb.. effectivement j'avais pas mis tout le code restant..

Je me suis basé sur ton exemple mais cela ne semble pas marcher.

Cela me renvoie nothing sur le Set CD = Workbooks..

?

Re,

Cela me renvoie nothing sur le Set CD = Workbooks.. ?

C'est couillon que tu aies mis des points de suspension car il y a deux lignes :

Set CD = Workbooks("tata.xls") 'définit le classeur destination CD (génère une erreur si celui-ci n'est pas ouvert)

ou :

Set CD = Workbooks.Open(CA & "tata.xls") 'définit le classeur destination CD en l'ouvrant

et cela justement pour ne pas avoir de bug si le fichier est ouvert ou pas...

Normalement le code fonctionne mais si tu ne daignes pas fournir toutes les informations dont nous t'avons tous parlées, nous ne pourrons rien pour toi...

En fait, sur les deux.

Sur le premier, erreur, donc rentre dans la condition et sur le deuxième.

j'ai mis les deux fichiers xls

1tata.xlsm (9.25 Ko)
4toto.xlsm (18.52 Ko)
Rechercher des sujets similaires à "copier feuille fichier"