Bonjour,

Dans ma base j'ai un formulaire intervention dans lequel j'ai un sous-formulaire détail. Lorsque je sélectionne les lignes du S/F Détail, je clique sur "transférer en facture" et la facture est créée. Le code que j'utilise est le suivant :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Private Sub Commande211_Click()
On Error GoTo Err_Commande211_Click
 
Dim NumFAC As String
Dim stDocName As String
 
    stDocName = "FORM-FACTURE FI"
    DoCmd.OpenForm stDocName, acNormal, "", "", acAdd, acNormal
 
    Forms![FORM-FACTURE FI]![ID_Devis] = IDDevis
    Forms![FORM-FACTURE FI]![id_FI] = IDFiche
    Forms![FORM-FACTURE FI]![ID_Client] = IDClient
    Forms![FORM-FACTURE FI]![ID_Site] = IDSites
    Forms![FORM-FACTURE FI]![ID_Analaytique] = IDAnalytique
    Forms![FORM-FACTURE FI]![ID_Categorie] = IDCategorie
    Forms![FORM-FACTURE FI]![Objet] = Observations
    Forms![FORM-FACTURE FI]![ID_TVA Double] = [TVA FI]
    Forms![FORM-FACTURE FI]![Texte] = Observ2
    Forms![FORM-FACTURE FI]![Type facture] = Typefacture
    Forms![FORM-FACTURE FI]![AcompteFI] = C - Acompte
    Forms![FORM-FACTURE FI].Refresh
 
 
    'Récupérer le numéro de fiche intervention en cours
    NumFAC = Forms![FORM-FACTURE FI]!IDFACTUREFI
 
    monsql = "INSERT INTO [RQ-DETAIL FAC] ([ID_Facture FI], ID_FI, [ID_ARTICLE], TVA, SOUSARTICLE, [PVHT Fac], [QteDetailFac])" _
        & " SELECT [Formulaires]![FORM-FACTURE FI]![IDFACTUREFI] AS NumFAC,[RQ-DETAIL FI].id_FI," _
        & " [RQ-DETAIL FI].id_article, [RQ-DETAIL FI].TVA, [RQ-DETAIL FI].SousArticle, [RQ-DETAIL FI].[PVHT FI], [RQ-DETAIL FI].[Qte DetailFI]" _
        & " From [RQ-DETAIL FI]" _
        & " WHERE [RQ-DETAIL FI].id_FI ='" & Me.IDFiche _
        & "' AND [RQ-DETAIL FI].[Select]=-1 AND [RQ-DETAIL FI].Facture=0;"
 
    DoCmd.RunSQL monsql
    monsql = "UPDATE [RQ-DETAIL FI] SET [RQ-DETAIL FI].Facture = -1" _
        & " WHERE [RQ-DETAIL FI].id_FI ='" & Me.IDFiche _
        & "' AND [RQ-DETAIL FI].[Select]=-1 AND [RQ-DETAIL FI].Facture=0;"
 
     DoCmd.RunSQL monsql
     Forms![FORM-FACTURE FI].[S/FORM-DETAIL FAC].Form.Requery
Exit_Commande211_Click:
    Exit Sub
 
Err_Commande211_Click:
    MsgBox Err.Description
    Resume Exit_Commande211_Click
 
 
End Sub
A présent, je souhaite pouvoir transformer une facture en avoir en sélectionnant toutes les lignes du sous-formulaire détail fac ou quelques unes. Donc j'ai créé une case oui/non "Selec" et une case oui/non "Avoir" dans le détail fac. Lorsque je transfère les lignes, je souhaite que la quantité soit négative (ou positive si elle était négative dans la facture).
Donc j'ai utilisé le code ci-dessus et je l'ai adapter ainsi :
Code : Sélectionner tout - Visualiser dans une fenêtre à part
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
Private Sub Commande87_Click()
Dim NumFAC As String
Dim stDocName As String
 
    stDocName = "FORM-FACTURE FI"
    DoCmd.OpenForm stDocName, acNormal, "", "", acAdd, acNormal
 
    Forms![FORM-FACTURE FI]![ID_Devis] = ID_Devis
    Forms![FORM-FACTURE FI]![id_FI] = id_FI
    Forms![FORM-FACTURE FI]![ID_Client] = ID_Client
    Forms![FORM-FACTURE FI]![ID_Site] = ID_Site
    Forms![FORM-FACTURE FI]![ID_Analaytique] = id_analytique
    Forms![FORM-FACTURE FI]![ID_Categorie] = IDCategorie
    Forms![FORM-FACTURE FI]![Objet] = Objet
    Forms![FORM-FACTURE FI]![ID_TVA Double] = [ID_TVA Double]
    Forms![FORM-FACTURE FI]![Texte] = Texte
    Forms![FORM-FACTURE FI]![AcompteFI] = AcompteFI
    Forms![FORM-FACTURE FI].Refresh
 
 
 
    'Récupérer le numéro de fiche intervention en cours
    NumFAC = Forms![FORM-FACTURE FI]!IDFACTUREFI
 
    monsql = "INSERT INTO [RQ-DETAIL FAC] ([ID_Facture FI], ID_FI, [ID_ARTICLE], TVA, SOUSARTICLE, [PVHT Fac], [QteDetailFac])" _
        & " SELECT [Formulaires]![FORM-FACTURE FI]![IDFACTUREFI] AS NumFAC,[RQ-DETAIL FAC].ID_Facture FI," _
        & " [RQ-DETAIL FAC].ID_ARTICLE, [RQ-DETAIL FAC].TVA, [RQ-DETAIL FAC].SOUSARTICLE, [RQ-DETAIL FAC].[PVHT Fac], [RQ-DETAIL FAC].[Qte DetailFac]" _
        & " From [RQ-DETAIL FAC]" _
        & " WHERE [RQ-DETAIL FAC].ID_Facture FI ='" & Me.IDFACTUREFI _
        & "' AND [RQ-DETAIL FAC].[Selec]=-1 AND [RQ-DETAIL FAC].Avoir=0;"
 
    DoCmd.RunSQL monsql
    monsql = "UPDATE [RQ-DETAIL FAC] SET [RQ-DETAIL FAC].Avoir = -1" _
        & " WHERE [RQ-DETAIL FAC].ID_Facture FI ='" & Me.IDFACTUREFI _
        & "' AND [RQ-DETAIL FAC].[Selec]=-1 AND [RQ-DETAIL FAC].Avoir=0;"
 
     DoCmd.RunSQL monsql
     Forms![FORM-FACTURE FI].[S/FORM-DETAIL FAC].Form.Requery
Exit_Commande87_Click:
    Exit Sub
 
Err_Commande87_Click:
    MsgBox Err.Description
    Resume Exit_Commande87_Click
 
End Sub
Alors d'une part ça ne crée pas un nouveau document, le 1er "DoCmd.RunSQL monsql" est jaune et de plus je ne sais pas comment ni où mettre la notion "quantité négative" de l'avoir.

Merci pour vos conseils.
Cordialement,
Kanin