Problème de macros mais avec condition .

Eric_3280 Messages postés 22 Date d'inscription   Statut Membre Dernière intervention   -  
Eric_3280 Messages postés 22 Date d'inscription   Statut Membre Dernière intervention   -
BONJOUR

Vous trouverez dans la feuille facture de mon classeur un bouton sauvegarder. Ce bouton me sert à enregistrer le montant au bas de la facture (il enregistre dans la feuille historique des factures). Mais le problème est qu’il le fait même si la quantité saisie dépasse le stock. Quelqu’un peut-il m’aider ? J’aimerai sauvegarder le montant seulement si la quantité demandée est inférieure au stock. Sinon un message d’alerte s’affiche. (Quantité : de la cellule « I10 :I19 » stock : de la cellule « j10 :j19 » de la feuille « facture »
CI-JOINT MON CLASSEUR
MERCI

2 réponses

  1. ThauTheme Messages postés 1564 Statut Membre 160
     
    Bonjour Éric, bonjour le forum,

    Visiblement tu as oublié le lien vers le classeur... Mais ça devrait donner un code du style :

    Sub Macro1()
    If Range("I10:I19").Value > Range("J10:J19").Value Then
        MsgBox "Dépassement du Stock ! Opération annulée."
        Exit Sub
    Else
        'ton code
    End If
    End Sub

    0
    1. Eric_3280 Messages postés 22 Date d'inscription   Statut Membre Dernière intervention  
       
      BONJOUR THAUTHEME. BONJOUR FORUM

      Merci pour ta réponse. mais le code que vous m'avez envoyer doit faire allusion à la feuille "facture" (le classeur c "apk kkr facture"), moi je ne sais pas comment faire pour que le code fasse allusion à la feuille facture. POUVEZ-VOUS M'AIDER SVP? ou encore, comment faire pour vous envoyer mon classeur? j'ai envoyé quand même le code.



      Private Sub SAUVEGARDER_MONTANT_Click()
      Range("I8").Select
          Sheets("historique factures").Select
          ActiveSheet.Unprotect Password:="54628"
          Rows("2:2").Select
          Selection.Insert Shift:=xlDown
          Selection.ClearFormats
          Range("A3").Select
          Sheets("facture").Select
      ActiveSheet.Unprotect Password:="54628"
          Range("F4:G4").Select
          Selection.Copy
          Sheets("historique factures").Select
          Range("B2").Select
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
              :=False, Transpose:=False
          Sheets("facture").Select
          Range("D1:G1").Select
          Application.CutCopyMode = False
          Selection.Copy
          Sheets("historique factures").Select
          Range("C2").Select
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
              :=False, Transpose:=False
          Application.CutCopyMode = False
          Selection.NumberFormat = "m/d/yyyy"
          Sheets("facture").Select
          ActiveWindow.SmallScroll Down:=42
          Range("G23").Select
          Selection.Copy
          Sheets("historique factures").Select
          Range("D2").Select
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
              :=False, Transpose:=False
          Application.CutCopyMode = False
          Selection.NumberFormat = "#,##0.00 $"
          Range("E1").Select
          ActiveWindow.ScrollColumn = 2
          ActiveWindow.ScrollColumn = 3
          ActiveWindow.ScrollColumn = 4
          Range("U1").Select
          Selection.Copy
          ActiveWindow.ScrollColumn = 3
          ActiveWindow.ScrollColumn = 2
          ActiveWindow.ScrollColumn = 1
          Range("A2").Select
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
              :=False, Transpose:=False
          Sheets("facture").Select
      
          ActiveWindow.SmallScroll Down:=-54
          Range("C7").Select
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
              :=False, Transpose:=False
          Range("C7").Select
          Application.CutCopyMode = False
          Selection.ClearContents
          Sheets("historique factures").Select
          ActiveSheet.Protect Password:="54628", Contents:=True, Scenarios:=True
          Selection.Copy
          Sheets("facture").Select
          Range("C7").Select
          Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
              :=False, Transpose:=False
          Range("A1:C1").Select
      ActiveSheet.Protect Password:="54628", Contents:=True, Scenarios:=True
      
      End Sub


      EDIT : Ajout des balises de code (la coloration syntaxique).
      Explications disponibles ici : ICI

      Merci d'y penser dans tes prochains messages.
      0
  2. ThauTheme Messages postés 1564 Statut Membre 160
     
    Re,

    La règle d'or en VBA s'est d'éviter autant que tu le peux les Select et autres Activate. Ça ne fait que ralentir le code et c'est souvent source de plantage.
    Tu n'as toujours pas daigné mettre ton fichier ce qui rend la compréhension beaucoup plus difficile.
    Ton code corrigé mais que tu devras vérifier :

    Private Sub SAUVEGARDER_MONTANT_Click()
    Dim HF As Worksheet
    Dim F As Worksheet
    
    Set HF = Worksheets("historique factures")
    Set F = Worksheets("facture")
    If F.Range("I10:I19").Value > F.Range("J10:J19").Value Then
        MsgBox "Dépassement du Stock ! Opération annulée."
        Exit Sub
    Else
        HF.Unprotect Password:="54628"
        HF.Rows("2:2").Insert Shift:=xlDown
        HF.Rows("2:2").ClearFormats
        F.Unprotect Password:="54628"
        F.Range("F4:G4").Copy
        HF.Range("B2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        F.Range("D1:G1").Copy
        HF.Range("C2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        HF.Range("C2:F2").NumberFormat = "m/d/yyyy"
        F.Range("G23").Copy
        HF.Range("D2").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        HF.Range("D2").NumberFormat = "#,##0.00 $"
        HF.Range("U1").Copy
        HF.Range("A2").Selection.PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        HF.Protect Password:="54628", Contents:=True, Scenarios:=True
        
        '************** partie à revoir
        'là j'ai rien compris à ton code. Tu copies puis tu effaces ?!....
        F.Range("C7").PasteSpecial Paste:=xlPasteValues, Operation:=xlNone, SkipBlanks _
        :=False, Transpose:=False
        '**************
        
        HF.Protect Password:="54628", Contents:=True, Scenarios:=True
        F.Protect Password:="54628", Contents:=True, Scenarios:=True
    End If
    End Sub

    0
    1. Eric_3280 Messages postés 22 Date d'inscription   Statut Membre Dernière intervention  
       
      Merci pour le code. Mais jusque là il ne marche pas encore. Et moi, je ne sais comment vous envoyer mon fichier. Pouvez-vous me donner votre adresse e-mail ou votre numéro WhatsApp? Si Oui j'envoie immédiatement. Car j'ai vraiment besoin de ce code. Merci pour tes efforts jusque-là.
      Cordialement.
      0