Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > VBA Access
VBA Access Le forum pour les questions relatives au code VBA sous Access, et à son environnement de développement VBE.
Partagez cette discussion sur d'autres réseaux sociaux : Viadeo Twitter Google Facebook Digg Delicious MySpace Yahoo
Réponse Proposer ce sujet en actualité
 
Outils de la discussion
Publicité
'
Vieux 14/10/2011, 11h51   #1
Invité de passage
 
Inscription : février 2006
Messages : 38
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 38
Points : 3
Points : 3
Par défaut InputBox() s'affiche deux fois

Bonjour à tous,

Je rencontre un soucis dans la génération d'un état en VBA (la création de ce dernier en VBA n'était surement pas la meilleure solution, mais je redécouvre Access et fait selon mes connaissances à ce niveau). Ce dernier execute plusieurs requêtes dans le but d'automatiser des calculs en fonction de deux dates.

Tout fonctionne à ce niveau là mais l'inputbox qui demande les dates apparait deux fois (4 en tout en comptant la date de début et la date de fin).

Sachant que:
- Si je ne renseigne pas de date la première fois, le programme plante
- Si je renseigne une première fois la date et début et la date de fin mais que je ne renseigne rien la deuxième fois, le programme plante
- Si je renseigne deux fois les dates correctement dans les 4 inputbox, mon état se génère normalement (seul les dernières dates renseignées sont prises en compte)

Une aide de votre part serait la bienvenue car je ne comprends vraiment pas pourquoi les inputbox apparaissent deux fois (si je créé des msgbox n'importe où dans le code, même problème. C'est comme si le code entier s'éxecutait deux fois)


Voilà, merci d'avance pour vos réponses.

Kilvan
cuicui08 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2011, 14h01   #2
Membre régulier
 
Inscription : février 2010
Messages : 100
Détails du profil
Informations forums :
Inscription : février 2010
Messages : 100
Points : 92
Points : 92
Bonjour,

Je n'ai pas vraiment de réponse (désolé ^^'), mais pourquoi ne pas ouvrir un formulaire/utiliser le formulaire précédent pour remplir ces deux dates ? Au lieu de passer par deux InputBox, tu crées deux champs dans ton formulaire, tu récupères les valeurs à l'ouverture de l'état et tu effectues tes actions à partir de celles-ci.

Cordialement,
Beub'.
Beub' est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2011, 15h34   #3
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 206
Détails du profil
Informations personnelles :
Nom : Homme Denis
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 3 206
Points : 5 256
Points : 5 256
Re,

Tu as essayé sur l'évènement print (impression) de la section EntêteÉtat ?

A+
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp.

Bon développement !


Mes tutoriels et contributions sur ma page perso:
Ma page personnelle
User est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2011, 15h42   #4
Invité de passage
 
Inscription : février 2006
Messages : 38
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 38
Points : 3
Points : 3
Re,

Merci pour vos réponses.

Concernant le fait de mettre un formulaire en amont, je n'ai pas testé mais pourquoi pas. Ceci étant je ne comprendrais toujours pas pourquoi mon code s’exécute deux fois.

Concernant le test sur l’événement print, j'ai essayé et cela me retourne la même erreur que lorsque je ne remplis pas les champs des dates (à savoir erreur 3075 Erreur de syntaxe, opérateur absent, dans l'expression Requête SQL)

Quelqu'un aurait une idée du pourquoi ce code s’exécute deux fois de suite ? Merci.
cuicui08 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2011, 15h52   #5
Membre régulier
 
Inscription : février 2010
Messages : 100
Détails du profil
Informations forums :
Inscription : février 2010
Messages : 100
Points : 92
Points : 92
Comment est-ce que ton état s'ouvre ? Tu peux nous montrer le code ?
Beub' est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2011, 15h59   #6
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 206
Détails du profil
Informations personnelles :
Nom : Homme Denis
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 3 206
Points : 5 256
Points : 5 256
Citation:
Envoyé par Beub' Voir le message
Comment est-ce que ton état s'ouvre ? Tu peux nous montrer le code ?
+1
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp.

Bon développement !


Mes tutoriels et contributions sur ma page perso:
Ma page personnelle
User est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2011, 16h00   #7
Invité de passage
 
Inscription : février 2006
Messages : 38
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 38
Points : 3
Points : 3
Re,

J'ai un peu de mal à comprendre la question du comment mon état s'ouvre ^^

C'est un état tout a fait classique avec trois textbox permettant d'afficher le résultat des différents algorithmes.
cuicui08 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2011, 17h01   #8
Rédacteur/Modérateur
 
Avatar de User
 
Homme Denis
Développeur informatique
Inscription : août 2004
Messages : 3 206
Détails du profil
Informations personnelles :
Nom : Homme Denis
Âge : 42
Localisation : France

Informations professionnelles :
Activité : Développeur informatique

Informations forums :
Inscription : août 2004
Messages : 3 206
Points : 5 256
Points : 5 256
En gros comment tu lances ton état :

Manuellement ?
Avec une macro ?
Ou du code VBA ?

