IdentifiantMot de passe
Loading...
Mot de passe oublié ?Je m'inscris ! (gratuit)
Navigation

Inscrivez-vous gratuitement
pour pouvoir participer, suivre les réponses en temps réel, voter pour les messages, poser vos propres questions et recevoir la newsletter

Macros et VBA Excel Discussion :

"Erreur d'éxécution 1004 la methode copy de la classe worksheet a échoué"


Sujet :

Macros et VBA Excel

  1. #1
    Futur Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 11
    Points : 5
    Points
    5
    Par défaut "Erreur d'éxécution 1004 la methode copy de la classe worksheet a échoué"
    bonjour à tous.
    et merci d'avance à tout ceux qui prendront ne serait ce que le temps de me lire.
    mon probleme concerne une copie de feuille existante dans mon classeur excel.
    je voudrais créer une 100 aine de copie avec le code suivant:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub addsheetbis(titre As Variant, nom As Variant, l As Integer)
    Sheets(l).Copy after:=Worksheets(Worksheets.Count)
    With Worksheets(Worksheets.Count)
        .Name = nom & titre
            Union(.Range("C5:I10"), .Range("C12:I15"), .Range("C17:I18"), .Range("C20:I22")).HorizontalAlignment = xlRight
            Union(.Range("C5:I10"), .Range("C12:I15"), .Range("C17:I18"), .Range("C20:I22")) = "-"
            End With
    End Sub
    Code : 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
    Sub creationbis()
    Dim l As Integer
    Dim titre As Variant
    Dim f As Integer
    Dim nom As Variant
    Dim m As Integer
     
     
     
    nom = Array("a1 ", "a2 ", "a3 ", "a4 ", "a5 ", "a6 ", "a7 ", "a8 ", "a9 ", "a10 ")
    titre = Array("a", "b", "c", "d", "e", _
    "f", "g", "h", "i", "j", "k", "l")
     
     
    Application.ScreenUpdating = False
        For m = 0 To UBound(nom) Step 1
        For f = 0 To UBound(titre) Step 1
        For l = 9 To 9
        Call addsheetbis(titre(f), nom(m), l)
        Next
        Next
        Next
    End Sub
    apres l'execution de ce code, la macro crée les pages mais s arrete au nom "a3" avec le titre "j" en me mettant "Erreur d'éxécution 1004 la methode copy de la classe worksheet a échoué"

    je clique sur debugage et elle me surligne
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    "Sheets(l).Copy after:=Worksheets(Worksheets.Count)".
    je suis un gros debutant... (j ai commence le codage en VB il y a 2 jours...... )
    donc je ne vois pas ce qu il y a d'incorrect dans cette ligne... et je me dis que vu que ca marche pour la premiere 20 aine de page, pourquoi pas alors les autres???

    ce que j ai essaye... c'est de fermer le fichier et le reouvrir apres pour enlever les traces des feuilles créées et suprimées (d apres les conseils d un collegue), mais rien n'y fait.



    si vous avez des idees, des reflexions, je vous en serais vraiment reconnaissant.

    merci bp.

    bobby.


    windows xp
    excel 2003
    Microsoft VB 6.3

  2. #2
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Cette feuille n'existe-t-elle pas déjà, cela ressemble à une erreur d'indice.

  3. #3
    Futur Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    bonjour et merci de ta reponse ouskel.

    Citation Envoyé par ouskel'n'or Voir le message
    Cette feuille n'existe-t-elle pas déjà, cela ressemble à une erreur d'indice.

    malheureusement non...
    aucune page présente dans ce classeur excel avec ce nom la.
    d ailleurs durant tout mes tests, a chaque fois la macro s'est bloquée... mais parfois pas toujours au meme endroit, ce qui me laisse penser que ce n'est pas un probleme d appelation de feuille.

  4. #4
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Bonjour,

    Rien à voir avec le problème, mais j'adore :


  5. #5
    Futur Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par ucfoutu Voir le message
    Bonjour,

    Rien à voir avec le problème, mais j'adore :

    comme je l avais dit je suis debutant...
    je mets 9 il me met qu il veut un "To" ... je lui rajoute un 9! systeme D!

  6. #6
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Alors tu peux remplacer ta boucle par un simple
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
        Call addsheetbis(titre(f), nom(m), 9)
    Moi je ne suis pas comme certain, j'me moque pas des débutants... je me souviens ! J'ai pas la mémoire défaillante comme certains (salut uccomplètementfoutue)

  7. #7
    Futur Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    effectivement c'est plus efficace comme ca, et ca m'evite un "for next".
    merci de l'astuce.

  8. #8
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Pour le "vrai" problème, pourrais-tu nous montrer ta macro addsheetbis ?
    A+

  9. #9
    Futur Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    Private Sub addsheetbis(titre As Variant, nom As Variant, l As Integer)
    Sheets(l).Copy after:=Worksheets(Worksheets.Count)
    With Worksheets(Worksheets.Count)
        .Name = nom & titre
            Union(.Range("C5:I10"), .Range("C12:I15"), .Range("C17:I18"), .Range("C20:I22")).HorizontalAlignment = xlRight
            Union(.Range("C5:I10"), .Range("C12:I15"), .Range("C17:I18"), .Range("C20:I22")) = "-"
            End With
    End Sub

  10. #10
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    Peux-tu nous dire combien de feuilles sont déjà présentes lorsque tu lances ta procédure ?

  11. #11
    Inactif  
    Avatar de ouskel'n'or
    Profil pro
    Inscrit en
    Février 2005
    Messages
    12 464
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Février 2005
    Messages : 12 464
    Points : 15 543
    Points
    15 543
    Par défaut
    Ajoute un DoEvents après la création de la feuille
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    Sheets(l).Copy after:=Worksheets(Worksheets.Count)
    DoEvents
    '... la suite
    Tu dis
    A+

    NB - Jète un oeil dans l'aide à DoEvents

    Tu peux aussi mettre en début de la macro Sub creationbis()
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.screenUpDating = false
    et sur la dernière ligne de la même macro
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.screenUpDating = True

  12. #12
    Futur Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    Citation Envoyé par ucfoutu Voir le message
    Peux-tu nous dire combien de feuilles sont déjà présentes lorsque tu lances ta procédure ?

    il y a deja 10 pages de présentes.

    je vais tenter le Doevents pour voir si ca change qquechose, merci du conseil.

  13. #13
    Inactif  

    Profil pro
    Inscrit en
    Juillet 2007
    Messages
    4 555
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Juillet 2007
    Messages : 4 555
    Points : 5 535
    Points
    5 535
    Par défaut
    On dirait bien qu'Excel n'arrive pas à tout avaler d'un coup :

    http://support.microsoft.com/kb/210684/fr

    MS préconise d'enregistrer et réouvrir de vez en cuando.

  14. #14
    Futur Membre du Club
    Inscrit en
    Décembre 2007
    Messages
    11
    Détails du profil
    Informations forums :
    Inscription : Décembre 2007
    Messages : 11
    Points : 5
    Points
    5
    Par défaut
    merci de l info!!!
    j essaye ca et je vous tiendrai au courant, mais ça m' a l air pas mal du tout!

  15. #15
    Inactif  
    Profil pro
    Inscrit en
    Juin 2007
    Messages
    2 054
    Détails du profil
    Informations personnelles :
    Localisation : Belgique

    Informations forums :
    Inscription : Juin 2007
    Messages : 2 054
    Points : 2 416
    Points
    2 416
    Par défaut
    Avec ta macro tu crée 120 Feuilles, probablement un dépassement mémoire, essaye en mettant moins de feuilles.
    A+

