Laisse moi rire
XLDnaute Occasionnel
Salut a toutes et tous
Je vous met le code car sinon cela ne passe pas en fichier joint, et même en supprimant tout pour y laisser le stricte nécessaire cela fait 55 Mo, je suis vraiment désolé.
Dans un module :
Option Explicit
Public TypeDeSoiree As Byte
Dans l'userform :
Option Explicit
Dim Plage, PlagePrix As Range
Dim A, B, C, D As Long
Dim WSDonnees, WSDonneesPrix As Worksheet
Dim PlageTypeDeSoirée As String
Dim L As Integer 'Déclaration de variable 'L' pour connaitre la Ligne Numéro
Private Sub cbxAccompteEuros_Change()
On Error Resume Next
If cbxAccompteEuros.Text = '' Then
txtAccompteFrancs = ''
End If
If cbxAccompteEuros = '' Then
lblAccompteFrancs.ForeColor = &H80000008
lblAccompteEuros.ForeColor = &H80000008
Else
lblAccompteFrancs.ForeColor = &HFF0000
lblAccompteEuros.ForeColor = &HFF0000
End If
If cbxAccompteEuros <> '' Then
txtSoldeEuros.Value = CDbl(txtPrixEuros) - CDbl(cbxAccompteEuros)
Else
txtSoldeEuros.Value = CDbl(txtPrixEuros)
End If
If cbxAccompteEuros <> '' Then
txtAccompteFrancs = CDbl(cbxAccompteEuros) * 6.55957
txtSoldeFrancs.Value = CDbl(txtPrixFrancs) - CDbl(txtAccompteFrancs)
Else
txtSoldeFrancs.Value = CDbl(txtPrixFrancs)
End If
lblAccompteEuros.Visible = True
txtAccompteFrancs.Visible = True
End Sub
Private Sub cbxReduction_Change()
On Error Resume Next
If cbxReduction = '' Then
txtMontantRemiseEuros = ''
txtMontantRemiseFrancs = ''
lblMontantRemiseEuros.Visible = False
lblMontantRemiseFrancs.Visible = False
txtMontantRemiseEuros.Visible = False
txtMontantRemiseFrancs.Visible = False
Else
lblMontantRemiseEuros.Visible = True
lblMontantRemiseFrancs.Visible = True
txtMontantRemiseEuros.Visible = True
txtMontantRemiseFrancs.Visible = True
End If
txtMontantRemiseEuros = CDbl(txtPrixEuros) * CDbl(cbxReduction) / 100
txtMontantRemiseFrancs = CDbl(txtMontantRemiseEuros) * 6.55957
If cbxReduction <> '' Then
txtSoldeEuros = CDbl(txtPrixEuros) - CDbl(cbxAccompteEuros) - CDbl(txtMontantRemiseEuros)
Else
txtSoldeEuros.Value = CDbl(txtPrixEuros) - CDbl(cbxAccompteEuros)
End If
If cbxReduction <> '' Then
txtSoldeFrancs = CDbl(txtPrixFrancs) - CDbl(txtAccompteFrancs) - CDbl(txtMontantRemiseFrancs)
Else
txtSoldeFrancs.Value = CDbl(txtPrixFrancs) - CDbl(cbxAccompteEuros)
End If
If cbxAccompteEuros <> '' Then
txtSoldeEuros = CDbl(txtPrixEuros) - CDbl(cbxAccompteEuros) - CDbl(txtMontantRemiseEuros)
Else
txtSoldeEuros.Value = CDbl(txtPrixEuros) - CDbl(txtMontantRemiseEuros)
End If
If cbxAccompteEuros <> '' Then
txtSoldeFrancs = CDbl(txtPrixFrancs) - CDbl(txtAccompteFrancs) - CDbl(txtMontantRemiseFrancs)
Else
txtSoldeFrancs.Value = CDbl(txtPrixFrancs) - CDbl(txtMontantRemiseFrancs)
End If
'txtSoldeEuros = CDbl(txtPrixEuros) - CDbl(cbxAccompteEuros) - CDbl(txtMontantRemiseEuros)
'txtSoldeFrancs = CDbl(txtPrixFrancs) - CDbl(txtAccompteFrancs) - CDbl(txtMontantRemiseFrancs)
End Sub
Private Sub cbxTypeDeSoiree_Change()
Set WSDonneesPrix = Sheets('Prix')
Set PlagePrix = WSDonneesPrix.Range('B4:B' & WSDonneesPrix.Range('D65535').End(xlUp).Row)
On Error Resume Next
D = PlagePrix.Find(What:=cbxTypeDeSoiree, LookAt:=xlWhole).Row
With WSDonneesPrix
txtPrixEuros = .Range('C' & D)
End With
If cbxTypeDeSoiree = '' Then
cbxAccompteEuros = ''
cbxReduction = ''
txtPrixFrancs = ''
txtPrixEuros = ''
txtAccompteFrancs = ''
txtSoldeFrancs = ''
txtSoldeEuros = ''
cbxAccompteEuros.Enabled = False
cbxReduction.Enabled = False
Else
cbxAccompteEuros.Enabled = True
cbxReduction.Enabled = True
End If
lblPrixFrancs.Visible = True
txtPrixFrancs.Visible = True
End Sub
Private Sub cmdQuitter_Click()
Unload Me
End Sub
Private Sub txtAccompteFrancs_Change()
On Error Resume Next
txtAccompteFrancs = Format(txtAccompteFrancs, '##,##0.00')
End Sub
Private Sub txtMontantRemiseEuros_Change()
txtMontantRemiseEuros = Format(txtMontantRemiseEuros, '##,##0.00')
End Sub
Private Sub txtMontantRemiseFrancs_Change()
txtMontantRemiseFrancs = Format(txtMontantRemiseFrancs, '##,##0.00')
End Sub
Private Sub txtPortableDeLaMariee_Change()
PhoneFormat txtPortableDeLaMariee
End Sub
Private Sub txtPortableDuMarie_Change()
PhoneFormat txtPortableDuMarie
End Sub
Private Sub txtPrixFrancs_Change()
txtPrixFrancs = Format(txtPrixFrancs, '##,##0.00')
End Sub
Private Sub txtDateDeLaPrestation_Change()
txtDateDeLaPrestation = Application.Proper(Format(Calendar1.Value, 'dddd d mmmm yyyy'))
End Sub
Private Sub txtDateDeLaPrestation_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Calendar1.Visible = True
End Sub
Private Sub txtSoldeFrancs_Change()
txtSoldeFrancs = Format(txtSoldeFrancs, '##,##0.00')
If txtSoldeFrancs > 0 Then
lblSoldeFrancs.ForeColor = &HFF&
lblSoldeEuros.ForeColor = &HFF&
Else
lblSoldeFrancs.ForeColor = &H80000008
lblSoldeEuros.ForeColor = &H80000008
End If
End Sub
Private Sub txtAccompteEuros_Change()
On Error Resume Next
txtAccompteEuros = Format(txtAccompteEuros, '##,##0.00')
txtSoldeEuros = CDbl(txtPrixEuros) - CDbl(txtAccompteEuros)
End Sub
Private Sub txtPrixEuros_Change()
On Error Resume Next
If txtPrixEuros <> '' Then
txtPrixFrancs = CDbl(txtPrixEuros) * 6.55957
If cbxAccompteEuros <> '' Then
txtSoldeEuros.Value = CDbl(txtPrixEuros) - CDbl(cbxAccompteEuros)
Else
txtSoldeEuros.Value = CDbl(txtPrixEuros)
End If
If cbxReduction <> '' Then
txtSoldeFrancs.Value = CDbl(txtPrixFrancs) - CDbl(txtAccompteFrancs) - CDbl(txtMontantRemiseEuros)
Else
txtSoldeFrancs.Value = CDbl(txtPrixFrancs)
End If
Else
txtPrixEuros = ''
If cbxAccompteEuros <> '' Then
txtSoldeEuros.Value = -CDbl(cbxAccompteEuros)
Else
txtSoldeEuros.Value = ''
End If
If cbxAccompteEuros <> '' Then
txtSoldeFrancs.Value = -CDbl(txtAccompteFrancs)
Else
txtSoldeFrancs.Value = ''
End If
End If
txtPrixEuros = Format(txtSoldeEuros, '##,##0.00')
lblAccompteFrancs.Visible = True
cbxAccompteEuros.Visible = True
lblSoldeFrancs.Visible = True
txtSoldeFrancs.Visible = True
lblPrixEuros.Visible = True
txtPrixEuros.Visible = True
lblSoldeEuros.Visible = True
txtSoldeEuros.Visible = True
End Sub
Private Sub txtSoldeEuros_Change()
On Error Resume Next
txtSoldeEuros = Format(txtSoldeEuros, '##,##0.00')
End Sub
Private Sub txtNomDuMarie_Change()
txtNomDuMarie.Value = UCase(txtNomDuMarie.Value)
End Sub
Private Sub txtPrenomDuMarie_Change()
txtPrenomDuMarie = Application.Proper(txtPrenomDuMarie)
End Sub
Private Sub txtNomDeLaMariee_Change()
txtNomDeLaMariee.Value = UCase(txtNomDeLaMariee.Value)
End Sub
Private Sub txtPrenomDeLaMariee_Change()
txtPrenomDeLaMariee = Application.Proper(txtPrenomDeLaMariee)
End Sub
Private Sub UserForm_Initialize()
Dim Ctrl As Control
'Ici je vide les Controls
For Each Ctrl In Me.Controls
If TypeOf Ctrl Is MSForms.TextBox Or TypeOf Ctrl Is MSForms.ComboBox Then
Ctrl = ''
End If
Next Ctrl
cbxAccompteEuros.Enabled = False
cbxReduction.Enabled = False
lblMontantRemiseEuros.Visible = False
lblMontantRemiseFrancs.Visible = False
txtMontantRemiseEuros.Visible = False
txtMontantRemiseFrancs.Visible = False
' Choix des Organisateurs, Nom des salles, Traiteurs, Type de soirée
Set WSDonneesPrix = Worksheets('Prix')
With WSDonneesPrix
PlageTypeDeSoirée = .Range('B4:B' & .Range('B2000').End(xlUp).Row).Address
End With
cbxTypeDeSoiree.RowSource = 'Prix!' & PlageTypeDeSoirée
' Choix de l'accompt
cbxAccompteEuros.AddItem '100,00'
cbxAccompteEuros.AddItem '200,00'
cbxAccompteEuros.AddItem '300,00'
'Réduction
cbxReduction.AddItem '10'
cbxReduction.AddItem '15'
cbxReduction.AddItem '20'
End Sub
Donc j'ai deux petits soucie :
Le premier :
Si je choisi un type de soirée et que je met sois un accompte, soit une réduction ou même les deux et que je veuille modifier le type de soirée les calculs me donnent des valeur qui n'on rien a voir.
Y'a t'il moyen d'y remedier ?
Le deuxième :
Cela est pour la valeur de l'accomte.
Pour le moment je passe par un ComboBox.Additem, mais cela serait il possible de faire en sorte que l'accompte ne dépasse pas la valeur du prix de départ.
Je vous remercie d'avance et m'excuse encore pour ne pas avoir mis de fichier joint, j'ai pourtant tout essayé,
Merci, G'Claire
Je vous met le code car sinon cela ne passe pas en fichier joint, et même en supprimant tout pour y laisser le stricte nécessaire cela fait 55 Mo, je suis vraiment désolé.
Dans un module :
Option Explicit
Public TypeDeSoiree As Byte
Dans l'userform :
Option Explicit
Dim Plage, PlagePrix As Range
Dim A, B, C, D As Long
Dim WSDonnees, WSDonneesPrix As Worksheet
Dim PlageTypeDeSoirée As String
Dim L As Integer 'Déclaration de variable 'L' pour connaitre la Ligne Numéro
Private Sub cbxAccompteEuros_Change()
On Error Resume Next
If cbxAccompteEuros.Text = '' Then
txtAccompteFrancs = ''
End If
If cbxAccompteEuros = '' Then
lblAccompteFrancs.ForeColor = &H80000008
lblAccompteEuros.ForeColor = &H80000008
Else
lblAccompteFrancs.ForeColor = &HFF0000
lblAccompteEuros.ForeColor = &HFF0000
End If
If cbxAccompteEuros <> '' Then
txtSoldeEuros.Value = CDbl(txtPrixEuros) - CDbl(cbxAccompteEuros)
Else
txtSoldeEuros.Value = CDbl(txtPrixEuros)
End If
If cbxAccompteEuros <> '' Then
txtAccompteFrancs = CDbl(cbxAccompteEuros) * 6.55957
txtSoldeFrancs.Value = CDbl(txtPrixFrancs) - CDbl(txtAccompteFrancs)
Else
txtSoldeFrancs.Value = CDbl(txtPrixFrancs)
End If
lblAccompteEuros.Visible = True
txtAccompteFrancs.Visible = True
End Sub
Private Sub cbxReduction_Change()
On Error Resume Next
If cbxReduction = '' Then
txtMontantRemiseEuros = ''
txtMontantRemiseFrancs = ''
lblMontantRemiseEuros.Visible = False
lblMontantRemiseFrancs.Visible = False
txtMontantRemiseEuros.Visible = False
txtMontantRemiseFrancs.Visible = False
Else
lblMontantRemiseEuros.Visible = True
lblMontantRemiseFrancs.Visible = True
txtMontantRemiseEuros.Visible = True
txtMontantRemiseFrancs.Visible = True
End If
txtMontantRemiseEuros = CDbl(txtPrixEuros) * CDbl(cbxReduction) / 100
txtMontantRemiseFrancs = CDbl(txtMontantRemiseEuros) * 6.55957
If cbxReduction <> '' Then
txtSoldeEuros = CDbl(txtPrixEuros) - CDbl(cbxAccompteEuros) - CDbl(txtMontantRemiseEuros)
Else
txtSoldeEuros.Value = CDbl(txtPrixEuros) - CDbl(cbxAccompteEuros)
End If
If cbxReduction <> '' Then
txtSoldeFrancs = CDbl(txtPrixFrancs) - CDbl(txtAccompteFrancs) - CDbl(txtMontantRemiseFrancs)
Else
txtSoldeFrancs.Value = CDbl(txtPrixFrancs) - CDbl(cbxAccompteEuros)
End If
If cbxAccompteEuros <> '' Then
txtSoldeEuros = CDbl(txtPrixEuros) - CDbl(cbxAccompteEuros) - CDbl(txtMontantRemiseEuros)
Else
txtSoldeEuros.Value = CDbl(txtPrixEuros) - CDbl(txtMontantRemiseEuros)
End If
If cbxAccompteEuros <> '' Then
txtSoldeFrancs = CDbl(txtPrixFrancs) - CDbl(txtAccompteFrancs) - CDbl(txtMontantRemiseFrancs)
Else
txtSoldeFrancs.Value = CDbl(txtPrixFrancs) - CDbl(txtMontantRemiseFrancs)
End If
'txtSoldeEuros = CDbl(txtPrixEuros) - CDbl(cbxAccompteEuros) - CDbl(txtMontantRemiseEuros)
'txtSoldeFrancs = CDbl(txtPrixFrancs) - CDbl(txtAccompteFrancs) - CDbl(txtMontantRemiseFrancs)
End Sub
Private Sub cbxTypeDeSoiree_Change()
Set WSDonneesPrix = Sheets('Prix')
Set PlagePrix = WSDonneesPrix.Range('B4:B' & WSDonneesPrix.Range('D65535').End(xlUp).Row)
On Error Resume Next
D = PlagePrix.Find(What:=cbxTypeDeSoiree, LookAt:=xlWhole).Row
With WSDonneesPrix
txtPrixEuros = .Range('C' & D)
End With
If cbxTypeDeSoiree = '' Then
cbxAccompteEuros = ''
cbxReduction = ''
txtPrixFrancs = ''
txtPrixEuros = ''
txtAccompteFrancs = ''
txtSoldeFrancs = ''
txtSoldeEuros = ''
cbxAccompteEuros.Enabled = False
cbxReduction.Enabled = False
Else
cbxAccompteEuros.Enabled = True
cbxReduction.Enabled = True
End If
lblPrixFrancs.Visible = True
txtPrixFrancs.Visible = True
End Sub
Private Sub cmdQuitter_Click()
Unload Me
End Sub
Private Sub txtAccompteFrancs_Change()
On Error Resume Next
txtAccompteFrancs = Format(txtAccompteFrancs, '##,##0.00')
End Sub
Private Sub txtMontantRemiseEuros_Change()
txtMontantRemiseEuros = Format(txtMontantRemiseEuros, '##,##0.00')
End Sub
Private Sub txtMontantRemiseFrancs_Change()
txtMontantRemiseFrancs = Format(txtMontantRemiseFrancs, '##,##0.00')
End Sub
Private Sub txtPortableDeLaMariee_Change()
PhoneFormat txtPortableDeLaMariee
End Sub
Private Sub txtPortableDuMarie_Change()
PhoneFormat txtPortableDuMarie
End Sub
Private Sub txtPrixFrancs_Change()
txtPrixFrancs = Format(txtPrixFrancs, '##,##0.00')
End Sub
Private Sub txtDateDeLaPrestation_Change()
txtDateDeLaPrestation = Application.Proper(Format(Calendar1.Value, 'dddd d mmmm yyyy'))
End Sub
Private Sub txtDateDeLaPrestation_DblClick(ByVal Cancel As MSForms.ReturnBoolean)
Calendar1.Visible = True
End Sub
Private Sub txtSoldeFrancs_Change()
txtSoldeFrancs = Format(txtSoldeFrancs, '##,##0.00')
If txtSoldeFrancs > 0 Then
lblSoldeFrancs.ForeColor = &HFF&
lblSoldeEuros.ForeColor = &HFF&
Else
lblSoldeFrancs.ForeColor = &H80000008
lblSoldeEuros.ForeColor = &H80000008
End If
End Sub
Private Sub txtAccompteEuros_Change()
On Error Resume Next
txtAccompteEuros = Format(txtAccompteEuros, '##,##0.00')
txtSoldeEuros = CDbl(txtPrixEuros) - CDbl(txtAccompteEuros)
End Sub
Private Sub txtPrixEuros_Change()
On Error Resume Next
If txtPrixEuros <> '' Then
txtPrixFrancs = CDbl(txtPrixEuros) * 6.55957
If cbxAccompteEuros <> '' Then
txtSoldeEuros.Value = CDbl(txtPrixEuros) - CDbl(cbxAccompteEuros)
Else
txtSoldeEuros.Value = CDbl(txtPrixEuros)
End If
If cbxReduction <> '' Then
txtSoldeFrancs.Value = CDbl(txtPrixFrancs) - CDbl(txtAccompteFrancs) - CDbl(txtMontantRemiseEuros)
Else
txtSoldeFrancs.Value = CDbl(txtPrixFrancs)
End If
Else
txtPrixEuros = ''
If cbxAccompteEuros <> '' Then
txtSoldeEuros.Value = -CDbl(cbxAccompteEuros)
Else
txtSoldeEuros.Value = ''
End If
If cbxAccompteEuros <> '' Then
txtSoldeFrancs.Value = -CDbl(txtAccompteFrancs)
Else
txtSoldeFrancs.Value = ''
End If
End If
txtPrixEuros = Format(txtSoldeEuros, '##,##0.00')
lblAccompteFrancs.Visible = True
cbxAccompteEuros.Visible = True
lblSoldeFrancs.Visible = True
txtSoldeFrancs.Visible = True
lblPrixEuros.Visible = True
txtPrixEuros.Visible = True
lblSoldeEuros.Visible = True
txtSoldeEuros.Visible = True
End Sub
Private Sub txtSoldeEuros_Change()
On Error Resume Next
txtSoldeEuros = Format(txtSoldeEuros, '##,##0.00')
End Sub
Private Sub txtNomDuMarie_Change()
txtNomDuMarie.Value = UCase(txtNomDuMarie.Value)
End Sub
Private Sub txtPrenomDuMarie_Change()
txtPrenomDuMarie = Application.Proper(txtPrenomDuMarie)
End Sub
Private Sub txtNomDeLaMariee_Change()
txtNomDeLaMariee.Value = UCase(txtNomDeLaMariee.Value)
End Sub
Private Sub txtPrenomDeLaMariee_Change()
txtPrenomDeLaMariee = Application.Proper(txtPrenomDeLaMariee)
End Sub
Private Sub UserForm_Initialize()
Dim Ctrl As Control
'Ici je vide les Controls
For Each Ctrl In Me.Controls
If TypeOf Ctrl Is MSForms.TextBox Or TypeOf Ctrl Is MSForms.ComboBox Then
Ctrl = ''
End If
Next Ctrl
cbxAccompteEuros.Enabled = False
cbxReduction.Enabled = False
lblMontantRemiseEuros.Visible = False
lblMontantRemiseFrancs.Visible = False
txtMontantRemiseEuros.Visible = False
txtMontantRemiseFrancs.Visible = False
' Choix des Organisateurs, Nom des salles, Traiteurs, Type de soirée
Set WSDonneesPrix = Worksheets('Prix')
With WSDonneesPrix
PlageTypeDeSoirée = .Range('B4:B' & .Range('B2000').End(xlUp).Row).Address
End With
cbxTypeDeSoiree.RowSource = 'Prix!' & PlageTypeDeSoirée
' Choix de l'accompt
cbxAccompteEuros.AddItem '100,00'
cbxAccompteEuros.AddItem '200,00'
cbxAccompteEuros.AddItem '300,00'
'Réduction
cbxReduction.AddItem '10'
cbxReduction.AddItem '15'
cbxReduction.AddItem '20'
End Sub
Donc j'ai deux petits soucie :
Le premier :
Si je choisi un type de soirée et que je met sois un accompte, soit une réduction ou même les deux et que je veuille modifier le type de soirée les calculs me donnent des valeur qui n'on rien a voir.
Y'a t'il moyen d'y remedier ?
Le deuxième :
Cela est pour la valeur de l'accomte.
Pour le moment je passe par un ComboBox.Additem, mais cela serait il possible de faire en sorte que l'accompte ne dépasse pas la valeur du prix de départ.
Je vous remercie d'avance et m'excuse encore pour ne pas avoir mis de fichier joint, j'ai pourtant tout essayé,
Merci, G'Claire