Problème dans mon code VBA

Signaler
Messages postés
5
Date d'inscription
mardi 13 mai 2008
Statut
Membre
Dernière intervention
19 mai 2008
-
Messages postés
26
Date d'inscription
lundi 5 mai 2008
Statut
Membre
Dernière intervention
21 mai 2008
-
Bonjour, j'ai un soucis avec mon code VBA qui ne veut pas marcher. Il est sur ouverture de mon formulaire.
Celui-ci a pour fonction de me rentrer automatiquement dans mon sous-formulaire (en mode feuille de données) pour un numéro de production (qui figure dans le formulaire), une année demandée, les douze mois de l'année et des stocks équivalents à zéros que l'utilisateur pourra modifier.
Je résume, première colonne on va retrouver 12 fois les numéros de production les uns en dessous des autres.
seconde colonne: on va retrouver 12 fois l'année les unes en dessous des autres.
troisième colonne: on va retrouver les 12 mois les uns en dessous des autres.
quatrième colonne: on va retrouver en face de chacune des douze lignes  un stock de 0 que pourra changer l'utilisateur.

Mon problème, mon code marche sauf que  quand je réouvre mon formulaire il va me réajouter encore les douze ligne pour une même année, ce que je ne veux pas. J'ai rajouter la fonction  If IsNull... ci dessous mais du coup même s'il n'y a pas d'enregistrement cela ne me met plus rien.

Voici mon code:

PrivateSub Form_Open(Cancel AsInteger)
Dim I AsInteger' Représente les 12 mois, voir ci-dessous For-To-Next
Dim Z AsInteger' Représente l'année (voir ci-dessous divers possibilités)
Dim W AsInteger
Dim sql AsString' Variable dans laquelle on inscrit un code SQL variable selon I & Z
 
Z = InputBox("Saisir l'année ci-dessous", "Démo", Year(Date))' Interaction avec l'utilisateur (utile pour
' situation de fin d'année)
W = Me.NUM_PRODUCTION.Value' Représente le numéro de production qui va venir se mettre par défaut'

IfNot IsNull(DLookup("mois", "stock premier aout", "annee =" & Z))ThenExitSub

For I = 1To12' I prend les 12 valeurs des 12 mois
sql = "INSERT INTO [stock premier aout] ( mois, annee, [num production] ) VALUES ( " & I & ", " & Z & "," & W & ")"
DoCmd.RunSQL sql
Next I
EndSub

Si quelqu'un a une idée faite moi signe, merci beaucoup
Elodie

1 réponse

Messages postés
26
Date d'inscription
lundi 5 mai 2008
Statut
Membre
Dernière intervention
21 mai 2008

Bonjour,

Est-ce que le champ "annee" dans la table est bien un champ numérique ?

Car si ce champ annee est défini comme texte dans la table, la condition sera toujours fausse et le programme passera toujours par "Exit Sub"

Il faudrait alors remplacer la condition par:

If Not IsNull(DLookup("mois", "stock premier aout", "annee LIKE '" & Z & "'")) Then Exit Sub