Calcul dans un userform

Bonjour tout le monde,

je bloque sur un problème liés à un calcul dans un userform, je m'explique :

j'ai trois texboxs : cash paid, nominal amount et décote

Je voudrais que lorsque je clique sur mon command button :

  • si j'ai rentre des valeurs dans cash paid et nominal amount j'obtienne decote
  • si j'ai rentre des valeurs cash paid et et decote j'obtienne nominal amount

Dans tous les cas je dois obtenir les 3 valeurs selon mes formules.

Dernier petie demande : j'ai rentré un ComboBox qui lorsque je tape entrer, sa valeur se postionne en première ligne de la colonne J alors qu'elle devrait commencer ligne 11 puis baisser d'une ligne comme se font mes autres valeurs très bien. Je ne vois pas le problème dans mon code pourtant.

Je vous remercie d'avance.

Ci-dessous mon code Userform ou sont surlignés les points qui pose problème

Private Sub ComboBox1_Change()

ComboBox1.List = Application.Transpose(Range("souscripteur"))

End Sub

Function souscripteur(Nom As String) As Boolean

Dim Noms As Name

souscripteur = False

For Each Noms In ThisWorkbook.Names

If Noms.Name = Nom Then souscripteur = True: Exit Function

Next Noms

End Function

Private Sub CommandButton3_Click()

TextBox5 = 100 - (100 * CpValue / NAValue)

NAValue = CpValue + (CpValue * TextBox5 / 100)

End Sub

Private Sub CommandButton1_Click()

Dim l As Integer

l = Range("C" & Rows.Count).End(xlUp).Row

If IsDate(TextBox3) Then

Worksheets(2).Cells(l + 1, 3).Value = TextBox3.Text

Worksheets(2).Cells(l + 1, 6).Value = NAValue.Text

Worksheets(2).Cells(l + 1, 7).Value = TextBox5.Text

Worksheets(2).Cells(I + 1, 10).Value = ComboBox1.Value

Else

MsgBox "renter une date"

TextBox3.Value = ""

Exit Sub

End If

Unload UserForm2

End Sub

Private Sub CommandButton2_Click()

Unload UserForm2

End Sub

Bonjour

Essaies ceci

Private Sub CommandButton3_Click()
TextBox5 = 100 - (100 * CpValue / NAValue)
NAValue = CpValue + (CpValue * TextBox5 / 100)
End Sub

par :

Private Sub CommandButton3_Click()
TextBox5 = 100 - (100 * CDec(CpValue) / CDec(NAValue))
NAValue = CDec(CpValue) + (CDec(CpValue) * CDec(TextBox5) / 100)
End Sub

Pour le reste sans fichier je ne peux pas te répondre.

Merci pour votre réponse mais lorsque je remplace par votre ligne de code j'obtiens Sub or Function not defined. Peut être parce que je suis sur Excel 2011 Mac.

Ci-joint mon fichier

Encore merci pour votre aide.

21workbook2.xlsm (29.65 Ko)

Excusez-moi le userform2 n'était pas présent dans le fichier

24workbook2.xlsm (29.65 Ko)

ha ! dans celui-là non plus, il n'y a pas d'Userform.

Par contre j'ai "bidouillé" sur un nouveau fichier et :

1) il doit y avoir une erreur dans la formulation du programme de la CommandButton3

    Private Sub CommandButton3_Click()
    TextBox5 = 100 - (100 * CDec(CpValue) / CDec(NAValue))
    NAValue = CDec(CpValue) + (CDec(CpValue) * CDec(TextBox5) / 100)
    End Sub

La TextBox5 dépend de la NAValue et la NAValue de la Textbox5 ou vice et versa, mais dans tous les cas cela ne peut pas fonctionner car il manquera toujours un élément pour le calcul

Personnellement j'ai ajouter une Textbox6 pour valider ma méthode de calcul et cela fonctionne

Private Sub CommandButton3_Click()
TextBox5 = 100 - (100 * CDec(CpValue) / CDec(NAValue))
TextBox6 = CDec(CpValue) + (CDec(CpValue) * CDec(TextBox5) / 100)

End Sub

Merci pour votre aide mais je viens de trouver une solution qui fonctionne très bien et qui est relativement simple :

Private Sub CommandButton3_Click()

If IsNumeric(NAValue) Then

TextBox5 = 100 - (100 * (CpValue) / (NAValue))

Else

NAValue = (CpValue) + (CpValue) * (TextBox5) / 100

End If

Je vais essayer la votre mais de mon côté ca marche.

En fait comme vous l'avez dit textBox 5 et NAvalue dépendent l'un de l'autre mais on doit rentrer 2 valeurs sur 3 dans l'userform c est donc faisaible sans rajouter une variable

Puisque vous êtes lâ pourriez vous m'expliquer pourquoi le résultat de ma ComboBox ne s'affiche pas dans sur les memes lignes que les autres résultats ?

Il y avait une erreur dans ton code, modifié ci-après

Private Sub CommandButton1_Click()
Dim l As Integer
l = Range("C" & Rows.Count).End(xlUp).Row

If IsDate(TextBox3) Then

ActiveSheet.Cells(l + 1, 3).Value = Format(TextBox3, "dd/mm/yyyy")
ActiveSheet.Cells(l + 1, 6).Value = NAValue.Value
ActiveSheet.Cells(l + 1, 7).Value = TextBox5.Value
ActiveSheet.Cells(l + 1, 10).Value = ComboBox1.Value
Else
MsgBox "renter une date"
TextBox3.Value = ""
Exit Sub
End If
Unload UserForm2
End Sub

Merci beaucoup Monsieur !!

Ca marche parfaitement.

Seulement a chaque fois que je veux rajouter une ligne le même problème revient.

Par exemple :

ActiveSheet.Cells(l + 1, 3).Value = Format(TextBox3, "dd/mm/yyyy")

ActiveSheet.Cells(l + 1, 6).Value = NAValue.Value

ActiveSheet.Cells(l + 1, 7).Value = TextBox5.Value

ActiveSheet.Cells(I + 1, 8).Value = CpValue.Value

ActiveSheet.Cells(l + 1, 11).Value = ComboBox1.Value

Elle se place en première ligne de la colonne 8.

Auriez vous une explication que je ne reste pas bête.

Enfin, ma dernière demande ,

Comment mettre des virgules sur les nombres comme sinon c est illisible

Je vous remercie encore de l'attention que vous avez porté à mon problème

Attention un code applique ce l'on lui dit d'effectuer....

Ton code

ActiveSheet.Cells(I + 1, 8).Value = CpValue.Value

hors tu définis la variable suivante par "l"et non "I"

Dim l As Integer
l = Range("C" & Rows.Count).End(xlUp).Row

Donc on devrait lire :

ActiveSheet.Cells(l + 1, 8).Value = CpValue.Value
Rechercher des sujets similaires à "calcul userform"