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

Résolu
Lucia1810 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -  
Lucia1810 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention   -
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   Statut Membre Dernière intervention   338
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   338 > Lucia1810 Messages postés 5 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   > Frenchie83 Messages postés 2240 Date d'inscription   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention   338
 
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   Statut Membre Dernière intervention  
 
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   Statut Membre Dernière intervention  
 
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