tonton33650
Messages postés23Date d'inscriptionvendredi 11 mai 2007StatutMembreDernière intervention 3 décembre 2008
-
7 juin 2007 à 13:11
sobullshit
Messages postés178Date d'inscriptionvendredi 9 février 2007StatutMembreDernière intervention 8 juin 2007
-
8 juin 2007 à 08:10
Bonjour,
Je viens de creer une macro qui me permet de creer un nouvel onglet pour chaque valeur (chaque valuer etant unique) qui se trouve dans mon portfeuille ( qui est lui Sheets(1) dans mon cas). Je cherche a obtenir, pour un portfeuille donne, une fiche descriptive de chacune de ses valeurs.
Lors du lancement de la macro, apres le chargement d'un nouveau portfeuille par exemple, chaque onglet correspondant aux valeurs du precedent portefuille est donc supprime et de nouvelles feuilles apparaissent avec les valeurs desormais souhaitees.
Comme vous pourrez le constater, toutes les feuilles sont identiques et sont une copie de la feuille precedente.
Lorsque j'ouvre mon fichier et que je lance ma macro une premiere fois, tout se passe tres bien. Mon probleme intervient lorsque je veux relancer la macro. A peine arrive a la moitie de mon portefeuille, un message d'alerte apparait au niveau de la ligne en gras sur mon code.
Run'time error '1004'
Copy method of worksheet class failed
Quelqu'un aurait-il une idee sur ce probleme? Mon portfeuille comporte plus de 100 valeurs, est ce un probleme de saturation de la methode de copie ou est ce un probleme avec mon code?
jrivet
Messages postés7392Date d'inscriptionmercredi 23 avril 2003StatutMembreDernière intervention 6 avril 201260 7 juin 2007 à 13:23
Salut,
Je dirait que j possède au moment ou cela plante, une valeur qui ne plait pas à Excel
OU bien Que la Feuille nommée Chart CF n'existe pas.
Ce que tu peux essayer c'est de mettre un point d'arret sur la ligne qui plante pour "espionner" tout ca.
tonton33650
Messages postés23Date d'inscriptionvendredi 11 mai 2007StatutMembreDernière intervention 3 décembre 2008 7 juin 2007 à 14:01
En fait la feuille Chart CF existe bien et elle se situe en derniere position quel que soit le nombre d'onglet que j'ai. Trois feuilles sont toujours presentes dans mon classeur. La sheets(1) qui est le portfeuille de ref, le sheets(2) qui est le modele de base sur lequel vont se baser les autres copies et la Sheets("CHART CF") aui se situe donc en derniere position.
Voici le code que j'ai oublie de preciser pour supprimer toutes les feuilles au debut de mon module, avant d'entamer la boucle sur toutes mes valuers:
CODE:
Do Until Sheets.Count = 3
Application.DisplayAlerts = False
Workbooks("CF_Analysis_O2").Sheets(3).Delete
Application.DisplayAlerts = True
Loop
J'ai donc en permanence au moins trois feuilles dans mon classeur.
J'ai place un watch sur ma variable j qui vient se bloquer sur la valeur 71 lors du deuxieme lancement. A partir de se moment la si je souhaite relancer la macro, la variable j ne decolera pas de la valeur 2.
sobullshit
Messages postés178Date d'inscriptionvendredi 9 février 2007StatutMembreDernière intervention 8 juin 2007 7 juin 2007 à 14:46
Alors dans ce cas je dirais que le .Select est très utile ^^.
Les seuls erreurs que j'ai eu en employant ce genre de fonctions étaient dues à ma stupidité, donc un .Select ne pouvais m'aider.
tonton33650
Messages postés23Date d'inscriptionvendredi 11 mai 2007StatutMembreDernière intervention 3 décembre 2008 7 juin 2007 à 16:04
Merci pour vos reponses, mais malheureusement je n'ai toujours pas reussi a trouver une solution. Peut etre ais-je besoin de qq conseils sur les reponses que vous venez de me donner.
J'ai dans une premier tps place un sheets(j).select avant mon .copy mais le resultat n'a pas ete convaincant. Je suis alle me balader sur lien que sobullshit m'a propose et voici le code que j'obtiens apres adaptation
CODE:
Sub copy()
Dim j As Integer
Dim last_asset As Integer
Do Until Sheets.Count = 3
Application.DisplayAlerts = False
Workbooks("CF_Analysis_O2").Sheets(3).Delete
Application.DisplayAlerts = True
Loop
'save close and reopen after every 150 iterations:
If i Mod 150 = 0 Then
Workbooks("CF_Analysis_O2").Close (True)
Set Workbooks("CF_Analysis_O2") = Nothing
Set Workbooks("CF_Analysis_O2") = Application.Workbooks.Open("H:\.....\O2_CF_Analysis.xls")
Finalement mon i se reinitialise (du moins j'ai l'i;pression, mais peut n'ais je rien compris) a chaque lancement de macro donc j'ai du mal a voir comment il pourrait atteindre 150 et, placer mon seuil de fermeture plus bas, a 100 par exemle, m'empecherai de couvrir toutes les valeurs de mon portefeuille.
Y a t il une erreur dans mon code. Avez vous une suggestion pour que je puisse debloquer ma situation ou dois je trouver une autre methode ?
tonton33650
Messages postés23Date d'inscriptionvendredi 11 mai 2007StatutMembreDernière intervention 3 décembre 2008 7 juin 2007 à 16:39
excuse moi Drikce06 mais je ne comprends pas bien ce que tu m'as ecrit. Mon index de feuille n'atteint jamais -1. Pourrais tu me reexpliquer ce que tu me conseille de faire.
Ok pour les espaces dans le nom de feuille.