captaine93
Messages postés5Date d'inscriptionmercredi 31 août 2005StatutMembreDernière intervention19 septembre 2005
-
13 sept. 2005 à 13:08
captaine93
Messages postés5Date d'inscriptionmercredi 31 août 2005StatutMembreDernière intervention19 septembre 2005
-
19 sept. 2005 à 10:33
Bonjour !
J ai un message d'erreur sur le code suivant...erreur 91 variable non définie...excel pointe sur la dernière boucle "ActiveWorbook.SaveAs...."
Quelqu'un pourrait-il me donner la solution svp...
D'avance merci !
Dim sFichier As String
'Définir le chemin
ChDir ("C:\nico\analyse\en cours")
crenaud76
Messages postés4172Date d'inscriptionmercredi 30 juillet 2003StatutMembreDernière intervention 9 juin 200628 13 sept. 2005 à 15:40
l'erreur 91 indique que tu fait référence à un objet qui n'a pas été instancié.
Cela semblerait donc indiquer que l'objet ActiveWorkbook n'est pas instancié au moment ou tu appelles sa méthode SaveAs(). Donc tu ne dois avoir aucun classeur d'ouvert à ce moment du code.
Assures-toi que ta 1ere boucle ouvre bien au moins un classeur ...
aieeeuuuuu
Messages postés698Date d'inscriptionjeudi 16 janvier 2003StatutMembreDernière intervention20 mai 20113 13 sept. 2005 à 16:52
salut
sauf erreur de ma part, tu fait un do...loop sans condition de sortie
donc le programme ferme les classeur actifs les uns apres les autre, et lorsqu'ils sont tous fermés, ca plante, car il n'y a plus de "activeworkbook" !!!
donc il faut que tu mette une condition de sortie a ta boucle, pour qu'elle s'arrete quand il n'y a plus de classeur ouvert.
captaine93
Messages postés5Date d'inscriptionmercredi 31 août 2005StatutMembreDernière intervention19 septembre 2005 15 sept. 2005 à 15:40
désolé mais avec le While not, excel plante a la fin...
Quant au for each, cela ne m'enregistre que le 1er fichier au format excel et tout reste ouvert...
Merci pour votre aide à tous mais là je ne m'en sors pas ( j suis un gros novice en VB)...
L idée for each a l air séduisante mais comment instancier un activeworkbook car la on instancie un workbook uniquement ?
Merci encore de m aider !
Vous n’avez pas trouvé la réponse que vous recherchez ?
aieeeuuuuu
Messages postés698Date d'inscriptionjeudi 16 janvier 2003StatutMembreDernière intervention20 mai 20113 16 sept. 2005 à 10:21
je ne suis pas sur de ce que j'avance, mais pour l'histoire du for each, s'il ne va pas jusqu'au bout, je pense que c'est du au fait qu'excel ferme en premier le classeur actif qui contient la macro, et que du coup la macro s'arette. j'ai deja eu le probleme (ca fonctionnait sous office 95 et ca plantait sous 2000 !)
pour cela essaie de rajouter un controle dans ton for each :
Dim WB as WorkBook
For Each WB In WorkBooks
if not WB = activeWorkBook then
WB.SaveAs ...
WB.Close
end if
Next
'et apres tu ferme le dernier classeur, celui qui contient a macro !
activeWorkBook.SaveAs...
activeWorkBook.close
c'est sans garantie, mais ca vaut le coup d'essayer... :)
captaine93
Messages postés5Date d'inscriptionmercredi 31 août 2005StatutMembreDernière intervention19 septembre 2005 19 sept. 2005 à 10:33
ca marche po...
En fait, la macro fonctionne parfaitement...excel fait excatement ce que je lui demande. Donc y a pas de pb avec un classeur qui contiendrait la macro.
Les problèmes réels sont :
1/comment instancier le "activeworkbook" comme une variable
2/lui faire comprendre que quand il a tout fermé il faut s'arrêter...
J'attends vos idées, vous qui répondez gentillement à mes demandes de novices !
Encore merci !