Vous ne trouvez pas de réponse à votre problème ? Alors posez la question dans le forum. Souvenez-vous qu'il n'y a jamais de question bête, mais rester dans l'ignorance parce que l'on n'ose pas poser une question, ça c'est une erreur !

Sujet : erreur de copie de worksheet [ Divers / Débutants ] (tonton33650)

jeudi 7 juin 2007 à 13:11:20 | erreur de copie de worksheet

tonton33650

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.

Voici le code que je viens d'ecrire :

Code :

Sub copy()

Dim j As Integer
Dim last_asset As Integer


i = 13
j = 3


Sheets(j - 1).Range("A3").Value = Sheet1.Cells(i, 2).Value
Sheets(j - 1).Range("B3").Value = Sheet1.Cells(i, 3).Value
Sheets(j - 1).Range("C3").Value = Sheet1.Cells(i, 7).Value
Sheets(j - 1).Range("D3").Value = Sheet1.Cells(i, 6).Value

last_asset = Sheets("Portfolio").Range("A13").End(xlDown).Row

 

For i = 14 To last_asset
   
    j = i - 12
   
    'duplication of previous sheet
   
    Sheets(j).copy Before:=Sheets("Chart CF")
    Application.Run "BLPLinkReset"
    Sheets(j + 1).Select
    Sheets(j + 1).Name = Sheets("Portfolio").Cells(i, 1).Value
   
    'reauired  data 
    
    Sheets(j + 1).Range("A3").Value = Sheet1.Cells(i, 2).Value
    Sheets(j + 1).Range("B3").Value = Sheet1.Cells(i, 3).Value
    Sheets(j + 1).Range("C3").Value = Sheet1.Cells(i, 7).Value
    Sheets(j + 1).Range("D3").Value = Sheet1.Cells(i, 6).Value
   
    'chart adjustment
   
    Sheets(j + 1).Columns("A:F").EntireColumn.AutoFit
   
   
Next i
End Sub


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?

Je vous remercie pour votre aide.


jeudi 7 juin 2007 à 13:23:02 | Re : erreur de copie de worksheet

jrivet

Membre Club
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.

@+: Ju£i€n
Pensez: Réponse acceptée

jeudi 7 juin 2007 à 14:01:43 | Re : erreur de copie de worksheet

tonton33650

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.

Vraiment je suis completement bloque.

Merci pour votre aide

jeudi 7 juin 2007 à 14:09:20 | Re : erreur de copie de worksheet

Drikce06

Membre Club
Salut renomme la feuille, jamais d'espace dans les noms de feuille et réessaye.

 Drikce 06 (Nouveau !!! Forum Exclusivement Office Et VBA By Mortalino)

jeudi 7 juin 2007 à 14:13:39 | Re : erreur de copie de worksheet

Drikce06

Membre Club
Et ajoute un Sheets(j).Select juste avant la copie.

 Drikce 06 (Nouveau !!! Forum Exclusivement Office Et VBA By Mortalino)
Y devenir membre de la

jeudi 7 juin 2007 à 14:39:26 | Re : erreur de copie de worksheet

sobullshit

Avis personnel :
le Sheets(j).Select n'est pas trop utile (mais comme précisé c'est purement personnel)

J'ai tenté de copier des feuilles dans un classeur Excel, et j'en étais à 258 avant que ça plante...


jeudi 7 juin 2007 à 14:43:31 | Re : erreur de copie de worksheet

Drikce06

Membre Club
J'ai souvent eu des problème avec des .copy ou d'autres fonctions dans ce style et chaque fois le sheet.Select réglait le problème.

 Drikce 06 (Nouveau !!! Forum Exclusivement Office Et VBA By Mortalino)

jeudi 7 juin 2007 à 14:44:43 | Re : erreur de copie de worksheet

sobullshit

Je pense que ceci peux t'aider :

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

Apparemment c'est un bug Excel, normal que tu le comprennes pas.

jeudi 7 juin 2007 à 14:46:18 | Re : erreur de copie de worksheet

sobullshit

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.

jeudi 7 juin 2007 à 16:04:24 | Re : erreur de copie de worksheet

tonton33650

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


i = 13
j = 3

Sheets(j - 1).Range("A3").Value = Sheet1.Cells(i, 2).Value
Sheets(j - 1).Range("B3").Value = Sheet1.Cells(i, 3).Value
Sheets(j - 1).Range("C3").Value = Sheet1.Cells(i, 7).Value
Sheets(j - 1).Range("D3").Value = Sheet1.Cells(i, 6).Value

