Aide sur Une Application de facturation sous VBA/Excel

Fermé
eliyakamalebo Messages postés 1 Date d'inscription jeudi 5 janvier 2017 Statut Membre Dernière intervention 5 janvier 2017 - 5 janv. 2017 à 13:24
 Utilisateur anonyme - 5 janv. 2017 à 20:55
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
A voir également:

3 réponses

Patrice33740 Messages postés 8556 Date d'inscription dimanche 13 juin 2010 Statut Membre Dernière intervention 2 mars 2023 1 775
5 janv. 2017 à 14:01
Bonjour,

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

0
f894009 Messages postés 17185 Date d'inscription dimanche 25 novembre 2007 Statut Membre Dernière intervention 15 avril 2024 1 701
Modifié par f894009 le 5/01/2017 à 14:43
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
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