Macro scinder une liste excel en x fichier de x lignes.

Résolu/Fermé
Lucia1810 Messages postés 5 Date d'inscription samedi 23 avril 2016 Statut Membre Dernière intervention 24 avril 2016 - 23 avril 2016 à 23:34
Lucia1810 Messages postés 5 Date d'inscription samedi 23 avril 2016 Statut Membre Dernière intervention 24 avril 2016 - 24 avril 2016 à 13:20
Bonjour,

je suis novice en VBA. Grâce à l'aide des réponses que des personnes ont obtenu sur d'autres forums j'ai essayer de créer ma propre macro mais j'ai une erreur 1004 : erreur définie par l'application ou par l'objet.
L'objet de ma macro: (sur excel 2007).
scinder une liste de données contenues dans une colonne, en x lignes en plusieurs fichiers que je nomme Data "n°ligne de début"-"n°ligne fin".

Sub DécoupageXlignes()
'
' DécoupageXlignes Macro
' Macro qui permet de scinder une longue liste excel en plusieurs fichiers comportant le numéro des lignes copiés dans le nom du fichier créé,

' MyBook = ActiveWorkbook.Name
' MySheet = ActiveSheet.Name

' i = 1
' Début = 2
' fin = 25000
' NbCopie = Application.RoundUp((Application.Subtotal(3, Sheets(MySheet).Range("a:a")) / fin), 0)

' For i = 1 To NbCopie
Range(Cells(Début, 2), Cells(fin, 25000)).Copy
Workbooks.Add
ActiveSheet.Paste
ActiveWorkbook.SaveAs Filename:="Data" & Left("00" & Trim(Str(I)), 3) & "-" & Left("00" & Trim(Str(I + 99)), 3)
Windows(MyBook).Activate
Début = fin + 1
fin = fin + 25000

' Next i

End Sub



L'erreur se trouve à la ligne Range(Cells(Début, 2), Cells(fin, 25000)).Copy

D'avance je vous remercie tous pour l'aide que vous pourrez m'apporter.
Je pourrai ainsi avancer sur mon travail car là vraiment je bloque totalement.

Cordialement.
L
A voir également:

2 réponses

Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
24 avril 2016 à 07:34
Bonjour
Remplacez 25000 par 16384, nombre maximum de colonnes
Range(Cells(Début, 2), Cells(fin, 16384)).Copy
Cdlt
0
Lucia1810 Messages postés 5 Date d'inscription samedi 23 avril 2016 Statut Membre Dernière intervention 24 avril 2016
24 avril 2016 à 10:08
Bonjour Frenchie83,

Je vous remercie pour cette réponse rapide et pour votre aide.
J'ai relancer la macro en pas à pas avec la modification que vous m'avez envoyer et malheureusement elle bloque toujours au même endroit.
J'ai remplacé 16384 par 1 mais j'ai toujours le même erreur.
J'avoue que je ne comprend pas.

Merci encore.
Cdlt.
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337 > Lucia1810 Messages postés 5 Date d'inscription samedi 23 avril 2016 Statut Membre Dernière intervention 24 avril 2016
24 avril 2016 à 10:12
Avez-vous enlever les mises en remarque (atpostrophes ou quotes) devant
' Début = 2
' fin = 25000
0
Lucia1810 Messages postés 5 Date d'inscription samedi 23 avril 2016 Statut Membre Dernière intervention 24 avril 2016 > Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023
24 avril 2016 à 10:51
Waouh, super ça fonctionne mais puis-je encore vous demander de l'aide.
un fichier se créé il se nomme data000-002 (le 002 devrait être 25000) là est ma première question?
La deuxième est que la macro bloque maintenant sur la ligne
Windows(MyBook).Activate
le message d'erreur est "erreur d'exécution'9' l'indice n'appartient pas à la sélection.

Dois je remplacer MyBook par le nom du fichier source? Dans ce cas je devrais la modifier à chaque fois que j'applique la macro à un autre fichier.

Merci.
0
Frenchie83 Messages postés 2240 Date d'inscription lundi 6 mai 2013 Statut Membre Dernière intervention 11 août 2023 337
24 avril 2016 à 11:29
3 façons d'écrire la le nom du fichier
les 2 premières en attribuant la valeur 25000 et la dernière en utilisant la variable "fin " qui vaut 25000
ActiveWorkbook.SaveAs Filename:="Data" & Left("00" & Trim(Str(i)), 3) & "-" & 25000

ActiveWorkbook.SaveAs Filename:="Data" & Left("00" & Trim(Str(i)), 3) & "-25000"

ActiveWorkbook.SaveAs Filename:="Data" & Left("00" & Trim(Str(i)), 3) & "-" & fin


Windows(MyBook).Activate
même problème que précédemment -Avez-vous enlever les mises en remarque (atpostrophes ou quotes) ?
Cdlt
0
Lucia1810 Messages postés 5 Date d'inscription samedi 23 avril 2016 Statut Membre Dernière intervention 24 avril 2016
24 avril 2016 à 12:41
Merci infiniment Frenchie83 pour votre aide.

Le problème est résolue, une toute dernière question
Que puis je rajouter afin que les fichiers créés se ferment après leur création. car cela fait beaucoup de page excel ouverte.

Merci encore pour votre gentillesse.
Cdt
0
Lucia1810 Messages postés 5 Date d'inscription samedi 23 avril 2016 Statut Membre Dernière intervention 24 avril 2016
24 avril 2016 à 13:20
J'ai trouvé, inutile de me répondre.
Je tenais à vous remercier pour votre aide.
Merci beaucoup et merci internet et CCM car je n'aurai pas eu et trouver une solution aussi rapidement.
Merci encore.

A toute fin utile et pour les personnes qui chercheraient le même genre de macro voici le code:

Sub DécoupageXlignes()
'
' DécoupageXlignes Macro
' Macro qui permet de scinder une longue liste excel en plusieurs fichiers comportant le numéro des lignes copiés dans le nom du fichier créé,

MyBook = ActiveWorkbook.Name
MySheet = ActiveSheet.Name

i = 1
Début = 2
fin = 25000
NbCopie = Application.RoundUp((Application.Subtotal(3, Sheets(MySheet).Range("a:a")) / fin), 0)

For i = 1 To NbCopie
Range(Cells(Début, 1), Cells(fin, 1)).Copy
Workbooks.Add
ActiveSheet.Paste
ActiveWorkbook.SaveAs Filename:="Data" & Left("" & Trim(Str(i)), 10) & "-" & fin
ActiveWorkbook.Close
Windows(MyBook).Activate
Début = fin + 1


fin = fin + 25000

Next i

End Sub



Merci encore et bon week-end.
Cdlt
0