Access - plante si annuler prévisualisation d'un état
Bonjour,
Sous Access, je dois créer différentes factures pour le versement de loyers mensuels :
- Facture, Rappel 1, Rappel 2, Sommation.
Les états de ces factures sont appelés depuis un formulaire, nommé Loyers_Facturation_F. Le choix entre facture, rap1, rap2 et sommation se fait dans le formulaire par un sélecteur à 4 touches qui renvoie une valeur donnée.
Pour la visualisation et pour l’impression, j’ai dans le formulaire deux boutons, un pour l’aperçu et un pour l’impression directe. Voici le code, pour l’aperçu et l’impression directe, qui permet le choix entre les différentes factures en fonction de la valeur renvoyée par la variable « Selecteur » :
Option Compare Database
'
'-------------------------------------------------------------------------------------------------100
' Bouton de commande "Aperçu QR facture"
'-------------------------------------------------------------------------------------------------100
'
' On Error Resume Next
'
Private Sub Commande47_Click() ' "Aperçu QR facture"
'
Dim Selecteur As Integer
'
Selecteur = Forms.Loyers_facturation_F.FactRap
If Selecteur = 5 Then
DoCmd.OpenReport "Loyers_Facture_E", acViewPreview
ElseIf Selecteur = 4 Then
DoCmd.OpenReport "Loyers_Rap1_E", acViewPreview
ElseIf Selecteur = 3 Then
DoCmd.OpenReport "Loyers_Rap2_E", acViewPreview
ElseIf Selecteur = 2 Then
DoCmd.OpenReport "Loyers_Sommation_E", acViewPreview
Else
End If
'
End Sub
'
'-------------------------------------------------------------------------------------------------100
' Bouton de commande "Imprimer QR facture"
'-------------------------------------------------------------------------------------------------100
'
Private Sub Commande48_Click() ' "Imprimer QR facture"
'
Dim Selecteur As Integer
'
Selecteur = Forms.Loyers_facturation_F.FactRap
If Selecteur = 5 Then
DoCmd.OpenReport "Loyers_Facture_E", acViewNormal
ElseIf Selecteur = 4 Then
DoCmd.OpenReport "Loyers_Rap1_E", acViewNormal
ElseIf Selecteur = 3 Then
DoCmd.OpenReport "Loyers_Rap2_E", acViewNormal
ElseIf Selecteur = 2 Then
DoCmd.OpenReport "Loyers_Sommation_E", acViewNormal
Else
End If
'
End Sub
Tout fonctionne bien.
Le problème est que si j’annule l’aperçu ou l’impression (par « Annuler »), le code plante ! Si j’utilise la base au format accdr au lieu de accdb, c’est toute la base qui plante. La plantée se fait ici :
Etant peu expérimenté en prog, je ne sais pas comment résoudre ce problème.
Est-ce que quelqu’un pourrait me guider ?
Par avance, merci.
Bonjour Latterro
Je pense que vous pouvez faire un "On Error Goto"
Private Sub Commande47_Click() ' "Aperçu QR facture"
Dim Selecteur As Integer
Selecteur = Forms.Loyers_facturation_F.FactRap
' En cas d'erreur on termine la procédure
On Error GoTo FinProc
'
If Selecteur = 5 Then
DoCmd.OpenReport "Loyers_Facture_E", acViewPreview
End If
If Selecteur = 4 Then
DoCmd.OpenReport "Loyers_Rap1_E", acViewPreview
End If
If Selecteur = 3 Then
DoCmd.OpenReport "Loyers_Rap2_E", acViewPreview
End If
If Selecteur = 2 Then
DoCmd.OpenReport "Loyers_Sommation_E", acViewPreview
End If
FinProc:
If Err.Number <> 0 Then Err.Clear
End Sub
A+
Bonjour Bruno,
Oui, ça fonctionne, c'est génial, un grand merci.
J'ai vu que vous avez remplacé les ElseIf par des EndIf. Y a-t-il une raison pratique à cela ou est-ce que c'est équivalent (dans ce cas) ?
Re,
C'est juste pour ma lecture et pour éviter les erreurs
A+