last_asset = Sheets("Portfolio").Range("A13").End(xlDown).Row

For i = 14 To last_asset
   
    j = i - 12
   
    'duplication if previous sheet
   
    Sheets(j).Select
    Sheets(j).copy Before:=Sheets("Chart CF")
    Application.Run "BLPLinkReset"
    Sheets(j + 1).Select
    Sheets(j + 1).Name = Sheets("Portfolio").Cells(i, 1).Value
   
    '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")
       
    End If
   
    'reauired bloomberg data transfer
   
    Sheets(j + 1).Range("A3").Value = Sheet1.Cells(i, 2).Value
    Sheets(j + 1).Range("B3").Value = Sheet1.Cells(i, 3).Value
    Sheets(j + 1).Range("C3").Value = Sheet1.Cells(i, 7).Value
    Sheets(j + 1).Range("D3").Value = Sheet1.Cells(i, 6).Value
   
    'chart adjustment
   
    Sheets(j + 1).Columns("A:F").EntireColumn.AutoFit
   
   
Next i


End Sub

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 ?

Merci



1 2

Cette discussion est classé dans : value, cells, range, sheets, sheet1


Répondre à ce message

Sujets en rapport avec ce message

Range VB.Net [ par Oliviertes33 ] Bonjour, je traduit mon prog en VBA vers VB.net, et j'ai un gros problème avec la fonction Range. voici la partie prog For Each countd <FONT color=# Multiplication soustraction de cellules en VBA [ par kinetix ] Bonjour a tous,J'ai besoin de réaliser l'opération suivante E21+(A25-E22)*A12*A17 lorsque je clique sur un bouton.J'ai donc fait le code suivant mais erreur 13! [ par nicobentz ] bonjour, j'ai un soucis, lorsque j'execute ce code sur une grande plage de donnée j'ai une erreur 13 qui apparait. pourquoi??? il n'y a pourtant pas d erreur 13! [ par nicobentz ] bonjour, j'ai un soucis, lorsque j'execute ce code sur une grande plage de donnée j'ai une erreur 13 qui apparait. pourquoi??? il n'y a pourtant pas d Copie de lignes d'une page à une autres???!!!!?!!? [ par Quecks ] Slt,j'ai un gros problème:Avec le programme suivant j'essaie de copier uniquement les lignes qui m'interresse dans un tableau et les remettre dans un est ce que quelqu'un pourra corriger mon code pour qu'il fonctionne... [ par cyrius ] cyriusbonjour tout le monde,je debute en prog la je suis desesperé.Je dois transferer des données de mon formulaire access sur une page ecxel bien pre Sauvegarde de données de textbox [ par tahbre ] Hello tout le monde!!! :) J'ai des textbox qui représentent le résultat de requêtes.Je veux sauvgarder mes données lorsque les jours de la semaine déf Help Me!! [ par Aldigo ] Bonjour à tous,N'y connaissant rien en VBA j'aimerai avoir votre avis ( aide ?) sur cette ligbe de prog qui m'indique comme erreur : 'Erreur d'éxécu pb dans une fonction [ par raph007 ] voila le point qui ne fonctionne pas c'est le code qui vient apres "position2" il me fait une erreur de selectionqu'en pensé vous????Private Sub cmdto Numérotation composée [ par Gabriel ] Bonjour à toutes et à tous,J'ai un petit soucis pour la mise en place d'une numérotation de dossiers dépendant d'un choix dans une ComboBox... Je disp


Nos sponsors

Sondage...

CalendriCode

Décembre 2008
LMMJVSD
1234567
891011121314
15161718192021
22232425262728
293031    

Consulter la suite du CalendriCode

Appels d'offres

Téléchargements

Logiciels à télécharger sur le même thème :



Développement réalisé par Nicolas SOREL (Nix) avec l'aide de : Cyril DURAND et Emmanuel BAÏSE, Merci à Vincent pour ses précieux conseils
CodeS-SourceS.com© Toute reproduction même partielle est interdite sauf accord écrit du Webmaster
CodeS-SourceS.com© est une marque déposée tous droits réservés
Temps d'éxécution de la page : 0,406 sec

Google Coop CodeS-SourceS Google Coop CodeS-SourceS


Certaines images présentes sur le site (notament certains avatars) sont issues des collections IconShock, donc si vous souhaitez utiliser ces icons vous devez les acheter, ne les copiez pas et ne utilisez pas dans vos sites et applications sans les avoir commandé.