Programme à simplifier

  • Initiateur de la discussion anthony
  • Date de début
A

anthony

Guest
Bonjour,
J'ai fait un programme de gestion de stock. Ce programme, je l'ai fait en plusieurs fois, au fur et à mesure que je trouvait des infos sur le site. c'est pourquoi, j'aimerais que vous le regardiez afin de me dire, ce qui fait double emploi ou qui pourrait être amélioré.
http://membres.lycos.fr/anthony438/fusible fini2.xls
 

Hellboy

XLDnaute Accro
Bonjour anthony

Pour garder la visibilité sur le site, voici la partie facile que je me suis attardé.

ancien code:


Code:
Option Explicit



Sub Macro2()
''
Dim valeur As Variant
Dim stock As Integer
Dim entree As Integer
Dim mois As Object



Load Userform2
Userform2.Show



Sheets('Quel fusible pour quel appareil').Select
stock = Range('f135').Value
valeur = Range('d135').Value
Range('f21').Value = valeur
entree = Range('f21').Value
If entree > stock Then
Do
msgbox ('Il ne reste plus assez de fusibles de ce type !')
valeur = 0
entree = 0
Load Userform2
Userform2.Show
valeur = Range('d135').Value
Range('f21').Value = valeur
entree = Range('f21').Value
Loop Until entree <= stock
Range('f20').Value = valeur
Else: Range('f20').Value = valeur
End If
Sheets('Feuil1').Select

    If Range('m5').Value >= 0 Then
    Range('k5').Value = Range('k5').Value - Range('m5').Value
    
    End If
     If Range('m6').Value >= 0 Then
    Range('k6').Value = Range('k6').Value - Range('m6').Value
    
    End If
     If Range('m7').Value >= 0 Then
    Range('k7').Value = Range('k7').Value - Range('m7').Value
    
    End If
     If Range('m8').Value >= 0 Then
    Range('k8').Value = Range('k8').Value - Range('m8').Value
    
    End If
     If Range('m9').Value >= 0 Then
    Range('k9').Value = Range('k9').Value - Range('m9').Value
    
    End If
     If Range('m10').Value >= 0 Then
    Range('k10').Value = Range('k10').Value - Range('m10').Value
    
    End If
     If Range('m11').Value >= 0 Then
    Range('k11').Value = Range('k11').Value - Range('m11').Value
    
    End If
     If Range('m12').Value >= 0 Then
    Range('k12').Value = Range('k12').Value - Range('m12').Value
    
    End If
         If Range('m13').Value >= 0 Then
    Range('k13').Value = Range('k13').Value - Range('m13').Value
    
    End If
         If Range('m14').Value >= 0 Then
    Range('k14').Value = Range('k14').Value - Range('m14').Value
    
    End If
         If Range('m14').Value >= 0 Then
    Range('k14').Value = Range('k14').Value - Range('m14').Value
    
    End If
         If Range('m15').Value >= 0 Then
    Range('k15').Value = Range('k15').Value - Range('m15').Value
    
    End If
         If Range('m16').Value >= 0 Then
     Range('k16').Value = Range('k16').Value - Range('m16').Value
    
    End If
         If Range('m17').Value >= 0 Then
    Range('k17').Value = Range('k17').Value - Range('m17').Value
    
    End If
         If Range('m18').Value >= 0 Then
    Range('k18').Value = Range('k18').Value - Range('m18').Value
    
    End If
         If Range('m19').Value >= 0 Then
    Range('k19').Value = Range('k19').Value - Range('m19').Value
    
    End If
         If Range('m20').Value >= 0 Then
    Range('k20').Value = Range('k20').Value - Range('m20').Value
    
    End If
         If Range('m21').Value >= 0 Then
    Range('k21').Value = Range('k21').Value - Range('m21').Value
    
    End If
         If Range('m22').Value >= 0 Then
    Range('k22').Value = Range('k22').Value - Range('m22').Value
    
    End If
         If Range('m23').Value >= 0 Then
    Range('k23').Value = Range('k23').Value - Range('m23').Value
    
    End If
    
    If Range('m24').Value >= 0 Then
    Range('k24').Value = Range('k24').Value - Range('m24').Value
    
    End If
    
    If Range('m25').Value >= 0 Then
    Range('k25').Value = Range('k25').Value - Range('m25').Value
    
    End If
    If Range('m26').Value >= 0 Then
    Range('k26').Value = Range('k26').Value - Range('m26').Value
    
    End If
    If Range('m27').Value >= 0 Then
    Range('k27').Value = Range('k27').Value - Range('m27').Value
    
    End If
   Sheets('Quel fusible pour quel appareil').Select
   Range('f20').Value = '0'
   Range('f21').Value = '0'
 
 If Range('f135').Value = 1 Then
    msgbox ('Il ne reste plus qu'un seul fusible de ce type !')
  End If
    
    
    If Range('f135').Value > 1 And Range('f135').Value <= 5 Then
    msgbox ('Il ne reste plus que ' & Range('f135').Value & ' fusibles de ce type')
    End If
 
    If Range('f135').Value = 0 Then
    msgbox ('Il n'y a plus de fusible de ce type !')
     msgbox ('Pensez à réapprovisionner rapidement !')
    End If
Range('d135').Value = 0
  End Sub
  Sub Macro3()

Dim valeur As Variant
Dim entree As Integer

Load UserForm1
UserForm1.Show

Sheets('Quel fusible pour quel appareil').Select
valeur = Range('c135').Value
Range('g21').Value = valeur
entree = Range('g21').Value
If entree < 0 Then
Do
msgbox ('Veuillez ajouter des fusibles !')
valeur = 0
entree = 0
Load UserForm1
UserForm1.Show
valeur = Range('c135').Value
Range('g21').Value = valeur
entree = Range('g21').Value
Loop Until valeur >= 0
Range('g20').Value = valeur
Else: Range('g20').Value = valeur
End If


Sheets('Feuil1').Select
    If Range('l5').Value > 0 Then
    Range('k5').Value = Range('l5').Value
    
    End If
     If Range('l6').Value > 0 Then
    Range('k6').Value = Range('l6').Value
    
    End If
     If Range('l7').Value > 0 Then
    Range('k7').Value = Range('l7').Value
    
    End If
     If Range('l8').Value > 0 Then
    Range('k8').Value = Range('l8').Value
    
    End If
     If Range('l9').Value > 0 Then
    Range('k9').Value = Range('l9').Value
    
    End If
     If Range('l10').Value > 0 Then
    Range('k10').Value = Range('l10').Value
    
    End If
     If Range('l11').Value > 0 Then
    Range('k11').Value = Range('l11').Value
    
    End If
     If Range('l12').Value > 0 Then
    Range('k12').Value = Range('l12').Value
    
    End If
         If Range('l13').Value > 0 Then
    Range('k13').Value = Range('l13').Value
    
    End If
         If Range('l14').Value > 0 Then
    Range('k14').Value = Range('l14').Value
    
    End If
         If Range('l14').Value > 0 Then
    Range('k14').Value = Range('l14').Value
    
    End If
         If Range('l15').Value > 0 Then
    Range('k15').Value = Range('l15').Value
    
    End If
         If Range('l16').Value > 0 Then
     Range('k16').Value = Range('l16').Value
    
    End If
         If Range('l17').Value > 0 Then
    Range('k17').Value = Range('l17').Value
    
    End If
         If Range('l18').Value > 0 Then
    Range('k18').Value = Range('l18').Value
    
    End If
         If Range('l19').Value > 0 Then
    Range('k19').Value = Range('l19').Value
    
    End If
         If Range('l20').Value > 0 Then
    Range('k20').Value = Range('l20').Value
    
    End If
         If Range('l21').Value > 0 Then
    Range('k21').Value = Range('l21').Value
    
    End If
         If Range('l22').Value > 0 Then
    Range('k22').Value = Range('l22').Value
    
    End If
         If Range('l23').Value > 0 Then
    Range('k23').Value = Range('l23').Value
    
    End If
    
    If Range('l24').Value > 0 Then
    Range('k24').Value = Range('l24').Value
    
    End If
    
    If Range('l25').Value > 0 Then
    Range('k25').Value = Range('l25').Value
    
    End If
    If Range('l26').Value > 0 Then
    Range('k26').Value = Range('l26').Value
    
    End If
    If Range('l27').Value > 0 Then
    Range('k27').Value = Range('l27').Value
    
    End If
    
    
    Sheets('Quel fusible pour quel appareil').Select
    Range('g20').Value = '0'
     Range('g21').Value = '0'
   

  If Range('f135').Value = 1 Then
    msgbox ('Il n'y a qu'un seul fusible de ce type !')
  End If
    
    
    If Range('f135').Value > 1 And Range('f135').Value <= 5 Then
    msgbox ('Il n'y a que ' & Range('f135').Value & ' fusibles de ce type !')
    End If
 
Range('c135').Value = 0
 valeur = 0
  
  End Sub


Et le nouveau:

Code:
Option Explicit



Sub Macro2()
''
Dim valeur As Variant
Dim stock As Integer
Dim entree As Integer
Dim mois As Object



Load Userform2
Userform2.Show



Sheets('Quel fusible pour quel appareil').Select
stock = Range('f135').Value
valeur = Range('d135').Value
Range('f21').Value = valeur
entree = Range('f21').Value
If entree > stock Then
Do
msgbox ('Il ne reste plus assez de fusibles de ce type !')
valeur = 0
entree = 0
Load Userform2
Userform2.Show
valeur = Range('d135').Value
Range('f21').Value = valeur
entree = Range('f21').Value
Loop Until entree <= stock
Range('f20').Value = valeur
Else: Range('f20').Value = valeur
End If
Sheets('Feuil1').Select
     
    For iRef = 5 To 27
        If Cells(iRef, 7 + iRef).Value >= 0 Then
           Cells(iRef, 6 + iRef).Value = Cells(iRef, 6 + iRef).Value - Cells(iRef, 7 + iRef).Value
    Next iRef
    
   Sheets('Quel fusible pour quel appareil').Select
   Range('f20').Value = '0'
   Range('f21').Value = '0'
 
 If Range('f135').Value = 1 Then
    msgbox ('Il ne reste plus qu'un seul fusible de ce type !')
  End If
    
    
    If Range('f135').Value > 1 And Range('f135').Value <= 5 Then
    msgbox ('Il ne reste plus que ' & Range('f135').Value & ' fusibles de ce type')
    End If
 
    If Range('f135').Value = 0 Then
    msgbox ('Il n'y a plus de fusible de ce type !')
     msgbox ('Pensez à réapprovisionner rapidement !')
    End If
Range('d135').Value = 0
  End Sub
  Sub Macro3()

Dim valeur As Variant
Dim entree As Integer

Load UserForm1
UserForm1.Show

Sheets('Quel fusible pour quel appareil').Select
valeur = Range('c135').Value
Range('g21').Value = valeur
entree = Range('g21').Value
If entree < 0 Then
Do
msgbox ('Veuillez ajouter des fusibles !')
valeur = 0
entree = 0
Load UserForm1
UserForm1.Show
valeur = Range('c135').Value
Range('g21').Value = valeur
entree = Range('g21').Value
Loop Until valeur >= 0
Range('g20').Value = valeur
Else: Range('g20').Value = valeur
End If


Sheets('Feuil1').Select
    
    For iRef = 5 To 19
        If Cells(iRef, 6 + iRef).Value >= 0 Then
           Cells(iRef, 5 + iRef).Value = Cells(iRef, 6 + iRef).Value
    Next iRef
    
    For iRef = 100 To 127
        If Cells(iRef, iRef - 89).Value >= 0 Then
           Cells(iRef, iRef - 88).Value = Cells(iRef, iRef - 89).Value
    Next iRef
    
    
    Sheets('Quel fusible pour quel appareil').Select
    Range('g20').Value = '0'
     Range('g21').Value = '0'
   

  If Range('f135').Value = 1 Then
    msgbox ('Il n'y a qu'un seul fusible de ce type !')
  End If
    
    
    If Range('f135').Value > 1 And Range('f135').Value <= 5 Then
        msgbox ('Il n'y a que ' & Range('f135').Value & ' fusibles de ce type !')
    End If
 
Range('c135').Value = 0
 valeur = 0
  
  End Sub

Je te renvoie ton fichier.
 

Hellboy

XLDnaute Accro
Bonsoir anthony

Cette variable que j'ai crée iRef(i pour integer et Ref pour référence), sert de facon logique dans ton code. Utiliser cells au lieu de range est parfois un avantage. Cells marche comme ceci: Cells(Ligne#,Colonne#). Comme par exemple dans:

Code:
For iRef = 5 To 27
        If Cells(iRef, 7 + iRef).Value >= 0 Then
           Cells(iRef, 6 + iRef).Value = Cells(iRef, 6 + iRef).Value - Cells(iRef, 7 + iRef).Value
    Next iRef

cette portion Cells(iRef, 7 + iRef).Value commence lors du départ de la bouble For a 5. Et avant tu faisait référence a la colonne M soit la 12ieme colonne. Donc 7 + iRef(qui vaut 5 au départ) ....! Tada!!

Si tu as d'autre question ou modifs n'hésite pas.
 

Discussions similaires

Statistiques des forums

Discussions
312 391
Messages
2 087 941
Membres
103 679
dernier inscrit
yprivey3