Bonjour,
J'ai l'erreur ci-dessus quand j'essai d'exécuter mon code. (erreur 1004 : erreur définie par l'application ou l'objet)
Mon code devrait me permettre de copier les données d'un classeur dans un autre, en les ordonnant.
La première partie (ligne 1 à environ 200 000) va dans la feuille 1 du nouveau classeur, la deuxième (ligne 200 000 à environ 400 000) dans la feuille 2 etc. Il y a 5 parties en tout (étant donné la limite de ligne de Excel qui ne me permet pas d'en mettre plus).
La boucle "While" est là pour repérer le changement de partie. Quand elle rencontre une case non vide, la dernière ligne de ma partie est enregistrée par la variable "j".
Le code marche une fois, le premier couper coller est réalisé sans pb. L'erreur survient lors de la ligne de coupage (" Workbooks(tab_rpt(p, 0)).Worksheets(1).Range(Worksheets(1).Range("A" & m), Worksheets(1).Range("L" & j - 1)).Cut ") dans la deuxième itération du "For"
Je réussi donc à copier la première partie dans le premier onglet de mon classeur, et alors que j'ai "situé" (déterminé à la ligne à laquelle elle s'arrête) ma deuxième partie, je n'arrive pas à la couper.
Je pensais que le presse-papier était trop plein lors de la première itération (grand nombre de données coupées : environ 200 000) mais ça n'a pas l'air d'être ça.
J'ai essayé plusieurs ligne de codes pour le vider (ici Application.CutCopyMode = False), je ne sais pas si cela fonctionne.
Avez-vous une idée de ce qui pourrait causer l'erreur ?
Je suis dispo pour des explications plus précises si celles-ci n'étaient pas claires.
Merci par avance
Ci après, mon code :
Code vba : Sélectionner tout - Visualiser dans une fenêtre à part
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37 Dim k as Integer Dim j as Long Dim classeur_final, nom_cdc as String For k = 0 To 5 Do While Workbooks("classeur_donnees_brutes").Worksheets(1).Cells(j, 6) = "" j = j + 1 Loop Workbooks("classeur_donnees_brutes").Worksheets(1).Range(Worksheets(1).Range("A" & m), Worksheets(1).Range("L" & j - 1)).Cut Call copier(classeur_final, k + 1) nom_cdc = Range("E8") & Range("F8") & Range("G8") & Range("H8") & Range("I8") & Range("J8") & Range("K8") & Range("L8") Sheets.Add(After:=Worksheets(Worksheets.Count)).name = nom_cdc m = j j = j + 8 Application.CutCopyMode = False Next k Sub copier(nom_rpt, num_feuille) Windows(nom_rpt).Activate Worksheets(num_feuille).Paste End Sub
Partager