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 Sheets Copy [XL-2003]


Sujet :

Macros et VBA Excel

Vue hybride

Message précédent Message précédent   Message suivant Message suivant
  1. #1
    Membre expérimenté
    Inscrit en
    Août 2009
    Messages
    284
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Août 2009
    Messages : 284
    Par défaut Erreur Sheets Copy
    Bonjour à tous,

    J'ai une macro qui génére des feuilles automatiquement dans un classeur à partir d'une feuille type.
    J'ai eu aujourd'hui à utiliser cette macro pour générer une centaine de feuilles.

    Le code que j'utilise est:

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Sheets("Feuil1").Copy After:=Worksheets(Worksheets.Count)
    Il fonctionnait parfaitement jusqu'ici, mais je n'avais jamais eu à générer autant de feuilles d'un seul coup.
    De plus j'ai utilisé ce code 3 ou 4 fois de suite sans fermer Excel.
    C'est à ce moment la qu'il plante.

    Si je ferme excel et que je le réouvre ça remarche.

    Mon Hypothèse:
    Je pense que ça vient du fait que le presse papier et surchargé à cause du copy.

    Je peut le tromper donc si vous avez une idée je suis preneur. Sinon je souhaiterai tester mon hypothèse seulement je ne sais plus comment vider le presse papier (commande VBA) si quelqu'un peut m'indiquer le code je suis preneur.

    Merci

  2. #2

  3. #3
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    Bonjour à tous,

    Je viens de tester ce code qui semble ne pas poser de problèmes chez moi :

    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
    Sub testc()
    On Error GoTo fin
    Dim wb As Workbook
    Set wb = ThisWorkbook
     
    Application.ScreenUpdating = False
    For i = 1 To 200
    With Feuil1
        .Visible = True
        .Copy After:=wb.Worksheets(wb.Worksheets.Count)
        .Visible = xlSheetVeryHidden
    End With
    Next
    fin:
    Application.ScreenUpdating = True
     
    End Sub

  4. #4
    Membre expérimenté
    Inscrit en
    Août 2009
    Messages
    284
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Août 2009
    Messages : 284
    Par défaut
    Je viens d'essayer ceci:
    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
        Private Declare Function CloseClipboard Lib "user32" () As Long
        Private Declare Function OpenClipboard Lib "user32" (ByVal hwnd As Long) As Long
        Private Declare Function EmptyClipboard Lib "user32" () As Long
     
    Sub VidePressePapier()
        OpenClipboard 0
        EmptyClipboard
        CloseClipboard
    End Sub
    J'appel VidePressePapier à chaque tour dans la boucle.

    J'obteint un message d'erreur au bout de 170 feuilles.
    Erreur 1004
    La méthode Copy de la classe Worksheet a échoué


    Une idée?

    Voici le code en entier:

    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
    24
    25
    26
    27
    28
    29
    30
    31
    32
    33
    34
    35
    36
    37
    38
    39
    40
    41
    42
    43
    44
    45
    Private Sub CommandButton1_Click()
     
    Dim Nligne, i, j As Integer
     
    Application.ScreenUpdating = False
    Application.EnableEvents = False
     
    UserForm2.ComboBox1.Clear
    Unload UserForm3
    Unload UserForm2
     
    Call detruirefeuillesauf2
     
    Set PL3 = Range("B4", "B1039")
    Nligne = Find0 - 1
     
    If Nligne <> 4 Then
     
        i = 5
        Do Until i = Nligne + 1
     
        nom = Sheets("Feuille de Saisie").Cells(i, 2).Value
        Sheets("Feuil1").Copy After:=Worksheets(Worksheets.Count) '("Feuille de saisie")
        ActiveSheet.Unprotect
        ActiveSheet.Range("G8").Value = Sheets("Feuille de Saisie").Cells(1, 13).Value
            ActiveSheet.Range("A3").Value = "(" & Sheets("Feuille de Saisie").Cells(i, 1).Value & ") " & Sheets("Feuille de Saisie").Cells(i, 2).Value
            ActiveSheet.Range("Q3").Value = Sheets("Feuille de Saisie").Cells(i, 6).Value
            ActiveSheet.Name = "(" & Sheets("Feuille de Saisie").Cells(i, 1).Value & ") " & Left(nom, 15) & " " & Sheets("Feuille de Saisie").Cells(i, 6).Value
            Application.EnableEvents = True
            ActiveSheet.Range("I11").Value = Sheets("Feuille de Saisie").Cells(i, 4).Value
            If Worksheets("Feuille de Saisie").Cells(i, 5).Value = "OUI" Then ActiveSheet.CheckBox1.Value = True
        Application.EnableEvents = False
        Application.ScreenUpdating = False
     
        VidePressePapier
     
        i = i + 1
        Loop
     
    End If
     
    Application.EnableEvents = True
    Application.ScreenUpdating = True
     
    End Sub

  5. #5
    Membre Expert Avatar de aalex_38
    Inscrit en
    Septembre 2007
    Messages
    1 631
    Détails du profil
    Informations forums :
    Inscription : Septembre 2007
    Messages : 1 631
    Par défaut
    Bonjour,

    essai de rajouter après la copie :

    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    Application.CutCopyMode = False

  6. #6
    Membre expérimenté
    Inscrit en
    Août 2009
    Messages
    284
    Détails du profil
    Informations personnelles :
    Âge : 42

    Informations forums :
    Inscription : Août 2009
    Messages : 284
    Par défaut
    Ok merci je vais essayer, je reviens demain

  7. #7
    Membre confirmé
    Profil pro
    Inscrit en
    Janvier 2008
    Messages
    121
    Détails du profil
    Informations personnelles :
    Localisation : France

    Informations forums :
    Inscription : Janvier 2008
    Messages : 121
    Par défaut
    Bonsoir,

    J'ai dans un classeur une feuille-type placée en position 1 et suivant mes besoins j'ai une macro qui ajoute le nombre de feuille voulue.
    je l'ai testé jusqu'à 250 feuilles sans problème.

    Si cela peut te servir, voilà le code:


    Code : Sélectionner tout - Visualiser dans une fenêtre à part
    1
    2
    3
    4
    5
    6
    7
    8
    9
    10
    11
    Sub AjoutDeFeuilles()
      Dim C As Integer
      rep = 0
      rep = InputBox("Nombre de Feuilles à ajouter?")
      If rep <> "" Then
       Do While C < rep
          Sheets.Add After:=Worksheets(Worksheets.Count)
          C = C + 1
      Loop
      End If
    End Sub
    pour le rep=0 je ne suis pas sûre qu'il serve à quelque chose mais comme je n'ai eu aucune erreur jusqu'à présent, je le garde.

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

Discussions similaires

  1. Réponses: 5
    Dernier message: 05/03/2008, 16h23
  2. message d'erreurs après copie de base oracle en 10G
    Par aymeric1970 dans le forum Administration
    Réponses: 1
    Dernier message: 11/05/2007, 12h01
  3. Erreur: Fonction Copy
    Par bchass dans le forum Langage
    Réponses: 4
    Dernier message: 11/03/2007, 18h19
  4. message d'erreurs sur copie de fichier
    Par screeminelle dans le forum C++
    Réponses: 9
    Dernier message: 01/11/2005, 15h21
  5. [VB.NET] Compilation : erreur de copie de la dll
    Par necro dans le forum ASP.NET
    Réponses: 7
    Dernier message: 04/02/2004, 14h16

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