Aide sur Une Application de facturation sous VBA/Excel

Bonjour,

j'effectue une application de facturation sous VBA/Excel et toutes les autres conditions passent lorsque la facture n'est pas valable c'est à dire lorsque le Stock est soit zero ou lorsque la quantité demandée n'est pas disponible en stock. mais le seul probleme est que quand je veux valider la facture, si la quantité demandée est disponible en stock ça ne passe pas. ça dit "Erreur 424, Objet Requis"
Voici ci_bas mon code...
Votre aide me sera neccessaire....

Sub verification_facture()
Dim cellule As Range: Dim test As Boolean
test = False

For Each cellule In Range("D6:D26")
If (cellule.Value = "Rupture de Stock") Then
test = True
Exit For
End If
Next cellule

If (test = True) Then
MsgBox ("Des articles hors stock figurent dans la facture, il n'est pas possible de continuer")
Exit Sub
End If

Dim ligne As Integer: ligne = 2
Dim valeur_stock As Integer: valeur_stock = 0
Dim valeur_demandée As Integer: valeur_demandée = 0
Dim ref_cat As String: Dim ref_facture As String
Dim choix_utilisateur As Byte

While (Workbooks("catalogue.xlsx").Worksheets("Feuil1").Cells(ligne, 5).Value <> "")
valeur_stock = Workbooks("catalogue.xlsx").Worksheets("Feuil1").Cells(ligne, 5).Value
ref_cat = Workbooks("catalogue.xlsx").Worksheets("Feuil1").Cells(ligne, 3).Value

For Each cellule In ThisWorkbook.Worksheets("facturation").Range("C6:C26")

If (cellule.Value = ref_cat) Then
valeur_demandée = ThisWorkbook.Worksheets("facturation").Cells(cellule.Row, 5)
If (valeur_demandée > valeur_stock) Then
MsgBox ("La référence..." & cellule.Value & "...ne possède pas assez de Stock")
test = True
End If
End If
Next cellule

ligne = ligne + 1
Wend
If (test = True) Then
Exit Sub

Else
choix_utilisateur = MsgBox("La facture semble correcte,souhaitez-vous l'imprimer et mettre à jour les stock??", vbYesNo)
If (choix_utilisateur = 6) Then
For Each cellule In ThisWorkbook.Worksheets("facturation").Range("C6:C26")
ligne = 2
While (Workbooks("catalogue.xlsx").Worksheets("Feuil1").Cells(ligne, 5).Value <> "")
If (cellule.Value = Workbooks("catalogue.xlsx").Worksheets("Feuil1").Cells(ligne, 3).Value) Then
Workbooks("catalogue.xlsx").Worksheets("Feuil1").Cells(ligne, 5).Value = Workbooks("catalogue.xlsx").Worksheets("Feuil1").Cells(ligne, 5).Value - Thisworkbooks.Worksheets("facturation").Cells(cellule.Row, 5).Value
End If
ligne = ligne + 1
Wend
Next cellule
Else
Exit Sub
End If
End If
ThisWorkbook.Worksheets("facturation").PrintPreview
End Sub

3 réponses

  1. Bonjour,

    Quand tu mets du code sur le Forum il faut le baliser,
    c'est très simple :

    0
    1. Bonjour,

      Avec votre ou vos fichiers (d'apres votre programmation, il pourrait y avoir deux fichiers, mais .....) a dispo cela serait unpeut plus facile de vous aider

      Pour transmettre un fichier,
      Veillez a ce qu'il n'y ait PAS DE DONNEES CONFIDENTIELLES
      il faut passer par un site de pièce jointe tel que cjoint.com

      Allez sur ce site : https://www.cjoint.com/
      Clic sur parcourir,
      Cherche ton fichier,
      clic sur ouvrir,
      Clic sur "Créer le lien cjoint",
      Copier le lien,
      Revenir ici le coller dans une réponse...
      0
      1. Bonjour eliyakamalebo,

        Je te retourne ton code VBA (très légèrement modifié) :

        
        Option Explicit
        
        
        Sub verification_facture()
        
          Dim lig1 As Byte: Application.ScreenUpdating = False
          
          For lig1 = 6 To 26
            If Cells(lig1, 4) = "Rupture de Stock" Then
              MsgBox "Des articles hors stock figurent dans la facture, " _
                & "il n'est pas possible de continuer": Exit Sub
            End If
          Next lig1
          
          Dim valeur_stock As Integer, valeur_demandée As Integer
          Dim choix_utilisateur As Byte, test As Boolean
          Dim ref_cat As String, lig2 As Long: lig2 = 2
        
          With Workbooks("catalogue.xlsx").Worksheets("Feuil1")
            
            Do
            
              valeur_stock = .Cells(lig2, 5): If valeur_stock = "" Then Exit Do
              ref_cat = .Cells(lig2, 3)
              
              With ThisWorkbook.Worksheets("facturation")
                For lig1 = 6 To 26
                  If .Cells(lig1, 3) = ref_cat Then
                    valeur_demandée = .Cells(lig1, 5)
                    If valeur_demandée > valeur_stock Then
                      MsgBox "La référence..." & ref_cat _
                        & "...ne possède pas assez de Stock": test = True
                    End If
                  End If
                Next lig1
              End With
              
              lig2 = lig2 + 1
            
            Loop
            
            If test Then Exit Sub
            
            choix_utilisateur = MsgBox("La facture semble correcte, " _
              & "souhaitez-vous l'imprimer et mettre à jour les stocks ?", 4)
            If choix_utilisateur <> 6 Then Exit Sub
            
            Dim cellX As Range, dv As Byte
            Set cellX = ThisWorkbook.Worksheets("facturation").[C6]
            
            For dv = 0 To 20
              lig2 = 2
              While .Cells(lig2, 5) <> ""
                If cellX.Offset(dv) = .Cells(lig2, 3) Then
                  .Cells(lig2, 5) = .Cells(lig2, 5) - cellX.Offset(dv, 2)
                End If
                lig2 = lig2 + 1
              Wend
            Next dv
          
          End With
          
          ThisWorkbook.Worksheets("facturation").PrintPreview
          
        End Sub
        
        

        Dis-moi ce que tu en penses, et si ça te convient.
        Tu peux me demander une adaptation si besoin.

        Cordialement.  :)
         
        0