Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Access > Modélisation
Modélisation Le forum qui vous aide à résoudre vos questions relatives à la modélisation (tables et relations) de votre base de données sous Access. Pour les états et les formulaires, postez dans le forum IHM.
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 15/11/2007, 15h30   #1
Invité régulier
 
Inscription : mars 2005
Messages : 36
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 36
Points : 9
Points : 9
Par défaut perte totale d'acces au commande d'un formulaire

Bonjour,

J'ai réalisé un formulaire avec plusieurs boutons de commande appelés btn1, btn2, btn3.
Lors du clic de btn1, je lance une petite procédure qui compare des valeurs.
Le problème: dés que cette procédure tourne, je ne peux plus acceder au btn2 et btn3, ma souris devient totalement inefficace.
Ci dessous le code de btn1, j'ai utilisé doEvents comme trouvé dans le faq mais le problème persiste.
Précisons que je suis pas très doué.


Code :
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
Function regulation1()
 
Dim tinst As Double
Dim t0, d0, dtot, d1, d2, d3, d4, d5, i As Integer
Dim compt, s, pgbmax, pgbmin, tps, s2, start As Long
Dim Msg As String
 
'fix des durées pour calcul des progressbar
d1 = Forms!F_Table_Recette.duree1.Value
d2 = Forms!F_Table_Recette.duree2.Value
d3 = Forms!F_Table_Recette.duree3.Value
d4 = Forms!F_Table_Recette.duree4.Value
d5 = Forms!F_Table_Recette.duree5.Value
dtot = d1 + d2 + d3 + d4 + d5
 
 
'Forms!F_Table_Recette.Texte28.Value = ReadAnalogChannel(1)
DoEvents
For i = 1 To 5
    tinst = Forms!F_Table_Recette.Texte28.Value
    pgbmin = Forms!F_Table_Recette.Controls("ProgressBar" & i).min
    pgbmax = Forms!F_Table_Recette.Controls("ProgressBar" & i).max
    t0 = Forms!F_Table_Recette.Controls("temp" & i)
 
    d0 = Forms!F_Table_Recette.Controls("duree" & i)
    tps = Forms!F_Table_Recette.Texte53.Value
 
 
    s = 100 / d0
    s2 = 100 / dtot
    If tinst < t0 - 5 Then
    Forms!F_Table_Recette.temp6.Value = 1
    i = 6
    'Call OutputAnalogChannel(1, 255)
    ElseIf tinst > t0 - 5 And tinst <= t0 - 3 Then
    Forms!F_Table_Recette.temp6.Value = 2
    i = 6
    'Call OutputAnalogChannel(1, 125)
    ElseIf tinst > t0 - 3 And tinst < t0 Then
    Forms!F_Table_Recette.temp6.Value = 3
    i = 6
    'Call OutputAnalogChannel(1, 25)
    ElseIf tinst = t0 Then
    start = Timer
        'DoEvents
            While Timer < start + d0
            tinst = Forms!F_Table_Recette.Texte28.Value
             Forms!F_Table_Recette.temp6.Value = 44
 
                 If tinst < t0 Then
             'Call OutputAnalogChannel(1, 25)
                 Else
             'Call OutputAnalogChannel(1, 0)
                 End If
 
                If Forms!F_Table_Recette.Controls("ProgressBar" & i) + s >= (pgbmax - s) Then
                    Forms!F_Table_Recette.Controls("ProgressBar" & i) = pgbmax
                Else: Forms!F_Table_Recette.Controls("ProgressBar" & i) = Forms!F_Table_Recette.Controls("ProgressBar" & i) + s
                End If
                If Forms!F_Table_Recette.ProgressBar6.Value + s2 >= Forms!F_Table_Recette.ProgressBar6.max - s2 Then
                    Forms!F_Table_Recette.ProgressBar6.Value = Forms!F_Table_Recette.ProgressBar6.max
                Else: Forms!F_Table_Recette.ProgressBar6.Value = Forms!F_Table_Recette.ProgressBar6.Value + s2
                End If
            Sleep 1000
 
            Wend
            t0 = t0 - 2 'diminue la valeur de consigne pour eviter de recomencer la boucle
 
             Msg = MsgBox("voulez vous passer à l'étape suivante", vbOKCancel + vbQuestion)
            If Msg = vbYes Then
            Else: Exit Function
 
        End If
    End If
 
Next i
 
End Function
je crois que cela n'a rien à voir avec le code mais on ne sait jamais!!!!!!

Merci pour votre aide

Eric
grommerch est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/11/2007, 16h25   #2
Modérateur
 
Homme René MAROT
Inscription : octobre 2005
Messages : 5 482
Détails du profil
Informations personnelles :
Nom : Homme René MAROT
Localisation : Canada

Informations forums :
Inscription : octobre 2005
Messages : 5 482
Points : 7 577
Points : 7 577
Généralement on met le doevents dans la boucle, pour qu'il s'execute régulièrement (ici dans la boucle While-Wend et peut-être aussi dans le For-Next) et si tu execute des requêtes longues, access ne te rends pas la main tant qu'il est en train de les traiter.

Un truc pratique pour le signaler :

DoCmd.Hourglass true :'Affiche le sablier
DoCmd.Hourglass false :'Retour à la flèche.

A+
__________________
Vous voulez une réponse rapide et efficace à vos questions téchniques ? Ne les posez pas en message privé mais dans le forum, vous bénéficiez ainsi de la compétence et de la disponibilité de tous les contributeurs.
marot_r est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 16/11/2007, 15h28   #3
Invité régulier
 
Inscription : mars 2005
Messages : 36
Détails du profil
Informations forums :
Inscription : mars 2005
Messages : 36
Points : 9
Points : 9
merci pour le conseil.
L'informatique, c'est facile quand on connaît et c'est pas mon cas.
J'ai suivi ton conseil et ça marche beaucoup mieux, je peux accéder aux autres boutons pdt le déroulement du code.

Merci encore pour ton aide

Eric
grommerch 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 10h48.


 
 
 
 
Partenaires

Hébergement Web