Enregistrer un grand nombre de sheets
Tags :
Dernière réponse : dans Programmation
Hey!
Je fais tourner une macro qui cree une copie d'une des pages excel, l'enregistre en .txt sous un repertoire definit puis la ferme .
Lors de la creation de cette copie le nom par defaut est Book1, Book2, Book3, ... etc.
Le programme se bloque a Book101.
Est on limite dans le nombre de sheets crees pendant que le programme tourne?
Comment donner un nom a cette copie lors de sa creation (eviter les Book1) avant qu'elle ne soit enregistree?
Merci beaucoup!
Je fais tourner une macro qui cree une copie d'une des pages excel, l'enregistre en .txt sous un repertoire definit puis la ferme .
Lors de la creation de cette copie le nom par defaut est Book1, Book2, Book3, ... etc.
Le programme se bloque a Book101.
Est on limite dans le nombre de sheets crees pendant que le programme tourne?
Comment donner un nom a cette copie lors de sa creation (eviter les Book1) avant qu'elle ne soit enregistree?
Merci beaucoup!
Autres pages sur : enregistrer grand nombre sheets
Lassé par la pub ? Créez un compte
- | Alerter
- | Alerter
- | Alerter
Contenus similaires
- Excel comparer 2 cellules - Forum
- Programme copier coller excel - Forum
- Excel programmation macro - Forum
- Vba excel fermer userform - Forum
sub test()
chemin = Sheets("BO").Range("chemin")
dossier = Sheets("BO").Cells(8, 7)
nomtxt=Sheets("BO").Cells(9, 7)
lettredossier=Sheets("BO").Cells(10, 7)
Sheets("FORM").Select
Sheets("FORM").Copy
chemin = "C:\Documents and Settings\adri\My Documents\Programme\TOTO"
ChDir chemin
ActiveWorkbook.SaveAs Filename:= _
chemin & "\" & dossier & "\" & lettredossier & "\" & nomtxt, FileFormat:=xlText _
, CreateBackup:=False
ActiveWorkbook.Close savechanges:=False
Sheets("BO").Select
ThisWorkbook.Activate
end sub
Je viens de tester la meme chose sans la copie, c'est a dire en selectionnant la derniere sheet puis enregistrer le workbook. Au bout de 101 enregistrements le programme se bloque.
Comme il s'agit d'une creation de base de donnees, est ce qu'il n'y aurait pas des restrictions sur le nb d'importations d'internet?
Merci zeb.
- | Alerter
- | Alerter
Oups desole,
Voila le code utilise:
Je viens de tester la meme chose sans la copie, c'est a dire en selectionnant la derniere sheet puis en enregistrant le workbook. Au bout de 101 enregistrements le programme se bloque ?!
Comme il s'agit d'une creation de base de donnees, est ce qu'il n'y aurait pas des restrictions sur le nb d'importations d'internet?
Merci !!
Voila le code utilise:
sub test()
chemin = Sheets("BO" ).Range("chemin" )
dossier = Sheets("BO" ).Cells(8, 7)
nomtxt=Sheets("BO" ).Cells(9, 7)
lettredossier=Sheets("BO" ).Cells(10, 7)
Sheets("FORM" ).Select
Sheets("FORM" ).Copy
chemin = "C:\Documents and Settings\adri\My Documents\Programme\TOTO"
ChDir chemin
ActiveWorkbook.SaveAs Filename:= _
chemin & "\" & dossier & "\" & lettredossier & "\" & nomtxt, FileFormat:=xlText _
, CreateBackup:=False
ActiveWorkbook.Close savechanges:=False
Sheets("BO" ).Select
ThisWorkbook.Activate
end sub
Je viens de tester la meme chose sans la copie, c'est a dire en selectionnant la derniere sheet puis en enregistrant le workbook. Au bout de 101 enregistrements le programme se bloque ?!
Comme il s'agit d'une creation de base de donnees, est ce qu'il n'y aurait pas des restrictions sur le nb d'importations d'internet?
Merci !!
- | Alerter
- | Alerter
Citation :
Rho.... Ce n'est pas SaveAs mais SaveCopyAs qu'il faut utiliser
Exercice : Lire la doc concernant ces deux fonctions, analyser l'erreur du code précédent et donner ici la soluce
Ca ne resoud pas le pb du nombre de copies (si je veux en absolument en faire une)
J'ai fais un petit code test pour tester le nombre d'enregistrements que l'on peut faire:
Sub test()
Application.DisplayAlerts = False
Sheets("FORM").Select
chemin = Sheets("FORM").Range("chemin")
a = 1
While a < 200
Sheets(2).Select
Range("A1") = a
ChDir chemin
ActiveWorkbook.SaveCopyAs chemin & "\" & a & ".txt"
Sheets("FORM").Select
a = a + 1
Wend
End Sub
J'esperais retrouver dans les .txt que la valeur de a,
or ils sont plein de caracteres du type "ÐÏࡱá"
Qu'est ce que je dois rajouter dans le code?
Merci ...
- | Alerter
- | Alerter
- | Alerter
Exercice pour zeb : Relire la doc avant de demander à Adri1 de la lire
Alors je te le fais gratos
pour la peine :
Testé et approuvé
Sans garantie pour autant
( Tout ça parce que SaveAs et SaveCopyAs ne sont pas équivalentes et parce que Sheets(..).SaveAs sauvegarde tout le classeur
Mais pourquoi utiliser VBA !!! )
Alors je te le fais gratos
pour la peine :Testé et approuvé
Sans garantie pour autant
( Tout ça parce que SaveAs et SaveCopyAs ne sont pas équivalentes et parce que Sheets(..).SaveAs sauvegarde tout le classeur
Mais pourquoi utiliser VBA !!! )
Option Explicit
Sub Cado()
Dim wb As Workbook
Dim ws As Worksheet
Dim alert As Boolean
Dim tmp As String
tmp = Environ("TEMP") & "\CLS_TMP.XLS"
alert = Application.DisplayAlerts
Application.DisplayAlerts = False
' // Ouverture du classeur à copier
Set wb = Workbooks.Open(Filename:="Classeur_a_copier.xls", ReadOnly:=True)
' // On enregistre le classeur dans une copie temporaire
wb.SaveCopyAs tmp
' // On ouvre le classeur temporaire
Set wb = Workbooks.Open(tmp)
' // On supprime toutes les feuilles inutiles.
' // Comme ça, on est sûr que ce sera la bonne.
For Each ws In wb.Sheets
If ws.Name <> "Feuil2" Then ws.Delete
Next
' // On enregistre comme CSV
' // Le classeur temporaire existe toujours sur le disque dur
' // mais il est remplacé par la feuille CSV dans Excel
wb.SaveAs Filename:="FEUIL2.CSV", FileFormat:=xlCSV
' // On ferme la feuille CSV
wb.Close
' // On supprime le classeur temporaire du disque dur.
Kill tmp
Set wb = Nothing
Application.DisplayAlerts = alert
End Sub
- | Alerter
- | Alerter
Euh, si, si. La copie est en XLS. Temp, c'est le dossier où est copié le fichier temporaire au format XLS. Pour t'en convaincre, exécute ce petit bout de code :
Ou alors, n'exécute pas la commande (Ligne 37)
et va voir le fichier Environ("TEMP" ) & "\CLS_TMP.XLS". C'est bien un fichier Excel.
La transformation en texte (CSV), c'est ligne 31.
A méditer....
Msgbox Environ("TEMP" )
Ou alors, n'exécute pas la commande (Ligne 37)
Kill tmp
et va voir le fichier Environ("TEMP" ) & "\CLS_TMP.XLS". C'est bien un fichier Excel.
La transformation en texte (CSV), c'est ligne 31.
A méditer....
- | Alerter
Oui c'est ce que je voulais dire,
On est oblige de passer par une copie temp du workbook en .xls pour eviter la limitation de copies de la page,
de supprimer toutes les pages-1,
pour enfin enregistrer cette copie en format voulu...
Hier encore mon programme s'est encore bloque a 86 .txt
, va falloir que je regarde encore de plus pres, j' ai des milliers de txt a faire... Tu ne serais pas au courant d'autres restrictions?
On est oblige de passer par une copie temp du workbook en .xls pour eviter la limitation de copies de la page,
de supprimer toutes les pages-1,
pour enfin enregistrer cette copie en format voulu...
Hier encore mon programme s'est encore bloque a 86 .txt
, va falloir que je regarde encore de plus pres, j' ai des milliers de txt a faire... Tu ne serais pas au courant d'autres restrictions?- | Alerter
- | Alerter
Lassé par la pub ? Créez un compte


En plus, tu l'as bien écris au début.