OVH Cloud OVH Cloud

erreur execution 3316

6 réponses
Avatar
Ben
Bonjour,
J'ai un contr=F4le dans un formulaire associ=E9 =E0 un champ=20
date dans une table.
La saisie n'est valide que si la date est inf=E9rieur =E0 la=20
date du jour.
Si je saisi une date post=E9rieure, mon message appara=EEt=20
correctemment.

Mais si j'entre une date post=E9rieure via une calendrier=20
de type Monthview que j'ai cr=E9=E9 dans un formulaire=20
ind=E9pendant et dont le code est le suivant :=20

Private Sub MonthView8_DateClick(ByVal DateClicked As=20
Date)
Dim Temp As String
Temp =3D DateClicked
DoCmd.Close acForm, Me.Name
Screen.ActiveControl.Value =3D Temp
End Sub

alors l'erreur est de type visual basic, erreur 3316,=20
avec mon message d'erreur mais une proposition de=20
d=E9boguer. La ligne de code qui pose probl=E8me=20
est "Screen.ActiveControl.Value =3D Temp"

Quelqu'un aurait-il une solution ?
Merci d'avance.
Ben.

6 réponses

Avatar
Raymond [mvp]
Bonjour.

je ne comprend pas du tout ce que tu fais.
Dim Temp As String
Temp = DateClicked

Temp devrait être de type date , non ?

DoCmd.Close acForm, Me.Name
Screen.ActiveControl.Value = Temp

tu fermes le formulaire et tu appelles le controle actif de ce formulaire,
normal qu'il te jette. fais plutôt:
Screen.ActiveControl.Value = Temp
DoCmd.Close acForm, Me.Name

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"Ben" a écrit dans le message de news:
294101c4b124$c2e8eb40$
Bonjour,
J'ai un contrôle dans un formulaire associé à un champ
date dans une table.
La saisie n'est valide que si la date est inférieur à la
date du jour.
Si je saisi une date postérieure, mon message apparaît
correctemment.

Mais si j'entre une date postérieure via une calendrier
de type Monthview que j'ai créé dans un formulaire
indépendant et dont le code est le suivant :

Private Sub MonthView8_DateClick(ByVal DateClicked As
Date)
Dim Temp As String
Temp = DateClicked
DoCmd.Close acForm, Me.Name
Screen.ActiveControl.Value = Temp
End Sub

alors l'erreur est de type visual basic, erreur 3316,
avec mon message d'erreur mais une proposition de
déboguer. La ligne de code qui pose problème
est "Screen.ActiveControl.Value = Temp"

Quelqu'un aurait-il une solution ?
Merci d'avance.
Ben.
Avatar
ben
En fait, dans un form1 je clique sur un bouton qui
m'ouvre un form2 indépendant avec le monthview.
Mon contrôle date de mon form1 est actif.

quand je clique sur une date du monthview du form2, la
date cliquée est stockée dans la varible temp :
Temp = DateClicked
puis cela ferme mon form2

DoCmd.Close acForm, Me.Name
puis mon controle actif du form1 pren la valeur de temp.

Screen.ActiveControl.Value = Temp


(je n'ai rien inventé j'ai pris ça sur
http://access.seneque.free.fr/monthview.htm)

Ca marche très bien si ma date est conforme au "valide
si" de mon champ, mais le problème "erreur d'exécution"
apparait si elle n'est pas conforme.

Avatar
Raymond [mvp]
dans cette librairie, il n'est pas question d'activecontrol et de close
form.
donne moi exactement la librairie et la fonction que tu as utilisée.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"ben" a écrit dans le message de news:
0b4d01c4b136$f51ceb40$
En fait, dans un form1 je clique sur un bouton qui
m'ouvre un form2 indépendant avec le monthview.
Mon contrôle date de mon form1 est actif.

quand je clique sur une date du monthview du form2, la
date cliquée est stockée dans la varible temp :
Temp = DateClicked
puis cela ferme mon form2

DoCmd.Close acForm, Me.Name
puis mon controle actif du form1 pren la valeur de temp.

Screen.ActiveControl.Value = Temp


(je n'ai rien inventé j'ai pris ça sur
http://access.seneque.free.fr/monthview.htm)

Ca marche très bien si ma date est conforme au "valide
si" de mon champ, mais le problème "erreur d'exécution"
apparait si elle n'est pas conforme.

Avatar
ben
Je peux vous envoyer mon fichier si vous voulez, parce
qu'une librairie, je ne sais pas ce que c'est.
Avatar
Raymond [mvp]
ok , envoie.

en m'indiquant bien où ça se passe .

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum


"ben" a écrit dans le message de news:
054c01c4b13a$16c2ef30$
Je peux vous envoyer mon fichier si vous voulez, parce
qu'une librairie, je ne sais pas ce que c'est.


Avatar
Raymond [mvp]
Message mail:

ci-joint la base en retour avec les modifs.
le problème provient du fait que le contrôle de la date se fait dans la
table et non dans le formulaire et que tu ne traites pas les erreurs
retournées. il est toujours préférable de le mettre dans le formulaire pour
une meilleure maîtrise des valeurs.
J'ai modifié l'appel du calendrier en acdialog et supprimé toute fonction
dans le calendrier. on ne ferme pas le calendrier, on le rend invisible.
j'ai rajouté la gestion des erreurs qui sont obligatoires dans ton cas, vu
que l'erreur est communiquée par l'écriture dans la table. j'ai raccourci le
code des événements click des commandes.
il y aurait d'autres améliorations à faire.

--
@+
Raymond Access MVP
http://access.seneque.free.fr/
http://access.vba.free.fr/
http://access2003.free.fr/
http://users.skynet.be/mpfa/ pour débuter sur le forum