Bonjour la Communauté,
Migré depuis peu de Office XP vers Office 2007 SP2, j'ai quelques
soucis avec mes applis Access et Excel.
Celles-ci fonctionnent trés bien sous XP, mais sous 2007, j'obtiens
des codes erreur dans l'objet Err, alors que le code ne se plante pas
même en désactivant le contrôle d'erreur!!
Or donc, le code listé ci-dessous est là pour:
- Créer un RecordSet basé sur le contenu d'une table attachée
contenant un seul enregistrement.
Cette table attachée peut ne plus être valide, ce qui est normal
dans le cadre de l'exploitation de cette base.
Donc
- Si la création du RecordSet génère une erreur, il est probable que
la table attachée ne soit plus valide (lien rompu), dans ce cas,
j'alerte l'utilisateur et le dirige vers un formulaire permettant de
rétablir tous les liens de la base de données
- Si la création du RecordSet ne génère pas d'erreur, je traite
l'enregistrement.
D'où le code suivant.
01 Function InitCodeCentraleTraitée() As Boolean
02 ' Initialiser le Code Centrale exécutant l'application
03 ' Initialiser les variables globales
04 Dim frd As Recordset
05 Dim Fnct As Boolean
06 InitCodeCentraleTraitée = False
07 On Error Resume Next
08 Err.Clear
09 Set frd = CurrentDb.OpenRecordset("SELECT * FROM Centrales WHERE
[Centrale traitée] = True", dbOpenSnapshot)
10 If Err <> 0 Then
11 MsgBox "Impossible de trouver la table 'Centrales'. L'attache de
table est certainement incorrecte." & Chr$(10) & Chr$(13) &
Err.Description, vbCritical + vbOKOnly, SMT_NOMAPPLICATION
12 DoCmd.OpenForm "Menu Attacher Tables", acNormal, , , ,
acWindowNormal
13 GoTo InitCodeCentraleTraitée_Fin
14 End If
15 On Error GoTo 0
16 If frd.BOF Then
17 CodeCentraleTraitée = 0 'Non défini
18 MsgBox "Le Code Centrale Traitée n'est pas défini." & Chr$(10) &
Chr$(13) & "Veuillez modifier ce paramètre dans la table
'Centrales'.", vbCritical + vbOKOnly, SMT_NOMAPPLICATION
19 GoTo InitCodeCentraleTraitée_Fin
20 End If
21 Fnct = InitVariablesGlobales()
22 InitCodeCentraleTraitée = True
23 CodeCentraleTraitée = frd.Fields("Code_centrale")
24 InitCodeCentraleTraitée_Fin:
25 frd.Close
26 Set frd = Nothing
27 End Function
Mon problème se situe en ligne 09.
La variable frd est bien initialisée, je l'ai vérifié par des ?
frd.fields(1).value dans la fenêtre Exécution de VBA.
Or l'objet Err prend la valeur 91 - Variable objet ou variable de bloc
With non définie!!!!
Si je place un point d'arrêt sur la ligne 09, exécutant le Set, et que
je continue en pas à pas, je n'obtiens pas l'erreur!
Si je place mon point d'arrêt sur la ligne 10, soit après l'exécution
du Set, j'obtiens l'erreur.
Un Debug.Print Err.Number, Err.Description juste avant le Set donne
comme résultat "0".
C'est donc bien le Set qui déclenche l'erreur, mais il ne plante pas.
J'ai un comportement similaire dans Excel.
Je me suis tourné vers nos amis Excelliens mais je n'ai pas obtenu de
réponse expliquant le problème.
On Error Resume Next
For intL = 3 To 15 Step 3
Err.Clear
.Cells(RngFind.Row, 33 + intL) = CDbl(Me.Controls ("TbxProPvc1" &
Format(CStr(intL), "00"))) <<--- Génère l'erreur
If Err.Number <> 0 Then
MsgBox "Donnée incorrecte.", vbExclamation + vbOKOnly,
ETPP_NomApplication
Me.Controls("TbxProPvc1" & Format(CStr(intL),"00")).SetFocus
GoTo Restituer_Fin
End If
Next intL
L'interception d'erreur n'est la que au cas où!
En effet, sans le On Error Resume Next, le code se déroule sans
problème, du fait que je réalise le maximum de vérification en amont.
Pas de plantage et cependant, l'objet Err prend la valeur 9 - L'indice
n'appartient pas à la sélection.
Ma question: Pourquoi le code ne plante alors que l'objet Err restitue
un code erreur?
Si vous avez des idées je suis preneur.
D'avance merci et bon code.
Cordialement.
.
Bonjour la Communauté,
Migré depuis peu de Office XP vers Office 2007 SP2, j'ai quelques
soucis avec mes applis Access et Excel.
Celles-ci fonctionnent trés bien sous XP, mais sous 2007, j'obtiens
des codes erreur dans l'objet Err, alors que le code ne se plante pas
même en désactivant le contrôle d'erreur!!
Or donc, le code listé ci-dessous est là pour:
- Créer un RecordSet basé sur le contenu d'une table attachée
contenant un seul enregistrement.
Cette table attachée peut ne plus être valide, ce qui est normal
dans le cadre de l'exploitation de cette base.
Donc
- Si la création du RecordSet génère une erreur, il est probable que
la table attachée ne soit plus valide (lien rompu), dans ce cas,
j'alerte l'utilisateur et le dirige vers un formulaire permettant de
rétablir tous les liens de la base de données
- Si la création du RecordSet ne génère pas d'erreur, je traite
l'enregistrement.
D'où le code suivant.
01 Function InitCodeCentraleTraitée() As Boolean
02 ' Initialiser le Code Centrale exécutant l'application
03 ' Initialiser les variables globales
04 Dim frd As Recordset
05 Dim Fnct As Boolean
06 InitCodeCentraleTraitée = False
07 On Error Resume Next
08 Err.Clear
09 Set frd = CurrentDb.OpenRecordset("SELECT * FROM Centrales WHERE
[Centrale traitée] = True", dbOpenSnapshot)
10 If Err <> 0 Then
11 MsgBox "Impossible de trouver la table 'Centrales'. L'attache de
table est certainement incorrecte." & Chr$(10) & Chr$(13) &
Err.Description, vbCritical + vbOKOnly, SMT_NOMAPPLICATION
12 DoCmd.OpenForm "Menu Attacher Tables", acNormal, , , ,
acWindowNormal
13 GoTo InitCodeCentraleTraitée_Fin
14 End If
15 On Error GoTo 0
16 If frd.BOF Then
17 CodeCentraleTraitée = 0 'Non défini
18 MsgBox "Le Code Centrale Traitée n'est pas défini." & Chr$(10) &
Chr$(13) & "Veuillez modifier ce paramètre dans la table
'Centrales'.", vbCritical + vbOKOnly, SMT_NOMAPPLICATION
19 GoTo InitCodeCentraleTraitée_Fin
20 End If
21 Fnct = InitVariablesGlobales()
22 InitCodeCentraleTraitée = True
23 CodeCentraleTraitée = frd.Fields("Code_centrale")
24 InitCodeCentraleTraitée_Fin:
25 frd.Close
26 Set frd = Nothing
27 End Function
Mon problème se situe en ligne 09.
La variable frd est bien initialisée, je l'ai vérifié par des ?
frd.fields(1).value dans la fenêtre Exécution de VBA.
Or l'objet Err prend la valeur 91 - Variable objet ou variable de bloc
With non définie!!!!
Si je place un point d'arrêt sur la ligne 09, exécutant le Set, et que
je continue en pas à pas, je n'obtiens pas l'erreur!
Si je place mon point d'arrêt sur la ligne 10, soit après l'exécution
du Set, j'obtiens l'erreur.
Un Debug.Print Err.Number, Err.Description juste avant le Set donne
comme résultat "0".
C'est donc bien le Set qui déclenche l'erreur, mais il ne plante pas.
J'ai un comportement similaire dans Excel.
Je me suis tourné vers nos amis Excelliens mais je n'ai pas obtenu de
réponse expliquant le problème.
On Error Resume Next
For intL = 3 To 15 Step 3
Err.Clear
.Cells(RngFind.Row, 33 + intL) = CDbl(Me.Controls ("TbxProPvc1" &
Format(CStr(intL), "00"))) <<--- Génère l'erreur
If Err.Number <> 0 Then
MsgBox "Donnée incorrecte.", vbExclamation + vbOKOnly,
ETPP_NomApplication
Me.Controls("TbxProPvc1" & Format(CStr(intL),"00")).SetFocus
GoTo Restituer_Fin
End If
Next intL
L'interception d'erreur n'est la que au cas où!
En effet, sans le On Error Resume Next, le code se déroule sans
problème, du fait que je réalise le maximum de vérification en amont.
Pas de plantage et cependant, l'objet Err prend la valeur 9 - L'indice
n'appartient pas à la sélection.
Ma question: Pourquoi le code ne plante alors que l'objet Err restitue
un code erreur?
Si vous avez des idées je suis preneur.
D'avance merci et bon code.
Cordialement.
.
Bonjour la Communauté,
Migré depuis peu de Office XP vers Office 2007 SP2, j'ai quelques
soucis avec mes applis Access et Excel.
Celles-ci fonctionnent trés bien sous XP, mais sous 2007, j'obtiens
des codes erreur dans l'objet Err, alors que le code ne se plante pas
même en désactivant le contrôle d'erreur!!
Or donc, le code listé ci-dessous est là pour:
- Créer un RecordSet basé sur le contenu d'une table attachée
contenant un seul enregistrement.
Cette table attachée peut ne plus être valide, ce qui est normal
dans le cadre de l'exploitation de cette base.
Donc
- Si la création du RecordSet génère une erreur, il est probable que
la table attachée ne soit plus valide (lien rompu), dans ce cas,
j'alerte l'utilisateur et le dirige vers un formulaire permettant de
rétablir tous les liens de la base de données
- Si la création du RecordSet ne génère pas d'erreur, je traite
l'enregistrement.
D'où le code suivant.
01 Function InitCodeCentraleTraitée() As Boolean
02 ' Initialiser le Code Centrale exécutant l'application
03 ' Initialiser les variables globales
04 Dim frd As Recordset
05 Dim Fnct As Boolean
06 InitCodeCentraleTraitée = False
07 On Error Resume Next
08 Err.Clear
09 Set frd = CurrentDb.OpenRecordset("SELECT * FROM Centrales WHERE
[Centrale traitée] = True", dbOpenSnapshot)
10 If Err <> 0 Then
11 MsgBox "Impossible de trouver la table 'Centrales'. L'attache de
table est certainement incorrecte." & Chr$(10) & Chr$(13) &
Err.Description, vbCritical + vbOKOnly, SMT_NOMAPPLICATION
12 DoCmd.OpenForm "Menu Attacher Tables", acNormal, , , ,
acWindowNormal
13 GoTo InitCodeCentraleTraitée_Fin
14 End If
15 On Error GoTo 0
16 If frd.BOF Then
17 CodeCentraleTraitée = 0 'Non défini
18 MsgBox "Le Code Centrale Traitée n'est pas défini." & Chr$(10) &
Chr$(13) & "Veuillez modifier ce paramètre dans la table
'Centrales'.", vbCritical + vbOKOnly, SMT_NOMAPPLICATION
19 GoTo InitCodeCentraleTraitée_Fin
20 End If
21 Fnct = InitVariablesGlobales()
22 InitCodeCentraleTraitée = True
23 CodeCentraleTraitée = frd.Fields("Code_centrale")
24 InitCodeCentraleTraitée_Fin:
25 frd.Close
26 Set frd = Nothing
27 End Function
Mon problème se situe en ligne 09.
La variable frd est bien initialisée, je l'ai vérifié par des ?
frd.fields(1).value dans la fenêtre Exécution de VBA.
Or l'objet Err prend la valeur 91 - Variable objet ou variable de bloc
With non définie!!!!
Si je place un point d'arrêt sur la ligne 09, exécutant le Set, et que
je continue en pas à pas, je n'obtiens pas l'erreur!
Si je place mon point d'arrêt sur la ligne 10, soit après l'exécution
du Set, j'obtiens l'erreur.
Un Debug.Print Err.Number, Err.Description juste avant le Set donne
comme résultat "0".
C'est donc bien le Set qui déclenche l'erreur, mais il ne plante pas.
J'ai un comportement similaire dans Excel.
Je me suis tourné vers nos amis Excelliens mais je n'ai pas obtenu de
réponse expliquant le problème.
On Error Resume Next
For intL = 3 To 15 Step 3
Err.Clear
.Cells(RngFind.Row, 33 + intL) = CDbl(Me.Controls ("TbxProPvc1" &
Format(CStr(intL), "00"))) <<--- Génère l'erreur
If Err.Number <> 0 Then
MsgBox "Donnée incorrecte.", vbExclamation + vbOKOnly,
ETPP_NomApplication
Me.Controls("TbxProPvc1" & Format(CStr(intL),"00")).SetFocus
GoTo Restituer_Fin
End If
Next intL
L'interception d'erreur n'est la que au cas où!
En effet, sans le On Error Resume Next, le code se déroule sans
problème, du fait que je réalise le maximum de vérification en amont.
Pas de plantage et cependant, l'objet Err prend la valeur 9 - L'indice
n'appartient pas à la sélection.
Ma question: Pourquoi le code ne plante alors que l'objet Err restitue
un code erreur?
Si vous avez des idées je suis preneur.
D'avance merci et bon code.
Cordialement.
.
Possiblement un problème de compilation ou de référence. Vérif iez la liste
de vos références mais d'abord, prenez soin de décompiler au comple t votre
fichier MDB ou ACCDB lorsque vous le transférez d'Access 2000 vers 2007 :
changer la liste des références en ajoutant une référence bidon/i nutile
(vous pouvez l'enlever plus tard) ce qui va forcer Access à recompiler tous
les modules ou créer un shortcut avec les options suivantes et utilisez -le
pour décompiler votre fichier:
/decompile /compact /repair
--
Sylvain Lafontaine, ing.
MVP pour « Windows Live Platform »
Blogue/site web:http://paparazzi-codeur.sylvainlafontaine.com
Consultant indépendant et programmation à distance pour Access et
SQL-Server.
"ElXav" wrote in message
news:
Bonjour la Communauté,
Migré depuis peu de Office XP vers Office 2007 SP2, j'ai quelques
soucis avec mes applis Access et Excel.
Celles-ci fonctionnent trés bien sous XP, mais sous 2007, j'obtiens
des codes erreur dans l'objet Err, alors que le code ne se plante pas
même en désactivant le contrôle d'erreur!!
Or donc, le code listé ci-dessous est là pour:
- Créer un RecordSet basé sur le contenu d'une table attachée
contenant un seul enregistrement.
Cette table attachée peut ne plus être valide, ce qui est nor mal
dans le cadre de l'exploitation de cette base.
Donc
- Si la création du RecordSet génère une erreur, il est probabl e que
la table attachée ne soit plus valide (lien rompu), dans ce cas,
j'alerte l'utilisateur et le dirige vers un formulaire permettant de
rétablir tous les liens de la base de données
- Si la création du RecordSet ne génère pas d'erreur, je traite
l'enregistrement.
D'où le code suivant.
01 Function InitCodeCentraleTraitée() As Boolean
02 ' Initialiser le Code Centrale exécutant l'application
03 ' Initialiser les variables globales
04 Dim frd As Recordset
05 Dim Fnct As Boolean
06 InitCodeCentraleTraitée = False
07 On Error Resume Next
08 Err.Clear
09 Set frd = CurrentDb.OpenRecordset("SELECT * FROM Centrales WHERE
[Centrale traitée] = True", dbOpenSnapshot)
10 If Err <> 0 Then
11 MsgBox "Impossible de trouver la table 'Centrales'. L'attache d e
table est certainement incorrecte." & Chr$(10) & Chr$(13) &
Err.Description, vbCritical + vbOKOnly, SMT_NOMAPPLICATION
12 DoCmd.OpenForm "Menu Attacher Tables", acNormal, , , ,
acWindowNormal
13 GoTo InitCodeCentraleTraitée_Fin
14 End If
15 On Error GoTo 0
16 If frd.BOF Then
17 CodeCentraleTraitée = 0 'Non défini
18 MsgBox "Le Code Centrale Traitée n'est pas défini." & Chr$( 10) &
Chr$(13) & "Veuillez modifier ce paramètre dans la table
'Centrales'.", vbCritical + vbOKOnly, SMT_NOMAPPLICATION
19 GoTo InitCodeCentraleTraitée_Fin
20 End If
21 Fnct = InitVariablesGlobales()
22 InitCodeCentraleTraitée = True
23 CodeCentraleTraitée = frd.Fields("Code_centrale")
24 InitCodeCentraleTraitée_Fin:
25 frd.Close
26 Set frd = Nothing
27 End Function
Mon problème se situe en ligne 09.
La variable frd est bien initialisée, je l'ai vérifié par des ?
frd.fields(1).value dans la fenêtre Exécution de VBA.
Or l'objet Err prend la valeur 91 - Variable objet ou variable de bloc
With non définie!!!!
Si je place un point d'arrêt sur la ligne 09, exécutant le Set, et qu e
je continue en pas à pas, je n'obtiens pas l'erreur!
Si je place mon point d'arrêt sur la ligne 10, soit après l'exécuti on
du Set, j'obtiens l'erreur.
Un Debug.Print Err.Number, Err.Description juste avant le Set donne
comme résultat "0".
C'est donc bien le Set qui déclenche l'erreur, mais il ne plante pas.
J'ai un comportement similaire dans Excel.
Je me suis tourné vers nos amis Excelliens mais je n'ai pas obtenu de
réponse expliquant le problème.
On Error Resume Next
For intL = 3 To 15 Step 3
Err.Clear
.Cells(RngFind.Row, 33 + intL) = CDbl(Me.Controls ("TbxProPvc1" &
Format(CStr(intL), "00"))) <<--- Génère l'erreur
If Err.Number <> 0 Then
MsgBox "Donnée incorrecte.", vbExclamation + vbOKOnly,
ETPP_NomApplication
Me.Controls("TbxProPvc1" & Format(CStr(intL),"00")).SetFocus
GoTo Restituer_Fin
End If
Next intL
L'interception d'erreur n'est la que au cas où!
En effet, sans le On Error Resume Next, le code se déroule sans
problème, du fait que je réalise le maximum de vérification en amon t.
Pas de plantage et cependant, l'objet Err prend la valeur 9 - L'indice
n'appartient pas à la sélection.
Ma question: Pourquoi le code ne plante alors que l'objet Err restitue
un code erreur?
Si vous avez des idées je suis preneur.
D'avance merci et bon code.
Cordialement.
Possiblement un problème de compilation ou de référence. Vérif iez la liste
de vos références mais d'abord, prenez soin de décompiler au comple t votre
fichier MDB ou ACCDB lorsque vous le transférez d'Access 2000 vers 2007 :
changer la liste des références en ajoutant une référence bidon/i nutile
(vous pouvez l'enlever plus tard) ce qui va forcer Access à recompiler tous
les modules ou créer un shortcut avec les options suivantes et utilisez -le
pour décompiler votre fichier:
/decompile /compact /repair
--
Sylvain Lafontaine, ing.
MVP pour « Windows Live Platform »
Blogue/site web:http://paparazzi-codeur.sylvainlafontaine.com
Consultant indépendant et programmation à distance pour Access et
SQL-Server.
"ElXav" <el...@free.fr> wrote in message
news:b38bc028-0738-420f-a4c2-71f2cf60da94@o30g2000yqb.googlegroups.com...
Bonjour la Communauté,
Migré depuis peu de Office XP vers Office 2007 SP2, j'ai quelques
soucis avec mes applis Access et Excel.
Celles-ci fonctionnent trés bien sous XP, mais sous 2007, j'obtiens
des codes erreur dans l'objet Err, alors que le code ne se plante pas
même en désactivant le contrôle d'erreur!!
Or donc, le code listé ci-dessous est là pour:
- Créer un RecordSet basé sur le contenu d'une table attachée
contenant un seul enregistrement.
Cette table attachée peut ne plus être valide, ce qui est nor mal
dans le cadre de l'exploitation de cette base.
Donc
- Si la création du RecordSet génère une erreur, il est probabl e que
la table attachée ne soit plus valide (lien rompu), dans ce cas,
j'alerte l'utilisateur et le dirige vers un formulaire permettant de
rétablir tous les liens de la base de données
- Si la création du RecordSet ne génère pas d'erreur, je traite
l'enregistrement.
D'où le code suivant.
01 Function InitCodeCentraleTraitée() As Boolean
02 ' Initialiser le Code Centrale exécutant l'application
03 ' Initialiser les variables globales
04 Dim frd As Recordset
05 Dim Fnct As Boolean
06 InitCodeCentraleTraitée = False
07 On Error Resume Next
08 Err.Clear
09 Set frd = CurrentDb.OpenRecordset("SELECT * FROM Centrales WHERE
[Centrale traitée] = True", dbOpenSnapshot)
10 If Err <> 0 Then
11 MsgBox "Impossible de trouver la table 'Centrales'. L'attache d e
table est certainement incorrecte." & Chr$(10) & Chr$(13) &
Err.Description, vbCritical + vbOKOnly, SMT_NOMAPPLICATION
12 DoCmd.OpenForm "Menu Attacher Tables", acNormal, , , ,
acWindowNormal
13 GoTo InitCodeCentraleTraitée_Fin
14 End If
15 On Error GoTo 0
16 If frd.BOF Then
17 CodeCentraleTraitée = 0 'Non défini
18 MsgBox "Le Code Centrale Traitée n'est pas défini." & Chr$( 10) &
Chr$(13) & "Veuillez modifier ce paramètre dans la table
'Centrales'.", vbCritical + vbOKOnly, SMT_NOMAPPLICATION
19 GoTo InitCodeCentraleTraitée_Fin
20 End If
21 Fnct = InitVariablesGlobales()
22 InitCodeCentraleTraitée = True
23 CodeCentraleTraitée = frd.Fields("Code_centrale")
24 InitCodeCentraleTraitée_Fin:
25 frd.Close
26 Set frd = Nothing
27 End Function
Mon problème se situe en ligne 09.
La variable frd est bien initialisée, je l'ai vérifié par des ?
frd.fields(1).value dans la fenêtre Exécution de VBA.
Or l'objet Err prend la valeur 91 - Variable objet ou variable de bloc
With non définie!!!!
Si je place un point d'arrêt sur la ligne 09, exécutant le Set, et qu e
je continue en pas à pas, je n'obtiens pas l'erreur!
Si je place mon point d'arrêt sur la ligne 10, soit après l'exécuti on
du Set, j'obtiens l'erreur.
Un Debug.Print Err.Number, Err.Description juste avant le Set donne
comme résultat "0".
C'est donc bien le Set qui déclenche l'erreur, mais il ne plante pas.
J'ai un comportement similaire dans Excel.
Je me suis tourné vers nos amis Excelliens mais je n'ai pas obtenu de
réponse expliquant le problème.
On Error Resume Next
For intL = 3 To 15 Step 3
Err.Clear
.Cells(RngFind.Row, 33 + intL) = CDbl(Me.Controls ("TbxProPvc1" &
Format(CStr(intL), "00"))) <<--- Génère l'erreur
If Err.Number <> 0 Then
MsgBox "Donnée incorrecte.", vbExclamation + vbOKOnly,
ETPP_NomApplication
Me.Controls("TbxProPvc1" & Format(CStr(intL),"00")).SetFocus
GoTo Restituer_Fin
End If
Next intL
L'interception d'erreur n'est la que au cas où!
En effet, sans le On Error Resume Next, le code se déroule sans
problème, du fait que je réalise le maximum de vérification en amon t.
Pas de plantage et cependant, l'objet Err prend la valeur 9 - L'indice
n'appartient pas à la sélection.
Ma question: Pourquoi le code ne plante alors que l'objet Err restitue
un code erreur?
Si vous avez des idées je suis preneur.
D'avance merci et bon code.
Cordialement.
Possiblement un problème de compilation ou de référence. Vérif iez la liste
de vos références mais d'abord, prenez soin de décompiler au comple t votre
fichier MDB ou ACCDB lorsque vous le transférez d'Access 2000 vers 2007 :
changer la liste des références en ajoutant une référence bidon/i nutile
(vous pouvez l'enlever plus tard) ce qui va forcer Access à recompiler tous
les modules ou créer un shortcut avec les options suivantes et utilisez -le
pour décompiler votre fichier:
/decompile /compact /repair
--
Sylvain Lafontaine, ing.
MVP pour « Windows Live Platform »
Blogue/site web:http://paparazzi-codeur.sylvainlafontaine.com
Consultant indépendant et programmation à distance pour Access et
SQL-Server.
"ElXav" wrote in message
news:
Bonjour la Communauté,
Migré depuis peu de Office XP vers Office 2007 SP2, j'ai quelques
soucis avec mes applis Access et Excel.
Celles-ci fonctionnent trés bien sous XP, mais sous 2007, j'obtiens
des codes erreur dans l'objet Err, alors que le code ne se plante pas
même en désactivant le contrôle d'erreur!!
Or donc, le code listé ci-dessous est là pour:
- Créer un RecordSet basé sur le contenu d'une table attachée
contenant un seul enregistrement.
Cette table attachée peut ne plus être valide, ce qui est nor mal
dans le cadre de l'exploitation de cette base.
Donc
- Si la création du RecordSet génère une erreur, il est probabl e que
la table attachée ne soit plus valide (lien rompu), dans ce cas,
j'alerte l'utilisateur et le dirige vers un formulaire permettant de
rétablir tous les liens de la base de données
- Si la création du RecordSet ne génère pas d'erreur, je traite
l'enregistrement.
D'où le code suivant.
01 Function InitCodeCentraleTraitée() As Boolean
02 ' Initialiser le Code Centrale exécutant l'application
03 ' Initialiser les variables globales
04 Dim frd As Recordset
05 Dim Fnct As Boolean
06 InitCodeCentraleTraitée = False
07 On Error Resume Next
08 Err.Clear
09 Set frd = CurrentDb.OpenRecordset("SELECT * FROM Centrales WHERE
[Centrale traitée] = True", dbOpenSnapshot)
10 If Err <> 0 Then
11 MsgBox "Impossible de trouver la table 'Centrales'. L'attache d e
table est certainement incorrecte." & Chr$(10) & Chr$(13) &
Err.Description, vbCritical + vbOKOnly, SMT_NOMAPPLICATION
12 DoCmd.OpenForm "Menu Attacher Tables", acNormal, , , ,
acWindowNormal
13 GoTo InitCodeCentraleTraitée_Fin
14 End If
15 On Error GoTo 0
16 If frd.BOF Then
17 CodeCentraleTraitée = 0 'Non défini
18 MsgBox "Le Code Centrale Traitée n'est pas défini." & Chr$( 10) &
Chr$(13) & "Veuillez modifier ce paramètre dans la table
'Centrales'.", vbCritical + vbOKOnly, SMT_NOMAPPLICATION
19 GoTo InitCodeCentraleTraitée_Fin
20 End If
21 Fnct = InitVariablesGlobales()
22 InitCodeCentraleTraitée = True
23 CodeCentraleTraitée = frd.Fields("Code_centrale")
24 InitCodeCentraleTraitée_Fin:
25 frd.Close
26 Set frd = Nothing
27 End Function
Mon problème se situe en ligne 09.
La variable frd est bien initialisée, je l'ai vérifié par des ?
frd.fields(1).value dans la fenêtre Exécution de VBA.
Or l'objet Err prend la valeur 91 - Variable objet ou variable de bloc
With non définie!!!!
Si je place un point d'arrêt sur la ligne 09, exécutant le Set, et qu e
je continue en pas à pas, je n'obtiens pas l'erreur!
Si je place mon point d'arrêt sur la ligne 10, soit après l'exécuti on
du Set, j'obtiens l'erreur.
Un Debug.Print Err.Number, Err.Description juste avant le Set donne
comme résultat "0".
C'est donc bien le Set qui déclenche l'erreur, mais il ne plante pas.
J'ai un comportement similaire dans Excel.
Je me suis tourné vers nos amis Excelliens mais je n'ai pas obtenu de
réponse expliquant le problème.
On Error Resume Next
For intL = 3 To 15 Step 3
Err.Clear
.Cells(RngFind.Row, 33 + intL) = CDbl(Me.Controls ("TbxProPvc1" &
Format(CStr(intL), "00"))) <<--- Génère l'erreur
If Err.Number <> 0 Then
MsgBox "Donnée incorrecte.", vbExclamation + vbOKOnly,
ETPP_NomApplication
Me.Controls("TbxProPvc1" & Format(CStr(intL),"00")).SetFocus
GoTo Restituer_Fin
End If
Next intL
L'interception d'erreur n'est la que au cas où!
En effet, sans le On Error Resume Next, le code se déroule sans
problème, du fait que je réalise le maximum de vérification en amon t.
Pas de plantage et cependant, l'objet Err prend la valeur 9 - L'indice
n'appartient pas à la sélection.
Ma question: Pourquoi le code ne plante alors que l'objet Err restitue
un code erreur?
Si vous avez des idées je suis preneur.
D'avance merci et bon code.
Cordialement.
1/ Quels code d'erreur obtenez-vous ?
2/ Je vous suggère de ne pas utiliser le :
On Error Resume Next
Il est mal exploité ici et une vrai gestion d'erreur avec un On Error G oto...
serait mieux approprié et permettrait d'avoir un autre comportement :
3/ En complément des vérifications, s'assurer que vous avec bien DAO 3.6 et
seulement DAO 3.6 non couplé avec un ADO X.X (object library)
Bonjour,
1/ Quels code d'erreur obtenez-vous ?
Voir point 2 et adaptez en conséquence
2/ Je vous suggère de ne pas utiliser le :
On Error Resume Next
Il est mal exploité ici et une vrai gestion d'erreur avec un On Error G oto...
serait mieux approprié et permettrait d'avoir un autre comportement :
Const MODE_DEBUG = True
Dim frd As DAO.Recordset
Dim DB As DAO.Database
On Error Goto ErrHandler
Set DB = CurrentDB
Set frd = DB.OpenRecordset(...
....
....
frd.Close
DB.Close
ExitHandler :
If MODE_DEBUG Then
Stop 'S'arrête ici pour vérifie pourquoi...
Else
Exit Sub
End If
set frd = Nothing
set DB = Nothing
ErrHandler :
MsgBox Err.Description, 48, Err.Number
Resume ExitHandler
3/ En complément des vérifications, s'assurer que vous avec bien DAO 3.6 et
seulement DAO 3.6 non couplé avec un ADO X.X (object library)
--
Argyhttp://argyronet.developpez.com/
Créez des programmes avec Microsoft Access 2007 (ISBN 2742982442)
VBA pour Office 2007 (ISBN 2742983910)
"ElXav" wrote:
> Bonjour la Communauté,
> Migré depuis peu de Office XP vers Office 2007 SP2, j'ai quelques
> soucis avec mes applis Access et Excel.
> Celles-ci fonctionnent trés bien sous XP, mais sous 2007, j'obtiens
> des codes erreur dans l'objet Err, alors que le code ne se plante pas
> même en désactivant le contrôle d'erreur!!
> Or donc, le code listé ci-dessous est là pour:
> - Créer un RecordSet basé sur le contenu d'une table attachée
> contenant un seul enregistrement.
> Cette table attachée peut ne plus être valide, ce qui est n ormal
> dans le cadre de l'exploitation de cette base.
> Donc
> - Si la création du RecordSet génère une erreur, il est proba ble que
> la table attachée ne soit plus valide (lien rompu), dans ce cas,
> j'alerte l'utilisateur et le dirige vers un formulaire permettant de
> rétablir tous les liens de la base de données
> - Si la création du RecordSet ne génère pas d'erreur, je trai te
> l'enregistrement.
> D'où le code suivant.
> 01 Function InitCodeCentraleTraitée() As Boolean
> 02 ' Initialiser le Code Centrale exécutant l'application
> 03 ' Initialiser les variables globales
> 04 Dim frd As Recordset
> 05 Dim Fnct As Boolean
> 06 InitCodeCentraleTraitée = False
> 07 On Error Resume Next
> 08 Err.Clear
> 09 Set frd = CurrentDb.OpenRecordset("SELECT * FROM Centrales WHER E
> [Centrale traitée] = True", dbOpenSnapshot)
> 10 If Err <> 0 Then
> 11 MsgBox "Impossible de trouver la table 'Centrales'. L'attache de
> table est certainement incorrecte." & Chr$(10) & Chr$(13) &
> Err.Description, vbCritical + vbOKOnly, SMT_NOMAPPLICATION
> 12 DoCmd.OpenForm "Menu Attacher Tables", acNormal, , , ,
> acWindowNormal
> 13 GoTo InitCodeCentraleTraitée_Fin
> 14 End If
> 15 On Error GoTo 0
> 16 If frd.BOF Then
> 17 CodeCentraleTraitée = 0 'Non défini
> 18 MsgBox "Le Code Centrale Traitée n'est pas défini." & Chr $(10) &
> Chr$(13) & "Veuillez modifier ce paramètre dans la table
> 'Centrales'.", vbCritical + vbOKOnly, SMT_NOMAPPLICATION
> 19 GoTo InitCodeCentraleTraitée_Fin
> 20 End If
> 21 Fnct = InitVariablesGlobales()
> 22 InitCodeCentraleTraitée = True
> 23 CodeCentraleTraitée = frd.Fields("Code_centrale")
> 24 InitCodeCentraleTraitée_Fin:
> 25 frd.Close
> 26 Set frd = Nothing
> 27 End Function
> Mon problème se situe en ligne 09.
> La variable frd est bien initialisée, je l'ai vérifié par des ?
> frd.fields(1).value dans la fenêtre Exécution de VBA.
> Or l'objet Err prend la valeur 91 - Variable objet ou variable de bloc
> With non définie!!!!
> Si je place un point d'arrêt sur la ligne 09, exécutant le Set, et que
> je continue en pas à pas, je n'obtiens pas l'erreur!
> Si je place mon point d'arrêt sur la ligne 10, soit après l'exécu tion
> du Set, j'obtiens l'erreur.
> Un Debug.Print Err.Number, Err.Description juste avant le Set donne
> comme résultat "0".
> C'est donc bien le Set qui déclenche l'erreur, mais il ne plante pas.
> J'ai un comportement similaire dans Excel.
> Je me suis tourné vers nos amis Excelliens mais je n'ai pas obtenu de
> réponse expliquant le problème.
> On Error Resume Next
> For intL = 3 To 15 Step 3
> Err.Clear
> .Cells(RngFind.Row, 33 + intL) = CDbl(Me.Controls ("TbxProPvc1 " &
> Format(CStr(intL), "00"))) <<--- Génère l'erreur
> If Err.Number <> 0 Then
> MsgBox "Donnée incorrecte.", vbExclamation + vbOKOnly,
> ETPP_NomApplication
> Me.Controls("TbxProPvc1" & Format(CStr(intL),"00")).SetFocus
> GoTo Restituer_Fin
> End If
> Next intL
> L'interception d'erreur n'est la que au cas où!
> En effet, sans le On Error Resume Next, le code se déroule sans
> problème, du fait que je réalise le maximum de vérification en am ont.
> Pas de plantage et cependant, l'objet Err prend la valeur 9 - L'indice
> n'appartient pas à la sélection.
> Ma question: Pourquoi le code ne plante alors que l'objet Err restitue
> un code erreur?
> Si vous avez des idées je suis preneur.
> D'avance merci et bon code.
> Cordialement.
> .- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
1/ Quels code d'erreur obtenez-vous ?
2/ Je vous suggère de ne pas utiliser le :
On Error Resume Next
Il est mal exploité ici et une vrai gestion d'erreur avec un On Error G oto...
serait mieux approprié et permettrait d'avoir un autre comportement :
3/ En complément des vérifications, s'assurer que vous avec bien DAO 3.6 et
seulement DAO 3.6 non couplé avec un ADO X.X (object library)
Bonjour,
1/ Quels code d'erreur obtenez-vous ?
Voir point 2 et adaptez en conséquence
2/ Je vous suggère de ne pas utiliser le :
On Error Resume Next
Il est mal exploité ici et une vrai gestion d'erreur avec un On Error G oto...
serait mieux approprié et permettrait d'avoir un autre comportement :
Const MODE_DEBUG = True
Dim frd As DAO.Recordset
Dim DB As DAO.Database
On Error Goto ErrHandler
Set DB = CurrentDB
Set frd = DB.OpenRecordset(...
....
....
frd.Close
DB.Close
ExitHandler :
If MODE_DEBUG Then
Stop 'S'arrête ici pour vérifie pourquoi...
Else
Exit Sub
End If
set frd = Nothing
set DB = Nothing
ErrHandler :
MsgBox Err.Description, 48, Err.Number
Resume ExitHandler
3/ En complément des vérifications, s'assurer que vous avec bien DAO 3.6 et
seulement DAO 3.6 non couplé avec un ADO X.X (object library)
--
Argyhttp://argyronet.developpez.com/
Créez des programmes avec Microsoft Access 2007 (ISBN 2742982442)
VBA pour Office 2007 (ISBN 2742983910)
"ElXav" wrote:
> Bonjour la Communauté,
> Migré depuis peu de Office XP vers Office 2007 SP2, j'ai quelques
> soucis avec mes applis Access et Excel.
> Celles-ci fonctionnent trés bien sous XP, mais sous 2007, j'obtiens
> des codes erreur dans l'objet Err, alors que le code ne se plante pas
> même en désactivant le contrôle d'erreur!!
> Or donc, le code listé ci-dessous est là pour:
> - Créer un RecordSet basé sur le contenu d'une table attachée
> contenant un seul enregistrement.
> Cette table attachée peut ne plus être valide, ce qui est n ormal
> dans le cadre de l'exploitation de cette base.
> Donc
> - Si la création du RecordSet génère une erreur, il est proba ble que
> la table attachée ne soit plus valide (lien rompu), dans ce cas,
> j'alerte l'utilisateur et le dirige vers un formulaire permettant de
> rétablir tous les liens de la base de données
> - Si la création du RecordSet ne génère pas d'erreur, je trai te
> l'enregistrement.
> D'où le code suivant.
> 01 Function InitCodeCentraleTraitée() As Boolean
> 02 ' Initialiser le Code Centrale exécutant l'application
> 03 ' Initialiser les variables globales
> 04 Dim frd As Recordset
> 05 Dim Fnct As Boolean
> 06 InitCodeCentraleTraitée = False
> 07 On Error Resume Next
> 08 Err.Clear
> 09 Set frd = CurrentDb.OpenRecordset("SELECT * FROM Centrales WHER E
> [Centrale traitée] = True", dbOpenSnapshot)
> 10 If Err <> 0 Then
> 11 MsgBox "Impossible de trouver la table 'Centrales'. L'attache de
> table est certainement incorrecte." & Chr$(10) & Chr$(13) &
> Err.Description, vbCritical + vbOKOnly, SMT_NOMAPPLICATION
> 12 DoCmd.OpenForm "Menu Attacher Tables", acNormal, , , ,
> acWindowNormal
> 13 GoTo InitCodeCentraleTraitée_Fin
> 14 End If
> 15 On Error GoTo 0
> 16 If frd.BOF Then
> 17 CodeCentraleTraitée = 0 'Non défini
> 18 MsgBox "Le Code Centrale Traitée n'est pas défini." & Chr $(10) &
> Chr$(13) & "Veuillez modifier ce paramètre dans la table
> 'Centrales'.", vbCritical + vbOKOnly, SMT_NOMAPPLICATION
> 19 GoTo InitCodeCentraleTraitée_Fin
> 20 End If
> 21 Fnct = InitVariablesGlobales()
> 22 InitCodeCentraleTraitée = True
> 23 CodeCentraleTraitée = frd.Fields("Code_centrale")
> 24 InitCodeCentraleTraitée_Fin:
> 25 frd.Close
> 26 Set frd = Nothing
> 27 End Function
> Mon problème se situe en ligne 09.
> La variable frd est bien initialisée, je l'ai vérifié par des ?
> frd.fields(1).value dans la fenêtre Exécution de VBA.
> Or l'objet Err prend la valeur 91 - Variable objet ou variable de bloc
> With non définie!!!!
> Si je place un point d'arrêt sur la ligne 09, exécutant le Set, et que
> je continue en pas à pas, je n'obtiens pas l'erreur!
> Si je place mon point d'arrêt sur la ligne 10, soit après l'exécu tion
> du Set, j'obtiens l'erreur.
> Un Debug.Print Err.Number, Err.Description juste avant le Set donne
> comme résultat "0".
> C'est donc bien le Set qui déclenche l'erreur, mais il ne plante pas.
> J'ai un comportement similaire dans Excel.
> Je me suis tourné vers nos amis Excelliens mais je n'ai pas obtenu de
> réponse expliquant le problème.
> On Error Resume Next
> For intL = 3 To 15 Step 3
> Err.Clear
> .Cells(RngFind.Row, 33 + intL) = CDbl(Me.Controls ("TbxProPvc1 " &
> Format(CStr(intL), "00"))) <<--- Génère l'erreur
> If Err.Number <> 0 Then
> MsgBox "Donnée incorrecte.", vbExclamation + vbOKOnly,
> ETPP_NomApplication
> Me.Controls("TbxProPvc1" & Format(CStr(intL),"00")).SetFocus
> GoTo Restituer_Fin
> End If
> Next intL
> L'interception d'erreur n'est la que au cas où!
> En effet, sans le On Error Resume Next, le code se déroule sans
> problème, du fait que je réalise le maximum de vérification en am ont.
> Pas de plantage et cependant, l'objet Err prend la valeur 9 - L'indice
> n'appartient pas à la sélection.
> Ma question: Pourquoi le code ne plante alors que l'objet Err restitue
> un code erreur?
> Si vous avez des idées je suis preneur.
> D'avance merci et bon code.
> Cordialement.
> .- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -
1/ Quels code d'erreur obtenez-vous ?
2/ Je vous suggère de ne pas utiliser le :
On Error Resume Next
Il est mal exploité ici et une vrai gestion d'erreur avec un On Error G oto...
serait mieux approprié et permettrait d'avoir un autre comportement :
3/ En complément des vérifications, s'assurer que vous avec bien DAO 3.6 et
seulement DAO 3.6 non couplé avec un ADO X.X (object library)
Bonjour,
1/ Quels code d'erreur obtenez-vous ?
Voir point 2 et adaptez en conséquence
2/ Je vous suggère de ne pas utiliser le :
On Error Resume Next
Il est mal exploité ici et une vrai gestion d'erreur avec un On Error G oto...
serait mieux approprié et permettrait d'avoir un autre comportement :
Const MODE_DEBUG = True
Dim frd As DAO.Recordset
Dim DB As DAO.Database
On Error Goto ErrHandler
Set DB = CurrentDB
Set frd = DB.OpenRecordset(...
....
....
frd.Close
DB.Close
ExitHandler :
If MODE_DEBUG Then
Stop 'S'arrête ici pour vérifie pourquoi...
Else
Exit Sub
End If
set frd = Nothing
set DB = Nothing
ErrHandler :
MsgBox Err.Description, 48, Err.Number
Resume ExitHandler
3/ En complément des vérifications, s'assurer que vous avec bien DAO 3.6 et
seulement DAO 3.6 non couplé avec un ADO X.X (object library)
--
Argyhttp://argyronet.developpez.com/
Créez des programmes avec Microsoft Access 2007 (ISBN 2742982442)
VBA pour Office 2007 (ISBN 2742983910)
"ElXav" wrote:
> Bonjour la Communauté,
> Migré depuis peu de Office XP vers Office 2007 SP2, j'ai quelques
> soucis avec mes applis Access et Excel.
> Celles-ci fonctionnent trés bien sous XP, mais sous 2007, j'obtiens
> des codes erreur dans l'objet Err, alors que le code ne se plante pas
> même en désactivant le contrôle d'erreur!!
> Or donc, le code listé ci-dessous est là pour:
> - Créer un RecordSet basé sur le contenu d'une table attachée
> contenant un seul enregistrement.
> Cette table attachée peut ne plus être valide, ce qui est n ormal
> dans le cadre de l'exploitation de cette base.
> Donc
> - Si la création du RecordSet génère une erreur, il est proba ble que
> la table attachée ne soit plus valide (lien rompu), dans ce cas,
> j'alerte l'utilisateur et le dirige vers un formulaire permettant de
> rétablir tous les liens de la base de données
> - Si la création du RecordSet ne génère pas d'erreur, je trai te
> l'enregistrement.
> D'où le code suivant.
> 01 Function InitCodeCentraleTraitée() As Boolean
> 02 ' Initialiser le Code Centrale exécutant l'application
> 03 ' Initialiser les variables globales
> 04 Dim frd As Recordset
> 05 Dim Fnct As Boolean
> 06 InitCodeCentraleTraitée = False
> 07 On Error Resume Next
> 08 Err.Clear
> 09 Set frd = CurrentDb.OpenRecordset("SELECT * FROM Centrales WHER E
> [Centrale traitée] = True", dbOpenSnapshot)
> 10 If Err <> 0 Then
> 11 MsgBox "Impossible de trouver la table 'Centrales'. L'attache de
> table est certainement incorrecte." & Chr$(10) & Chr$(13) &
> Err.Description, vbCritical + vbOKOnly, SMT_NOMAPPLICATION
> 12 DoCmd.OpenForm "Menu Attacher Tables", acNormal, , , ,
> acWindowNormal
> 13 GoTo InitCodeCentraleTraitée_Fin
> 14 End If
> 15 On Error GoTo 0
> 16 If frd.BOF Then
> 17 CodeCentraleTraitée = 0 'Non défini
> 18 MsgBox "Le Code Centrale Traitée n'est pas défini." & Chr $(10) &
> Chr$(13) & "Veuillez modifier ce paramètre dans la table
> 'Centrales'.", vbCritical + vbOKOnly, SMT_NOMAPPLICATION
> 19 GoTo InitCodeCentraleTraitée_Fin
> 20 End If
> 21 Fnct = InitVariablesGlobales()
> 22 InitCodeCentraleTraitée = True
> 23 CodeCentraleTraitée = frd.Fields("Code_centrale")
> 24 InitCodeCentraleTraitée_Fin:
> 25 frd.Close
> 26 Set frd = Nothing
> 27 End Function
> Mon problème se situe en ligne 09.
> La variable frd est bien initialisée, je l'ai vérifié par des ?
> frd.fields(1).value dans la fenêtre Exécution de VBA.
> Or l'objet Err prend la valeur 91 - Variable objet ou variable de bloc
> With non définie!!!!
> Si je place un point d'arrêt sur la ligne 09, exécutant le Set, et que
> je continue en pas à pas, je n'obtiens pas l'erreur!
> Si je place mon point d'arrêt sur la ligne 10, soit après l'exécu tion
> du Set, j'obtiens l'erreur.
> Un Debug.Print Err.Number, Err.Description juste avant le Set donne
> comme résultat "0".
> C'est donc bien le Set qui déclenche l'erreur, mais il ne plante pas.
> J'ai un comportement similaire dans Excel.
> Je me suis tourné vers nos amis Excelliens mais je n'ai pas obtenu de
> réponse expliquant le problème.
> On Error Resume Next
> For intL = 3 To 15 Step 3
> Err.Clear
> .Cells(RngFind.Row, 33 + intL) = CDbl(Me.Controls ("TbxProPvc1 " &
> Format(CStr(intL), "00"))) <<--- Génère l'erreur
> If Err.Number <> 0 Then
> MsgBox "Donnée incorrecte.", vbExclamation + vbOKOnly,
> ETPP_NomApplication
> Me.Controls("TbxProPvc1" & Format(CStr(intL),"00")).SetFocus
> GoTo Restituer_Fin
> End If
> Next intL
> L'interception d'erreur n'est la que au cas où!
> En effet, sans le On Error Resume Next, le code se déroule sans
> problème, du fait que je réalise le maximum de vérification en am ont.
> Pas de plantage et cependant, l'objet Err prend la valeur 9 - L'indice
> n'appartient pas à la sélection.
> Ma question: Pourquoi le code ne plante alors que l'objet Err restitue
> un code erreur?
> Si vous avez des idées je suis preneur.
> D'avance merci et bon code.
> Cordialement.
> .- Masquer le texte des messages précédents -
- Afficher le texte des messages précédents -