Erreur VBA à la fois classique et étrange -_- [Résolu]

Signaler
Messages postés
37
Date d'inscription
samedi 12 avril 2008
Statut
Membre
Dernière intervention
27 janvier 2010
-
Messages postés
37
Date d'inscription
samedi 12 avril 2008
Statut
Membre
Dernière intervention
27 janvier 2010
-
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

Messages postés
14008
Date d'inscription
samedi 29 décembre 2001
Statut
Modérateur
Dernière intervention
28 août 2015
73
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)
Messages postés
37
Date d'inscription
samedi 12 avril 2008
Statut
Membre
Dernière intervention
27 janvier 2010

[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!
Messages postés
37
Date d'inscription
samedi 12 avril 2008
Statut
Membre
Dernière intervention
27 janvier 2010

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?
Messages postés
37
Date d'inscription
samedi 12 avril 2008
Statut
Membre
Dernière intervention
27 janvier 2010

Petite remarque:
Grâce au DoEvents, l'anomalie se produit sur la ligne 5750....
Messages postés
37
Date d'inscription
samedi 12 avril 2008
Statut
Membre
Dernière intervention
27 janvier 2010

J'ai essayé d'ajouter un MsgBox avant l'instruction pour tenter de faire une pause mais ca ne fonctionne pas...
Je desespère...
Messages postés
37
Date d'inscription
samedi 12 avril 2008
Statut
Membre
Dernière intervention
27 janvier 2010

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.