Précédent   Forum des professionnels en informatique > Logiciels > Microsoft Office > Word > VBA Word
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/05/2008, 15h08   #1
Candidat au titre de Membre du Club
 
Inscription : avril 2006
Messages : 43
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 43
Points : 10
Points : 10
Par défaut Code fonctionne en debug pas en execution

Bonjour,

j'ai un problème étrange et assez bloquant.

Mon programme manipule un document sélectionné dans un form.
Lorsque j'exécute le document normalement, une partie du code ne s'exécute pas correctement.
En pas à pas, tout fonctionne.

Le problème vient du fait qu'en exécution normal il rappelle l'event onChange sur une listbox (ce qui efface certaines variables) ce qu'il ne fait pas en debug.

Si quelqu'un à une solution...
LePhasme est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2008, 15h12   #2
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 363
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 363
Points : 29 284
Points : 29 284
Salut,

Avec le code, ce serait un peu plus facile.
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2008, 15h40   #3
Candidat au titre de Membre du Club
 
Inscription : avril 2006
Messages : 43
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 43
Points : 10
Points : 10
Alors voilà les parties de code intéressantes :

Le onChange qui est appelé quand je sélectionne un document dans ma listbox
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
 
Private Sub lsNewDoc_Change()
    Dim docn As String
 
    docn = lsNewDoc.Text
 
    If docn = "GEEN DOCUMENTEN BESCHIKBAAR" Or docn = "PAS DE DOCUMENTS DISPONIBLES" _
    Or docn = "GEEN DOCUMENTEN" Or docn = "PAS DE DOCUMENTS" Then
        lblNDCd6 = "00000"       'Code document
        lblNDCd9 = "0"               'Annexescd
        lblNDCd7 = "-"                'Maskname
        lblNDCd8 = "-"                'Versioncd
        lblNDCd10 = "00000"     'Maskcd
        Exit Sub
    End If
 
    Select Case lblNDCd3
        Case "n"
            sqlSetParameterOpen "SP_NEW_DOCSELECTION_NL", CStr(docn)
        Case "f"
            sqlSetParameterOpen "SP_NEW_DOCSELECTION_FR", CStr(docn)
        Case "a"
            sqlSetParameterOpen "SP_NEW_DOCSELECTION_A", CStr(docn)
    End Select
 
    With sqlRs
        If .RecordCount() <> 0 Then
 
            lblNDCd6 = .Fields("DOCITEM")         'Code document
            lblNDCd9 = .Fields("DOCITEM2")       'Annexescd
            lblNDCd7 = .Fields("DOCITEM3")       'Maskname
            lblNDCd8 = .Fields("DOCITEM4")       'Versioncd
            lblNDCd10 = .Fields("DOCITEM5")     'Maskcd
        End If
    End With
    sqlSetParameterClose 1
 
    ndPatternMaker
End Sub
Le code qui lance les traitements sur le document choisi
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
79
80
81
82
Private Sub cmdNewDoc1_Click()
    'OK-button
 
    Module1.DeleteTempFiles
 
    'Checking input
        If cbNewDoc1.Text = "" Then
            If dnMessages(10, 0, 48) = vbOK Then Exit Sub
        End If
 
        If cbNewDoc2.Text = "" Then
            If dnMessages(11, 0, 48) = vbOK Then Exit Sub
        Else
            cbNewDoc2_Click
        End If
 
        If lblNDCd6 = "00000" Then
            If dnMessages(12, 0, 48) = vbOK Then Exit Sub
        End If
 
    'Data correction
    mat = CStr(lblNDCd5)
 
    If lblNDCd6 = "00872" Then   'Codes document kabnot to insert
        kabnot = 1
    Else
        kabnot = 0
    End If
 
    newUpdDosData
 
    'Test virtual disk
    If vdiskCheck("i") = 0 Then
        If dnMessages(30, 4, 64) = vbNo Then
            'startButtons
            Unload Me
        Else
            Unload Me
            frmNewDoc2.Show
        End If
    End If
 
    'Copying document and mask to Docnet-temp folder
    If copieMskAndDocToTemp(CStr(lblNDCd12), 0) = False Then
        If dnMessages(21, 0, 48) = vbOK Then
            'startButtons
            Unload Me
        End If
    End If
 
    If copieMskAndDocToTemp(CStr(lblNDCd13), 1) = False Then
        If dnMessages(21, 0, 48) = vbOK Then
            'startButtons
            Unload Me
        End If
    End If
 
    'Executing the merge
 
    docnetMerger "c:\docnet\temp\tmpmsk.doc", "c:\docnet\temp\tmpdoc.doc", 0
    DoEvents
    'closeAllDocumentsExceptTemp
    startButtons (4)
    Dim i As Integer
    For i = 1 To 10000
        i = i
    Next
    MPause 0.25
    formAdapt CStr(lblNDCd10)
    MPause 0.25
    If lblNDCd1 = "000" Or lblNDCd1 = "001" Then
        signatures lblNDCd6, lblNDCd3
    End If
 
    'Deleting the copies in the Docnet-temp folder
    tmpDocsKill
 
    'Unloading this form
    newAskButtons
    Tabulation.PositionOnFirstField
    Unload Me
End Sub
Le problème a lieu à la ligne ou j'appelle formAdapt CStr(lblNDCd10), le label lblNDCd10 a été remi à 0 par un nouvel appel au onChange (la remise à 0 est normal, mais pas à ce moment là...)
LePhasme est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 14/05/2008, 20h11   #4
Responsable Word

 
Avatar de Heureux-oli
 
Homme Olivier Lebeau
Contrôleur d'industrie
Inscription : février 2006
Messages : 17 363
Détails du profil
Informations personnelles :
Nom : Homme Olivier Lebeau
Âge : 47
Localisation : Belgique

Informations professionnelles :
Activité : Contrôleur d'industrie
Secteur : Aéronautique - Marine - Espace - Armement

Informations forums :
Inscription : février 2006
Messages : 17 363
Points : 29 284
Points : 29 284
Je ne vois pas d'où pourrais venir le problème.

en Pas à Pas, ça donne quoi ?
__________________
J'ai pas encore de décodeur, alors, postez en clair ! Comment mettre une balise de code ?
Débutez en VBA

Mes articles


Dans un MP, vous pouvez me dire que je suis beau, ... mais si c'est une question technique je ne la lis pas ! Vous êtes prévenus !
Heureux-oli est actuellement connecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2008, 08h04   #5
Candidat au titre de Membre du Club
 
Inscription : avril 2006
Messages : 43
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 43
Points : 10
Points : 10
Aucune erreur, en mode normal en mettant un break point dans le onChange je vois clairement qu'il passe 2 fois dedans, je vais voir pour isoler la ligne qui cause le problème.
LePhasme est déconnecté   Envoyer un message privé Réponse avec citation 00
Vieux 15/05/2008, 10h51   #6
Candidat au titre de Membre du Club
 
Inscription : avril 2006
Messages : 43
Détails du profil
Informations forums :
Inscription : avril 2006
Messages : 43
Points : 10
Points : 10
Bon bah ce bug s'est résolu tout seul, je comprend rien.

A part ajouter une ligne blanche dans le code après l'instruction qui cause le 2eme appel du onchange j'ai rien fait...
LePhasme 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 16h41.


 
 
 
 
Partenaires

Hébergement Web