Problème avec Workbooks.Close

pingouinal

XLDnaute Occasionnel
Bonjour,

Dans mon fichier ci-joint, j'ai un problème lors de la fermeture du fichier (sur la ligne de code "fich.Close (False)" tout en bas).
La boucle tourne sans problème à plusieurs reprises et au bout d'un moment la macro plante avec le message Run-time error '1004' - Close method of Workbook class failed.
Si je retente, la macro plante à nouveau, mais pas forcément à la même ligne, ça parait aléatoire.

Quelqu'un saurait-il ce qui peut clocher dans mon code?
Par ailleurs si quelqu'un a un méthode plus simple et rapide pour récupérer les données sur le net, je suis preneur. ^_^'

D'avance mecri pour votre aide.
 

Pièces jointes

  • Test rates.xlsm
    21.7 KB · Affichages: 40

vgendron

XLDnaute Barbatruc
Re : Problème avec Workbooks.Close

Salut,

j'ai pas trop regardé dans le détail.. encore que..
plusieurs remarques

1)
Code:
If myMonth = 1 Or myMonth = 3 Or myMonth = 5 Or myMonth = 7 Or myMonth = 8 Or myMonth = 10 Or myMonth = 12 Then
    myLastDay = 31
    Else: myLastDay = 30
End If

En février. il n'y a pas 30 jours.. ca peut sans doute te faire planter à un moment ou un autre..
ce que je vais habituellement pour avoir le dernier jour.. je pars du premier du mois suivant - 1 jour..
myLastDay = Day(DateSerial(myYear, myMonth + 1, 1) - 1)

2) l'ouverture - fermeture de ton fichier se fait à l'interieur d'une boucle for each c..
ca fait beaucoup d'ouverture fermeture du meme fichier.. (est ce bien le meme à chaque fois?)
si oui. tu aurais intérêt à ouvrir le fichier. PUIS faire ta boucle for each.

3)
Code:
If myMonth = 1 Or myMonth = 2 Or myMonth = 3 Or myMonth = 4 Or myMonth = 5 Or myMonth = 6 Or myMonth = 7 Or myMonth = 8 Or myMonth = 9 Then
            MyDate = ("01.0" & myMonth & "." & myYear)
            Else: MyDate = ("01." & myMonth & "." & myYear)
        End If

moi ca plante à MyDate=.....

à priori. le format utilisé pour la date n'est pas bon..
si tu remplaces
MyDate = ("01.0" & myMonth & "." & myYear)
par
MyDate = ("01/0" & myMonth & "/" & myYear)

C'est mieux..


Voila..
regarde ce que ca donne et dis nous

petit ajout:
et donc.. MyDate = ("01/0" & myMonth & "/" & myYear)
ca va sans doute pas aller quand tu sera en Octobre.. 01/010/2014

suis pas sur qu'il aime le "010"

pour reconstruire une date. utilise la fonction DateSerial (année, mois, jour)
 
Dernière édition:

pingouinal

XLDnaute Occasionnel
Re : Problème avec Workbooks.Close

Bonsoir vgendron,

Merci beaucoup pour ton retour.
J'ai changé mes parties de dates avec DateSerial, ça évitera en effet que tout plante en février. ^_^'

Concernant la boucle, je ne peux malheureusement pas enlever l'ouverture et la fermeture du fichier, car pour chaque ligne, un nouveau fichier s'ouvre en fonction des monnaies à rechercher. Je dois donc refermer le fichier précédemment ouvert avant d'ouvrir le suivant.

Et c'est là que ça plante de manière aléatoire (généralement entre la 3eme et la 11e boucle).

D'avance merci à toi et/ou à tous ceux qui pourront m'aider.
 

Staple1600

XLDnaute Barbatruc
Re : Problème avec Workbooks.Close

Bonsoir à tous


Ce qu'on peut lire ici (notamment le paragraphe : DROIT d'AUTEUR)
http://fxtop.com/fr/conditions_generales_fournitures_taux_change.pdf
puis là (ou vice-versa)
(Extrait de la charte du forum)
8 - Les demandes de développements relatives à des extractions de données sur des sites interdisant ces pratiques dans leurs conditions générales sont interdites.
posent problème ou pas ?

Là est la première question du fil ;)
(car nous ne savons pas si le demandeur est souscripteur, et si il l'est, la licence est individuelle)

PS: Personnellement j'ai du mal à comprendre ce qui est permis ou pas à la lecture du PDF.
Quelqu'un pour éclairer notre lanterne ?

NB: La question initiale a pour sujet WorkBook.Close mais la PJ aussi contient le code VBA d’extraction de données Web.
Avec une PJ expurgée de ce code, je pourrai finir ma soupe tiède sans devoir me creuser les méninges ;)
 
Dernière édition:

pingouinal

XLDnaute Occasionnel
Re : Problème avec Workbooks.Close

Bonjour Staple1600 et tous les autres,

Tout d'abord désolé pour ma réponse tardive.
Ensuite, après lecture des conditions générales de fxtop, je comprends que ce qui pose problème ce sont les extractions massives (supérieures à 25% de leur base de données). Or ma macro est faite pour récupérer 17 taux de change sur les quelques millions stockés sur ce site. Je ne pense donc pas être hors charte du forum.

J'ai essayé de modifier le code avec l'ouverture et la fermeture d'un fichier Excel stocké sur mon PC, mais la macro ne plante plus. Je ne peux donc pas soumettre ce fichier pour vous demander de l'aide. ^_^'

Je vous remercie donc par avance pour l'aide apportée et m'excuse si je suis hors charte, auquel cas je comprendrais que ma demande soit caduque.