Aide sur Une Application de facturation sous VBA/Excel

eliyakamalebo Messages postés 1 Statut Membre -  
 Utilisateur anonyme -
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. Patrice33740 Messages postés 8400 Date d'inscription   Statut Membre Dernière intervention   1 783
     
    Bonjour,

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

    0
  2. f894009 Messages postés 17417 Date d'inscription   Statut Membre Dernière intervention   1 717
     
    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
  3. Utilisateur anonyme
     
    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