Problème dans mon code VBA

dodie84 Messages postés 5 Date d'inscription mardi 13 mai 2008 Statut Membre Dernière intervention 19 mai 2008 - 19 mai 2008 à 15:55
CarSoftAja Messages postés 26 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 21 mai 2008 - 20 mai 2008 à 17:18
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

CarSoftAja Messages postés 26 Date d'inscription lundi 5 mai 2008 Statut Membre Dernière intervention 21 mai 2008
20 mai 2008 à 17:18
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
0
Rejoignez-nous