Erreur VBA à la fois classique et étrange -_-

Résolu
tedtheOrs Messages postés 37 Date d'inscription samedi 12 avril 2008 Statut Membre Dernière intervention 27 janvier 2010 - 28 déc. 2009 à 11:39
tedtheOrs Messages postés 37 Date d'inscription samedi 12 avril 2008 Statut Membre Dernière intervention 27 janvier 2010 - 29 déc. 2009 à 09:49
Bonjour,

J'ai une application access, que j'utilise sous Windows XP SP3, et j'obtiens cette erreur:

sur une commande du type
.Worksheets(1).Range("E" & cellule).Value = résultat d'une requete


je n'arrive pas à trouver d'informations sur cette erreur, hormis ici:
[url]http://www.generation-nt.com/reponses/erreur-2147417848-la-methode-value-de-l-objet-combobox-a-echoue-entraide-849031.html#reponse/url

Lorsque j'affiche la valeur de cellule via 1 Msgbox cellule avant la ligne qui génère l'anomalie, j'ai la valeur 5738.
Encore plus bizarre, si je continue à dérouler le code après cet affichage (via la touche F8 du débugueur), tout se passe comme si il n'y avait pas d'anomalie: la ligne incriminée quelques secondes auparavant est executée sans encombre.

Que faire? Quel pourrait être l'origine de cette anomalie? Problèmatique mémoire?

D'avance merci.

6 réponses

cs_Jack Messages postés 14006 Date d'inscription samedi 29 décembre 2001 Statut Modérateur Dernière intervention 28 août 2015 79
28 déc. 2009 à 14:29
Salut
Utilise plutôt ce format :
.Worksheets(1).Range("E" & CStr(cellule)).Value = ...

car les chiffres insérés dans du texte sont d'office formatés avec un espace devant (pour l'éventuel signe).

Tu parles d'Access et tu manipules une feuille Excel ?
Es-tu sûr que le classeur est bien ouvert avant de lancer cette commande ?

Existe t-il une ligne 5738 dans la première feuille de ton classeur ?

Si en mode Debug cela fonctionne, c'est peut-être que ton appli va trop vite.
Ajoute simplement un DoEvents juste avant, cela peut suffire.

Vala
Jack, MVP VB
NB : Je ne répondrai pas aux messages privés

Le savoir est la seule matière qui s'accroit quand on la partage (Socrate)
3
tedtheOrs Messages postés 37 Date d'inscription samedi 12 avril 2008 Statut Membre Dernière intervention 27 janvier 2010
28 déc. 2009 à 14:41
[quote="jack"]Tu parles d'Access et tu manipules une feuille Excel ?/quote
Oui!

[quote="jack"]Es-tu sûr que le classeur est bien ouvert avant de lancer cette commande ?/quote
Oui!

[quote="jack"]Existe t-il une ligne 5738 dans la première feuille de ton classeur ?/quote
Oui, et ça n'est pas la dernière!

[quote="jack"]Si en mode Debug cela fonctionne, c'est peut-être que ton appli va trop vite./quote
Ca me parait incroyable!

[quote="jack"]Ajoute simplement un DoEvents juste avant, cela peut suffire./quote
Je vais essayer cela dans un 1er temps

[quote="jack"]Utilise plutôt ce format :
.Worksheets(1).Range("E" & CStr(cellule)).Value = ...


car les chiffres insérés dans du texte sont d'office formatés avec un espace devant (pour l'éventuel signe). /quote
Je garde cette option pour après, car d'habitude cette commande fonctionne très bien, et elle est utilisée de nombreuse fois dans le code.

En tout cas, merci infiniment, je te tiens au courant!
0
tedtheOrs Messages postés 37 Date d'inscription samedi 12 avril 2008 Statut Membre Dernière intervention 27 janvier 2010
28 déc. 2009 à 16:39
Bon, j'ai essayé avec le Cstr et le DoEvents, et ca ne change rien: j'obtiens la même erreur...
D'autres idées?
0
tedtheOrs Messages postés 37 Date d'inscription samedi 12 avril 2008 Statut Membre Dernière intervention 27 janvier 2010
28 déc. 2009 à 17:00
Petite remarque:
Grâce au DoEvents, l'anomalie se produit sur la ligne 5750....
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
tedtheOrs Messages postés 37 Date d'inscription samedi 12 avril 2008 Statut Membre Dernière intervention 27 janvier 2010
29 déc. 2009 à 09:17
J'ai essayé d'ajouter un MsgBox avant l'instruction pour tenter de faire une pause mais ca ne fonctionne pas...
Je desespère...
0
tedtheOrs Messages postés 37 Date d'inscription samedi 12 avril 2008 Statut Membre Dernière intervention 27 janvier 2010
29 déc. 2009 à 09:49
en fait, j'ai codé
.Worksheets(1).Cells(5,Cstr(cellule))
précédé d'un
DoEvents
et cela fonctionne (je serais bien incapable d'expliquer pourquoi)...

Quelques informations supplémentaires ici:
["http://support.microsoft.com/kb/178510/fr" http://support.microsoft.com/kb/178510/fr]
et ici:
["http://www.developpez.net/forums/d855757/logiciels/microsoft-office/access/vba-access/erreur-vba-classique-etrange-_/#post4885697" http://www.developpez.net/forums/d855757/logiciels/microsoft-office/access/vba-access/erreur-vba-classique-etrange-_/#post4885697]

Merci à tous pour votre aide.
0
Rejoignez-nous