+ Répondre à la discussion
Cette discussion est résolue.

Discussions similaires

  1. [XL-2007] Erreur d'exécution 1004 La méthode Select de l'Objet Worksheet a échoué !
    Par Nonno 94 dans le forum Macros et VBA Excel
    Réponses: 21
    Dernier message: 08/11/2013, 15h39
  2. Erreur 1004 : la methode Paste de la classe Worksheet a échoué
    Par jambonland dans le forum Macros et VBA Excel
    Réponses: 7
    Dernier message: 26/08/2013, 10h29
  3. [XL-2007] Erreur 1004 : la methode Paste de la classe Worksheet a échoué
    Par bricko dans le forum Macros et VBA Excel
    Réponses: 6
    Dernier message: 07/06/2013, 01h53
  4. Erreur 1004 La methode copy de la classe Worksheet a echoué
    Par Bernard67 dans le forum Macros et VBA Excel
    Réponses: 10
    Dernier message: 09/04/2008, 16h39
  5. Réponses: 13
    Dernier message: 29/06/2007, 18h03

Partager

Partager
  • Envoyer la discussion sur Viadeo
  • Envoyer la discussion sur Twitter
  • Envoyer la discussion sur Google
  • Envoyer la discussion sur Facebook
  • Envoyer la discussion sur Digg
  • Envoyer la discussion sur Delicious
  • Envoyer la discussion sur MySpace
  • Envoyer la discussion sur Yahoo