Rechercher : dans
Par :

Code vb pour recuperer une valeur dans access

Dernière réponse le 18 jui 2007 à 10:28:36 nathh76, le 16 jui 2007 à 16:54:48 
 Signaler ce message aux modérateurs

J'ai un petit probleme dans access.
Dans un formulaire, j'ai un champ qui prend la valeur du resultat d'une requete affiché dans un sous-formulaire grace au code suivant : [base TVA0] = [Base TVA0 sous-formulaire].Form![SommeDePrix_element] ca marche. Mais lorsque j'ai pas de resultat de requete (ce qui est normal), cela me crée une erreur. Moi je voudrais que le champ se mette a zero. Comment faire ?

Configuration: Windows XP
Internet Explorer 6.0

1

freto, le 17 jui 2007 à 11:45:47

Bonjour
Je contournerais ce problème comme ceci

if IsNull ([Base TVA0 sous-formulaire].Form![SommeDePrix_element]
) then

[base TVA0] = 0

else

[base TVA0] = [Base TVA0 sous-formulaire].Form![SommeDePrix_element]

end if

Répondre à freto

2

nathh76, le 17 jui 2007 à 14:01:57

Merci Freto.

J'ai essayé, mais j'ai toujours un message d'erreur.
ca marche pas car le champs [Base TVA0 sous-formulaire].Form![SommeDePrix_element] ne s'affiche pas dans mon sous-formulaire.

Une autre idée peut-etre ?

Quelle galère, je suis pas habituée a faire du code, je passe toujours par les assistants.

Répondre à nathh76

3

freto, le 17 jui 2007 à 14:31:50

Mais comment sa il ne s'affiche pas???tu ne modifie pas sa visibilité quelque part??
Peut tu donner le message d'erreur qu'il t'affiche exactement?

Répondre à freto

4

nathh76, le 17 jui 2007 à 14:39:40

En fait je cherche a faire une apli qui permet de faire des factures. Sur une meme factures je peux avoir plusieurs taux de TVA. Donc j'ai fait des sous-formulaires cachés qui calcul le montant de base de TVA pour chaque taux de TVA. cela marche tres bien lorsque j'ai tous les taux de TVA sur ma facture. Mais lorsque j'ai un taux de TVA qui n'est pas utilisé, je n'ai pas de valeur dans mon sous-formulaire, donc rien d'affiché.

Lorsque j'essai ton code j'ai l'erreur suivante :

Erreur d'execution 2113
valeur incorrecte pour ce champ.

Répondre à nathh76

5

freto, le 17 jui 2007 à 14:46:17

Et ton champ [base TVA0] est un champ texte ou un numérique??
Sinon, essaie de déboger l'appli...place un point d'arret au nivau du if IsNull... puis apuis sur F8 pour voir par ou passe le code lorssqu'il te sort une erreur

Répondre à freto

6

nathh76, le 17 jui 2007 à 14:58:40

C'est un champ numérique.

J'ai jamais fais de debogage, mais si j'ai bien tout compris, apres avoir mis le point d'arret, il passe au else. Donc il ne considere pas que le champ est null, s'est bien ca.

Désolé je debute.

Répondre à nathh76

7

freto, le 17 jui 2007 à 15:04:39

Si il passe au else directement c'est que la fonction IsNull renvoie faux....dans ce cas, soit ton champ n'est pas vide, soit le test est faux
Donc essaie pluto ce genre de if

if [Base TVA0 sous-formulaire].Form![SommeDePrix_element] = "" then 



On débute tous un jour tu n'a pas à être désolée

Répondre à freto

8

nathh76, le 17 jui 2007 à 15:08:02

Lorsque j'essaie ce code j'ai l'erreur suivante :
erreur d'execution 2427
expression sans parametres.

c'est sympa a toi de me consacrer de temps. merci.

Répondre à nathh76

9

freto, le 17 jui 2007 à 15:10:14

Tu peut essayer de débugger a partir toujours de la ligne du if??
J'aimerais savoir quelle ligne du programme est surlignée après que tu aie appuyé sur la touche F8?

Répondre à freto

10

nathh76, le 17 jui 2007 à 15:12:49

C'est la ligne du If qui est surligné.

Répondre à nathh76

11

freto, le 17 jui 2007 à 15:22:53

Et si tu appuie encore sur F8??

Répondre à freto

12

nathh76, le 17 jui 2007 à 15:27:34

A chaque fois j'ai le message d'erreur. il reste bloqué sur la ligne du if.

Répondre à nathh76

13

freto, le 17 jui 2007 à 15:34:02

Est ce que le message d'erreur survient avant que le code n'apparaisse avec ta ligne d'arrêt? normalement ton code doit apparaitre puis lorsque tu appuie sur F8 une autre ligne devient surlignée...si le message d'erreur apparait alors que tu appuie sur F8, alors essaie ce if

if [Base TVA0 sous-formulaire].SommeDePrix_element.Value = "" then 

Répondre à freto

14

nathh76, le 17 jui 2007 à 15:44:53

J'ai toujours le meme message d'erreur.

Répondre à nathh76

15

freto, le 17 jui 2007 à 15:52:07

Dans ce cas, juste après le if, essaie cette ligne

Me![base TVA0] = 0

a la place de

[base TVA0] = 0

Répondre à freto

16

nathh76, le 17 jui 2007 à 15:56:45

Toujours le meme soucis

Répondre à nathh76

17

freto, le 17 jui 2007 à 15:59:52

Waou..... je vais finir par sécher ...;-)
Il faudrait que tu m'envoie tout le code que tu a autour de ton if(juste le sub), je vais l'essayer

Répondre à freto

18

nathh76, le 17 jui 2007 à 16:09:09

Voila le code.

Private Sub Commande49_Click()
DoCmd.DoMenuItem acFormBar, acRecordsMenu, 5, , acMenuVer70

If [Base TVA0 sous-formulaire].Form!SommeDePrix_element.Value = "" Then
Me![base TVA0] = 0
Else: [base TVA0] = [Base TVA0 sous-formulaire].Form![SommeDePrix_element]
End If

[Montant TVA55] = [base TVA55] * 0.055
[Montant TVA196] = [base TVA196] * 0.196

[Montant HT] = [base TVA0] + [base TVA55] + [base TVA196]
[Montant TVA] = [Montant TVA55] + [Montant TVA196]
[Montant TTC] = [Montant HT] + [Montant TVA]

End Sub

l'autre piste que j'essaie s'est d'obliger le sous-formulaire a mettre un resultat a zero, mais je galere toujours.

C'est la premier fois que je viens sur un forums, c'est vraiment sympa de pouvoir trouver de l'aide. merci.

Répondre à nathh76

19

freto, le 17 jui 2007 à 16:44:09

Enleve les deux points déjà après le else, et réessaie...mais je pense pas que l'erreur vienne de la, en revanche ce sera une source d'erreurs plus tard

Répondre à freto
Collection CommentÇaMarche.net