A+
__________________
Merci de ne pas poster sur mon profil pour des problèmes techniques. Pour celà vous pouvez utiliser le forum ou m'envoyer un mp.

Bon développement !


Mes tutoriels et contributions sur ma page perso:
Ma page personnelle
User est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2011, 17h33   #9
Nouveau Membre du Club
 
Stéphane
Formateur en informatique
Inscription : janvier 2011
Messages : 30
Détails du profil
Informations personnelles :
Nom : Stéphane

Informations professionnelles :
Activité : Formateur en informatique

Informations forums :
Inscription : janvier 2011
Messages : 30
Points : 25
Points : 25
Bonjour,

Il me semble que si c'est demandé 2 fois c'est une 2 fois par les InputBox, une fois par Set req = gpi.OpenRecordset(sql). Partant de là c'est soit un pb de portée de variable ... soit un pb d'ordre d'éxécution.

Est ce que Dim Date_Debut permet la conservation de la valeur de la variable ? il ne faudrait pas un Static Date_Debut?

C'est parce que Sub Détail_Format est exécuté plusieurs fois lors du formatage de l'état. FormatCount permet de compter de nombre de passage (voir aide Access)


Cordialement,
Stef999 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/10/2011, 17h54   #10
Invité de passage
 
Inscription : février 2006
Messages : 38
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 38
Points : 3
Points : 3
L'état est généré par le VBA uniquement.

Je teste dès lundi de passer la variable en Static. Il est possible que ça résolve le problème, cependant le fait que des MsgBox placé à différents endroits du code (pour tester) apparaisse en double également me laisse perplexe.

De manière précise les deux inputBox apparaissent me demandant les deux dates. Puis ensuite les différentes MsgBox. Puis de nouveau les deux inputBox réapparaissent me redemandant les dates. Puis de nouveau les MsgBox.

J'ai remarqué aussi que les dates m'étaient redemandées lorsque je souhaite imprimer l'état. Visiblement l'impression ne part pas si je ne renseigne rien (ça je n'en suis pas sur par contre. Imprimante réseau qui merde assez régulièrement, je ne sais pas si le problème d'impression vient vraiment de là).

Je vous tiens au courant dès que j'ai effectuer le test de Stef999. Encore merci.

Kilvan
cuicui08 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/10/2011, 02h31   #11
Membre actif
 
Avatar de robyseb
 
Homme Sébastien
Développeur indépendant
Inscription : juillet 2011
Messages : 178
Détails du profil
Informations personnelles :
Nom : Homme Sébastien
Localisation : Canada

Informations professionnelles :
Activité : Développeur indépendant

Informations forums :
Inscription : juillet 2011
Messages : 178
Points : 193
Points : 193
Salut j'ai regardé ton code et je croit qu'il y a un ambiguïté dans ta fonction
Code :
 MakeUSDate(dDate As Variant)
tu devrait déclarer en et si ta fonction se termine parce que :
Code :
if not isdate(dDate) = true
n'est pas respecté
soit par erreur de frappe ou erreur qui sort de null part ca va planté ... moi je metteraai un msgbox qui dit date non valide avec le format à respecté si "not is date" !!!

Essai de trouver un autre manière de coder cette partie ... on dirait que ton code tourne en rond sur ce point.

cordialement
robyseb est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2011, 10h44   #12
Invité de passage
 
Inscription : février 2006
Messages : 38
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 38
Points : 3
Points : 3
J'ai testé en passant les variables date en Static.
J'ai également testé en supprimant la fonction de conversion de date (j'ai donc saisis les dates au format US directement).

Dans le 1er cas, le code ne se lance pas et j'ai le message suivant :
"L'expression au formatage entrée comme paramètre de la propriété de type événement est à l'origine d'une erreur. Instruction incorrecte à l'extérieur d'une procédure." J'ai tenté de placé la variable dans le module Entête mais la portée se limite donc à l'entête seulement et le code plante à la 1ère requête.

Dans le 2e cas, le code s’exécute normalement me demandant toujours de saisir les dates 2 fois.

Si quelqu'un à une autre idée, je suis preneur. Je ne comprends vraiment pas ce qui cloche.
cuicui08 est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 17/10/2011, 11h05   #13
Invité de passage
 
Inscription : février 2006
Messages : 38
Détails du profil
Informations forums :
Inscription : février 2006
Messages : 38
Points : 3
Points : 3
Problème résolu.

Le soucis est complètement indépendant du code VBA mais se trouve dans la partie création de l'état.

Le soucis vient d'une textbox permettant d'afficher le nombre de pages (en bas de page) avec l'expression "="Page " & [Page] & " sur " & [Pages]"

Quand la textbox est présente, le code s’exécute 2 fois. Maintenant qu'elle est supprimée, tout fonctionne bien.

J'avoue que la raison m'échappe un peu mais le principal étant que ca fonctionne.

Merci du temps accordé à mon soucis. A+
cuicui08 est déconnecté   Envoyer un message privé Réponse avec citation 00
Réponse Proposer ce sujet en actualité Cette discussion est résolue.
Outils de la discussion



Fuseau horaire GMT +2. Il est actuellement 07h17.


 
 
 
 
Partenaires

Hébergement Web