[Résolu] Copier une plage de cellules d'un classeur vers un autre

Lebonetletruand

XLDnaute Occasionnel
Bonjour,

Je vous expose mon problème :

J'ai créé une macro permettant de créer un fichier Excel et d'y envoyer certaines informations provenant d'un autre classeur.

L'erreur'9 "L'indice n'appartient pas à la sélection" s'affiche à la ligne :
Workbooks("Etats individuels de commande.xls").Activate.

Pouvez-vous m'aider à résoudre mon problème. J'ai passé du temps à chercher une solution en vain pour l'instant. J'ai l'impression que l'erreur provient du fait que j'appelle un autre classeur dans une boucle For Next mais ne suis pas sûr.

Merci par avance

Macro en question :

Sub GenererEtatIndividuelCommande()
Dim xlApp As Excel.Application
Dim xlBook As Excel.Workbook
Dim xlSheet As Excel.Worksheet

Set xlApp = CreateObject("Excel.Application")
xlApp.SheetsInNewWorkbook = 1
Set xlBook = xlApp.Workbooks.Add
xlBook.SaveAs ("Etats individuels de commande.xls")
xlApp.Visible = True

Sheets("Feuilles de saisie des réponses").Select

For i = 8 To 10

If Cells(3, i).Value <> "" Then

xlBook.Worksheets.Add.Name = "" & Cells(3, i).Value & Cells(4, i).Value

Workbooks("Commande groupée phyto - fichier de suivi.xls").Activate
Range("A1:H129").Select
Selection.Copy
Workbooks("Etats individuels de commande.xls").Activate
Range("A1").Select
ActiveSheet.Paste

End If

Sheets("Feuilles de saisie des réponses").Select

Next i

xlApp.Quit

End Sub
 
Dernière édition:

Lebonetletruand

XLDnaute Occasionnel
Re : Copier une plage de cellules d'un classeur vers un autre

Bonsoir Jean Marcel,

Merci tout d'abord pour ta réponse. Je ne pense pas que l'erreur provienne de cette ligne car la sélection se fait bien (je vois la plage en surbrillance dans le premier fichier). L'erreur arrive lorsque je lui demande de sélectionner ou d'activer le fichier que je viens de créer dans cette même macro.
 

Lebonetletruand

XLDnaute Occasionnel
Re : Copier une plage de cellules d'un classeur vers un autre

J'ai trouvé la solution. L'erreur provient de la création du nouveau classeur je pense.

J'ai formulé ainsi et ça fonctionne :

Sub GenererEtatIndividuelCommande()
Dim Wb As Workbook
Dim X As Integer
Workbooks.Add
ActiveWorkbook.SaveAs "nom de sauvegarde"
Set Wb = Workbooks("Etats individuels de commande.xls")
With Wb.VBProject.VBComponents("ThisWorkbook").CodeModule
X = .CountOfLines
.InsertLines X + 1, "Private Sub Workbook_BeforeClose(Cancel As Boolean)"
.InsertLines X + 2, "ThisWorkbook.Close(True)"
.InsertLines X + 3, "End Sub"
End With
For i = 8 To 18
Workbooks("Commande groupée - fichier de suivi.xls").Activate
Sheets("Feuilles de saisie des réponses").Select
If Cells(3, i).Value <> "" Then
Wb.Worksheets.Add.Name = "" & Cells(3, i).Value & Cells(4, i).Value
End If
Sheets("Feuilles de saisie des réponses").Select
Next i
Workbooks("Commande groupée - fichier de suivi.xls").Worksheets("Commande et cotisation adhérent").Activate
Range("A1:H129").Select
Selection.Copy
Workbooks("Etats individuels de commande.xls").Activate
For Each Feuille In Worksheets
Feuille.Activate
ActiveSheet.Paste
Next
End Sub
 

Discussions similaires

Statistiques des forums

Discussions
312 252
Messages
2 086 631
Membres
103 283
dernier inscrit
SabSab