Copie d'une feuillle avec macro VBA - pb au bout d'un certain nombre d'exécutions

taishan

XLDnaute Nouveau
Bonjour,

je travaille actuellement sur une feuille excel associée à deux macros.

Je dois faire varier un paramètre p de ma feuille excel, en lui faisant prendre 4 valeurs différentes (Dans l'exemple ci-joint :1,2,3,4). Puis j'aimerais afficher le résultat d'un calcul (ici, le rapport p/10) dans quatre nouvelles feuilles excel avec quatre noms différents.

J'ai donc écrit ces deux macros

1ère macro : lit les valeurs dans la feuille,fait le rapport des deux et l'écrit.

Code:
Sub Test()

Dim nb1, nb2 As Integer

nb1 = Cells(3, 3).Value
nb2 = Cells(4, 3).Value
Cells(6, 3).Value = nb1 / nb2

End Sub
2ème macro : boucle sur i=1..4 pour faire tourner la macro 1 pour quatre valeurs différentes et créer les quatre feuilles de résultat (Résultat1--> Résultat4)
Code:
Sub Boucle()
Dim i As Integer
Dim nom As String

For i = 1 To 4

[INDENT]Cells(3, 3).Value = i

Call Test

nom = "Résultat " & i

Feuil1.Copy after:=Worksheets(Worksheets.Count)
Worksheets(Worksheets.Count).Select
Worksheets(Worksheets.Count).Activate
ActiveSheet.Name = nom
Feuil1.Activate
[/INDENT]
Next i

    
End Sub

Dans ce fichier (mis en PJ), tout marche bien.

Voilà enfin mon problème :

Dans un fichier utilisant le même principe, mais avec un calcul (ici la macro Test() ) beaucoup plus volumineux, avec beaucoup plus de paramètres, tout se passe bien pour faire le calcul 6 fois de suite et la 7ème fois ça plante
Le message d'erreur est :


Erreur d'exécution '1004":
La méthode 'Copy de l'objet '_Worksheet' a échoué

Et un clic sur "débogage" me dit que c'est la ligne suivante qui pose problème :

Feuil2.Copy after:=Worksheets(Worksheets.Count)

Je n'arrive pas à comprendre quel est le problème et surtout pourquoi ça marche six fois sans problème et pas plus...

Merci d'avance si vous pouvez me venir en aide
 

Pièces jointes

  • Copie_renomme_feuille.xls
    30.5 KB · Affichages: 66

PMO2

XLDnaute Accro
Re : Copie d'une feuillle avec macro VBA - pb au bout d'un certain nombre d'exécution

Bonjour,

A tout hasard, essayez avec votre code modifié

Code:
Sub Boucle()
Dim S As Worksheet
Dim i As Integer, j As Integer
Dim nom As String

'Efface les feuilles créées lors des précédentes exécutions de la macro
j = Worksheets.Count
Application.DisplayAlerts = False
If j > 3 Then
  For i = j To 2 Step -1
    Set S = Worksheets(i)
    S.Delete
    Set S = Nothing
  Next i
End If
Application.DisplayAlerts = True

Set S = Sheets(1)
nom = "Résultat "

For i = 1 To 4
  S.Copy after:=Worksheets(Worksheets.Count)
  With ActiveSheet
    .Cells(3, 3).Value = i
    Call Test
    .Shapes("CommandButton1").Cut
    .Name = nom & i
  End With
Next i
S.Activate
End Sub

Sub Test()
Dim nb1 As Integer, nb2 As Integer
nb1 = Cells(3, 3).Value
nb2 = Cells(4, 3).Value
Cells(6, 3).Value = nb1 / nb2
End Sub

Cordialement.

PMO
Patrick Morange
 

taishan

XLDnaute Nouveau
Re : Copie d'une feuillle avec macro VBA - pb au bout d'un certain nombre d'exécution

Bonjour et merci pour votre réponse!

Malheureusement, je rencontre le même problème avec votre code ; au bout d'un certain nombre d'exécutions, excel plante pour la même raison.

En tapant sur google "La méthode 'Copy de l'objet '_Worksheet' a échoué", je suis tombé sur cette page : XL97*: La méthode Copy de l'objet Feuilles provoque une erreur de page non valide qui semble dire que le problème vient d'un bug d'Excel 1997 et qu'il a été résolu sur Excel 2000.

J'ai pourtant Excel 2003...

En tout cas j'ai pu m'inspirer de ce que proposait microsoft pour résoudre mon problème.

Merci quand même!
 

Discussions similaires

Statistiques des forums

Discussions
312 224
Messages
2 086 410
Membres
103 201
dernier inscrit
centrale vet