|
Publicité ' | |||||||||||||||||||||||
|
|
#1 |
|
Invité de passage
![]() Inscription : décembre 2011 Messages : 5 ![]() |
Bonsoir,
je débute dans VBA et j'ai un projet à faire en utilisant des classes. Quand je démarre une première fois le programme, tout se passe correctement. Si j'ouvre le fichier une seconde fois, j'ai un message d'erreur "Erreur d'accès de fichier. La connexion réseau a peut-être été perdue." au démarrage d'excel. Dans la partie vba, je n'ai également plus accès à mon module classe. Le programme tourne sauf tout ce qui a rapport à la classe. J'ai beau chercher, je ne vois pas ce qui provoque cette perte de fichier. Est ce que l'un d'entre vous aurez une idée du problème ? merci beaucoup |
|
|
00
|
|
|
#2 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Ta classe, c'est un fichier que tu as importé ou c'est toi qui l'a créé ?
Il se passe qq chose sur le Workbook_Open ?
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell |
|
|
00
|
|
|
#3 |
|
Invité de passage
![]() Inscription : décembre 2011 Messages : 5 ![]() |
J'ai crée ma propre classe.
Dans le workbook open, j'active une feuille de présentation du programme avec un bouton pour l'activer et je masque deux feuilles qui me permettent de stocker des informations |
|
|
00
|
|
|
#4 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Si tu n'essaies vraiment nulle part d'accéder à un autre fichier que ton classeur, ça peut être un des rares bugs d'Office. J'en avais entendu parlé sous Access mais pas sous Excel.
La seule solution est souvent dans ce cas de recopier tout son code dans un nouveau classeur. C'est un peu bourrin, mais même Microsoft le préconise. Il y aussi des histoires de mise à jour d'Office ou la dll VBA. Par contre, si tu n'as pas accès au code de ta classe c'est embêtant. Tu arrives à l'exporter ? Si ton fichier n'est pas trop gros ni confidentiel, tu peux peut-être le partager qu'on regarde.
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell |
|
|
00
|
|
|
#5 |
|
Invité de passage
![]() Inscription : décembre 2011 Messages : 5 ![]() |
Lorsque l'erreur s'est affichée, je ne peux plus exporter ma classe : a l'exportation, lors de l'enregistrement, la même erreur apparaît.
J'ai mis mon fichier en pièce jointe. J'espère qu'il sera compréhensible. Merci en tout cas d'y passer un peu de temps |
|
|
00
|
|
|
#6 | ||||||
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Ecoute, ça marche bien chez moi, je n'ai pas le problème.
Tu dis je te redonnes le code de tes classes pour que tu puisses les recopier : CAnimation : Code :
Code :
Code :
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell |
||||||
|
|
00
|
|
|
#7 |
|
Invité de passage
![]() Inscription : décembre 2011 Messages : 5 ![]() |
whaou, ca marche chez toi ?
J'ai essayé sur 4 PC chez moi, à chaque fois après une utilisation, fermeture d'excel et réouverture, cela plantait. Merci pour les codes en tout cas. |
|
|
00
|
|
|
#8 |
|
Invité de passage
![]() Étudiant Inscription : décembre 2011 Messages : 4 ![]() |
bonjour ZebreLoup, je travaille en binome avec Boris54 sur le projet,
après de nombreux tests, je suis arrivée à la conclusion que le problème venait des classes filles. En effet après avoir lancé la macro et enregistrer des données dans la base, lors d'une réouverture du programme, l'erreur s'affiche et nous n'avons plus accès à la classe CMultimedia qui est la "classe mère". Donc j'en ai déduis que l'erreur venait des "classes filles" lorsque nous faisons appel au constructeur de la classe mère ou à ses fonctions. Mais comme nous débutons sous VBA, nous ne savons pas si ce que nous avons écrit est correct pour un appel d'héritage sous VBA (nous savons que VBA n'est pas le meilleur langage objet, mais malheureusement nous avons l'obligation utiliser les classes sous Excel Merci de nous aider |
|
|
00
|
|
|
#9 |
|
Membre Expert
![]() Sebastien LIngénieur Financier Inscription : mars 2010 Messages : 880 ![]() |
Votre implémentation de l'"héritage" (au sens VBA) est bonne. Le problème c'est que vous ne vous en servez pas.
Pour preuve, essayez de mettre en commentaire Implements CMultimedia dans CAnimation et CSerie, vous verrez que tout se passera quand même très bien et que vous n'aurez même plus le bug dont on parle dans ce post. Normalement, vous ne devriez jamais vous servir dans le reste du code des fonctions CMultimedia_Validation ou CMultimedia_Add par exemple. Vous auriez en fait un objet MonMultimedia de type CMultimedia, mais dans lequel vous mettriez un objet CSerie par exemple. Dans ce cas, en faisant MonMultimedia.Add, VBA utilisera la fonction Add de la classe CSerie plutôt que celle de CMultimedia. Je ne sais pas si je suis très clair. Enfin, en tout cas, pour votre exemple précis, si ce n'est pas un projet d'étude dans lequel on vous demande explicitement d'utiliser Implements, je le virerais et j'enleverais les CMultimedia_ dans les propriétés des classes "filles". PS : A la lecture de votre code, je dirais quand même que vous n'êtes plus des débutants, loin de là...
__________________
« Compter en octal, c’est comme compter en décimal, si on n’utilise pas ses pouces » - Tom Lehrer « Il est assez difficile de trouver une erreur dans son code quand on la cherche. C’est encore bien plus dur quand on est convaincu que le code est juste. » - Steve McConnell |
|
|
00
|
|
|
#10 |
|
Invité de passage
![]() Étudiant Inscription : décembre 2011 Messages : 4 ![]() |
Merci beaucoup, on va regarder tout ça, en espérant ne plus avoir de problème! On a déjà effectué du code dans d'autres langages (fortran ou C++) mais on débute en VBA.
Et merci encore. |
|
|
00
|
|
|
#11 |
|
Invité de passage
![]() Inscription : décembre 2011 Messages : 5 ![]() |
Merci beaucoup pour toutes ces explications. Effectivement cela marche mieux comme ca !
|
|
|
00
|
Copyright © 2000-2012 - www.developpez.com