entrer des formules en utilisant une macro
Bonjour.
Voici mon problème. J'utilise un userform pour entrer des valeurs dans les cellules d' un tableau. Les lignes se remplissent au fur et à mesure que l'on crée des nouvelles recettes.
Par contre je ne sais pas comment faire pour que lorsque l'utilisateur clic sur le boutoncommand4 les formules suivantes soient entrées en même temps. Dans la colonne I=SIERREUR((RECHERCHEV(C70;Ligne!$A$2:$B$50;2;0));0); la colonne J =SIERREUR((H70*I70);"") ; la colonne K =SIERREUR((RECHERCHEV(E70;'Stock OHI'!$A$1:$B$1327;2;0));0) ; la colonne L =SI(J70<K70;"";ABS(K70-J70)), la colonne M =SIERREUR(L70+100;""); la colonne P =SIERREUR((P70*I70);""), la colonne V =F70, la colonne W =I70.
Voici tous le code de mon userform :
Code:
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83
| Option Explicit
Dim i As Byte
Dim DerLig As Long
Private Sub CommandButton3_Click()
'ActiveSheet.Protect "*69*", UserInterfaceOnly:=True
Unload Me
Sheets("Gestion bobine").Select
Range("A1").Select
End Sub
Private Sub CommandButton4_Click()
If ListBox1.Value = "" Then MsgBox "Cocher une valeur !": Exit Sub
If ListBox2.Value = "" Then MsgBox "Cocher une valeur !": Exit Sub
If ListBox3.Value = "" Then MsgBox "Cocher une valeur !": Exit Sub
If ListBox4.Value = "" Then MsgBox "Cocher une valeur !": Exit Sub
If ListBox5.Value = "" Then MsgBox "Cocher une valeur !": Exit Sub
If ListBox7.Value = "" Then MsgBox "Cocher une valeur !": Exit Sub
If ListBox6.Value = "" Then MsgBox "Veuillez remplir les champs correctement!": Exit Sub
If TextBox1.Value = "" Then MsgBox "Veuillez remplir les champs correctement!": Exit Sub
If TextBox2.Value = "" Or Not IsNumeric(TextBox2.Value) Then MsgBox "Nombre de caisses non valide!": Exit Sub
TextBox1.Value = UCase(TextBox1.Value)
Range("E2") = TextBox1.Value
If Range("H2").Value = "NON" Then MsgBox "Formule déja validée": Exit Sub
Dim ShtD As Worksheet
Set ShtD = Sheets("BASE")
' Récupère la dernière ligne de la feuille de données
DerLig = ShtD.Range("C500").End(xlUp).Row
' colle les valeurs
ShtD.Range("C" & DerLig + 1).Value = Me.TextBox1.Value
ShtD.Range("D" & DerLig + 1).Value = Me.ListBox6.Value
ShtD.Range("E" & DerLig + 1).Value = Me.ListBox1.Value
ShtD.Range("F" & DerLig + 1).Value = Me.TextBox2.Value
ShtD.Range("H" & DerLig + 1).Value = Me.ListBox2.Value
ShtD.Range("N" & DerLig + 1).Value = Me.ListBox5.Value
ShtD.Range("P" & DerLig + 1).Value = Me.ListBox4.Value
ShtD.Range("U" & DerLig + 1).Value = Me.ListBox3.Value
ShtD.Range("V" & DerLig + 1).Value = Me.ListBox7.Value
'ActiveSheet.Protect "*69*", UserInterfaceOnly:=True
Unload Me
MsgBox "Formule enregistrée!"
Sheets("Gestion bobine").Select
Range("A1").Select
'ActiveWorkbook.Save
End Sub
Private Sub ListBox6_Click()
If ListBox6.Value = Range("Composants!B5").Value Then ListBox2.RowSource = "Composants!C7"
If ListBox6.Value = Range("Composants!B6").Value Then ListBox2.RowSource = "Composants!C12"
If ListBox6.Value = Range("Composants!B7").Value Then ListBox2.RowSource = "Composants!C17"
If ListBox6.Value = Range("Composants!B8").Value Then ListBox2.RowSource = "Composants!C22"
If ListBox6.Value = Range("Composants!B9").Value Then ListBox2.RowSource = "Composants!C26:C27"
If ListBox6.Value = Range("Composants!B11").Value Then ListBox2.RowSource = "Composants!C37"
'
If ListBox6.Value = Range("Composants!B5").Value Then ListBox4.RowSource = "Composants!C6"
If ListBox6.Value = Range("Composants!B6").Value Then ListBox4.RowSource = "Composants!C11"
If ListBox6.Value = Range("Composants!B7").Value Then ListBox4.RowSource = "Composants!C16"
If ListBox6.Value = Range("Composants!B8").Value Then ListBox4.RowSource = "Composants!C21"
If ListBox6.Value = Range("Composants!B9").Value Then ListBox4.RowSource = "Composants!C26:C27"
If ListBox6.Value = Range("Composants!B11").Value Then ListBox4.RowSource = "Composants!C36"
'
End Sub
Private Sub UserForm_Activate()
Worksheets("Composants").Activate
Range("E2").Select
Selection.ClearContents
TextBox1.Value = ""
ListBox1.RowSource = "COMPOSANTS!A5:A1000"
ListBox3.RowSource = "COMPOSANTS!A5:A1000"
ListBox5.RowSource = "COMPOSANTS!A5:A1000"
ListBox6.RowSource = "COMPOSANTS!B5:B20"
End Sub
Private Sub UserForm_Initialize()
End Sub |