Se connecter avec
S'enregistrer | Connectez-vous

Enregistrer un grand nombre de sheets

Dernière réponse : dans Programmation
Partagez

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!

Autres pages sur : enregistrer grand nombre sheets

(Merci d'utiliser les balises CODE, même pour deux lignes) EDIT: :jap: 

Inutile :
Sheets("FORM" ).Select

Citation :
puis je l'enregistre.
Ben oui, mais donne la suite...
Contenus similaires

  1. sub test()
  2. chemin = Sheets("BO").Range("chemin")
  3. dossier = Sheets("BO").Cells(8, 7)
  4. nomtxt=Sheets("BO").Cells(9, 7)
  5. lettredossier=Sheets("BO").Cells(10, 7)
  6.  
  7. Sheets("FORM").Select
  8. Sheets("FORM").Copy
  9. chemin = "C:\Documents and Settings\adri\My Documents\Programme\TOTO"
  10.  
  11. ChDir chemin
  12. ActiveWorkbook.SaveAs Filename:= _
  13. chemin & "\" & dossier & "\" & lettredossier & "\" & nomtxt, FileFormat:=xlText _
  14. , CreateBackup:=False
  15.  
  16. ActiveWorkbook.Close savechanges:=False
  17. Sheets("BO").Select
  18. ThisWorkbook.Activate
  19. 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.

Oups desole,

Voila le code utilise:

  1. sub test()
  2.  
  3. chemin = Sheets("BO" ).Range("chemin" )
  4. dossier = Sheets("BO" ).Cells(8, 7)
  5. nomtxt=Sheets("BO" ).Cells(9, 7)
  6. lettredossier=Sheets("BO" ).Cells(10, 7)
  7.  
  8. Sheets("FORM" ).Select
  9. Sheets("FORM" ).Copy
  10. chemin = "C:\Documents and Settings\adri\My Documents\Programme\TOTO"
  11.  
  12. ChDir chemin
  13. ActiveWorkbook.SaveAs Filename:= _
  14. chemin & "\" & dossier & "\" & lettredossier & "\" & nomtxt, FileFormat:=xlText _
  15. , CreateBackup:=False
  16.  
  17. ActiveWorkbook.Close savechanges:=False
  18. Sheets("BO" ).Select
  19. ThisWorkbook.Activate
  20.  
  21. 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 !!

Rho.... Ce n'est pas SaveAs mais SaveCopyAs qu'il faut utiliser :o 


Exercice : Lire la doc concernant ces deux fonctions, analyser l'erreur du code précédent et donner ici la soluce :D 

Citation :
Rho.... Ce n'est pas SaveAs mais SaveCopyAs qu'il faut utiliser :o 


Exercice : Lire la doc concernant ces deux fonctions, analyser l'erreur du code précédent et donner ici la soluce :D 


Ca ne resoud pas le pb du nombre de copies (si je veux en absolument en faire une) :pt1cable: 

J'ai fais un petit code test pour tester le nombre d'enregistrements que l'on peut faire:

  1. Sub test()
  2. Application.DisplayAlerts = False
  3.  
  4. Sheets("FORM").Select
  5. chemin = Sheets("FORM").Range("chemin")
  6.  
  7. a = 1
  8. While a < 200
  9.  
  10. Sheets(2).Select
  11. Range("A1") = a
  12.  
  13. ChDir chemin
  14. ActiveWorkbook.SaveCopyAs chemin & "\" & a & ".txt"
  15. Sheets("FORM").Select
  16.  
  17. a = a + 1
  18. Wend
  19. End Sub


J'esperais retrouver dans les .txt que la valeur de a,
or ils sont plein de caracteres du type "ÐÏࡱá" :sweat: 

Qu'est ce que je dois rajouter dans le code?
Merci ... :wahoo: 

Rho.... Problème pour lire la doc ? :sarcastic:  En plus, tu l'as bien écris au début.

Ne recopie rien sans bien comprendre.
Pour ça et dans l'ordre :
  • Lire la documentation...
  • Réfléchir...
  • Demander de l'aide sur un forum. PPC par exemple :D 
    1. FileFormat:=xlText
  • tu veux dire?

    1. ActiveWorkbook.SaveCopyAs (chemin & "\" & a & ".txt")


    ca ne passe tjs pas.. :heink: 

    g toujours les "ÐÏࡱá " :bounce: 
    et
    1. ActiveWorkbook.SaveCopyAs (chemin & "\" & "tata" & ".txt"), _
    2. FileFormat:=xlText, CreateBackup:=False

    a trop d'arguments

    Exercice pour zeb : Relire la doc avant de demander à Adri1 de la lire :whistle: 

    Alors je te le fais gratos ;)  pour la peine :
    Testé et approuvé :o 
    Sans garantie pour autant ;) 

    ( Tout ça parce que SaveAs et SaveCopyAs ne sont pas équivalentes et parce que Sheets(..).SaveAs sauvegarde tout le classeur :pfff:  Mais pourquoi utiliser VBA !!! )

    1. Option Explicit
    2.  
    3. Sub Cado()
    4. Dim wb As Workbook
    5. Dim ws As Worksheet
    6. Dim alert As Boolean
    7. Dim tmp As String
    8.  
    9. tmp = Environ("TEMP") & "\CLS_TMP.XLS"
    10.  
    11. alert = Application.DisplayAlerts
    12. Application.DisplayAlerts = False
    13.  
    14. ' // Ouverture du classeur à copier
    15. Set wb = Workbooks.Open(Filename:="Classeur_a_copier.xls", ReadOnly:=True)
    16. ' // On enregistre le classeur dans une copie temporaire
    17. wb.SaveCopyAs tmp
    18.  
    19. ' // On ouvre le classeur temporaire
    20. Set wb = Workbooks.Open(tmp)
    21.  
    22. ' // On supprime toutes les feuilles inutiles.
    23. ' // Comme ça, on est sûr que ce sera la bonne.
    24. For Each ws In wb.Sheets
    25. If ws.Name <> "Feuil2" Then ws.Delete
    26. Next
    27.  
    28. ' // On enregistre comme CSV
    29. ' // Le classeur temporaire existe toujours sur le disque dur
    30. ' // mais il est remplacé par la feuille CSV dans Excel
    31. wb.SaveAs Filename:="FEUIL2.CSV", FileFormat:=xlCSV
    32.  
    33. ' // On ferme la feuille CSV
    34. wb.Close
    35.  
    36. ' // On supprime le classeur temporaire du disque dur.
    37. Kill tmp
    38.  
    39. Set wb = Nothing
    40.  
    41. Application.DisplayAlerts = alert
    42. End Sub

    C super ca tourne correctement. :wahoo: 

    On est oblige de faire des copies en temp et non en .xls alors...

    A retenir. ;) 

    Merci beaucoup zeb !! :hello: 

    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 :
    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....

    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... :ange: 

    Hier encore mon programme s'est encore bloque a 86 .txt :sweat:  , 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?

    Posez votre question