Calcule avec control

G

G'Claire

Guest
Salut a toutes et tous,

Il y a quelque temps j'avait poster un post pour des souci de calcul avec des controls, et bien a mon grand regret cela ne va toujours pas et cela me soul car je ne comprends pas le pourquoi de la chose :

Mais le hic et que sur une version anterieur a celle ou j'en suis cela fonctionne et dans le code je ne vois pas de différance:

Si joint le fils de discution ou Hervé m'avait aider et ou je pensais que cela fonctionné :

<http://www.excel-downloads.com/html/French/forum/read.php?f=1&i=72226&t=71161>

Mon problème et que le calcul se fait bien, mais pour le Solde en Euros cela ne veux pas me mettre le centimes, cela me met les centimes a 00, voici le code que j'ai pour ces calcules

Private Sub cbxPrixFrancs_Change()

txtPrixEuros = Val(cbxPrixFrancs) / 6.55957
txtSoldeFrancs.Value = Val(cbxPrixFrancs) - Val(txtAccompteFrancs)
txtSoldeEuros.Value = Val(cbxPrixFrancs) / 6.55957 - Val(txtAccompteEuros)

End Sub

Private Sub txtAccompteEuros_Change()

txtAccompteEuros = Format(txtAccompteEuros, "##,##0.00")
txtSoldeEuros = Val(txtPrixEuros) - Val(txtAccompteEuros)
End Sub

Private Sub txtAccompteFrancs_Change()

If txtAccompteFrancs.Text = "" Then txtAccompteFrancs = 0

If txtAccompteFrancs = "" Then
LabelAccompteFrancs.ForeColor = &H80000008
LabelAccompteEuros.ForeColor = &H80000008
Else
LabelAccompteFrancs.ForeColor = &HFF0000
LabelAccompteEuros.ForeColor = &HFF0000
End If

txtAccompteEuros = Val(txtAccompteFrancs) / 6.55957
txtSoldeFrancs = Val(cbxPrixFrancs) - Val(txtAccompteFrancs)
End Sub
Private Sub txtPrixEuros_Change()

txtPrixEuros = Format(txtPrixEuros, "##,##0.00")

End Sub

Private Sub txtSoldeEuros_Change()

txtSoldeEuros = Format(txtSoldeEuros, "##,##0.00")

End Sub


Private Sub txtSoldeFrancs_Change()

txtSoldeFrancs = Format(txtSoldeFrancs, "##,##0.00")

If txtSoldeFrancs > 0 Then
LabelSoldeFrancs.ForeColor = &HFF&
LabelSoldeEuros.ForeColor = &HFF&
Else
LabelSoldeFrancs.ForeColor = &H80000008
LabelSoldeEuros.ForeColor = &H80000008
End If

End Sub

Je vous remercie par avance, de votre aide,G'Claire
 
G

G'Claire

Guest
David, le forum

Merci, pour ton renseignement, mais le souci est que sur une version anterieur cela fonctionne et le code est le même.

Pourrais t'il y avoir une proprieté d'un controle qui empèche d'afficher les Centimes sachant qu'avant de mettre un accompte en frcs, le solde en €uros s'affiche correctement et ensuite je mets cet accompte en les centimes se mettent a 00.

J'essaye et te dit

Merci, G'Claire
 
G

G'Claire

Guest
Hello le forum,

En cette belle journée doménical, je viens de trouver l'erreur qui me provoquée une incompatibilité de type sur ce code :

Option Explicit

Dim Plage As Range
Dim A As Long
Dim L As Integer 'Déclaration de variable "L" pour connaitre la Ligne Numéro

Private Sub BoutNouvelle_Click()

Dim L As Integer 'Déclaration de variable "L" pour connaitre la Ligne Numéro
Dim CTRL As Control

'Ici c'est le report de la saisie dans la feuille
With Sheets("Renseignements")
.Range("O" & L).Value = cbxPrixFrancs.Value
.Range("P" & L).Value = cbxAccompteFrancs.Value
.Range("Q" & L).Value = txtSoldeFrancs.Value
.Range("R" & L).Value = txtPrixEuros.Value
.Range("S" & L).Value = txtAccompteEuros.Value
.Range("T" & L).Value = txtSoldeEuros.Value
End With

'Ici je renvoie pour établir le contrat
EnvoieContrat_rectoEtVerso

'Ici je vide les Controls
cbxPrixFrancs = ""
cbxAccompteFrancs = ""
txtSoldeFrancs = ""
txtPrixEuros = ""
txtAccompteEuros = ""
txtSoldeEuros = ""

End Sub

Private Sub cmdQuitter_Click()
Unload Me
End Sub

'Ici j'établie le contrat en envoie manuel
Private Sub CmdButEnvoieContratRecto_Click()
EnvoieContrat_rectoEtVerso
End Sub

Private Sub cbxPrixFrancs_Change()

If cbxPrixFrancs <> "" Then
txtPrixEuros = CDbl(cbxPrixFrancs) / 6.55957
If cbxAccompteFrancs <> "" Then
txtSoldeFrancs.Value = CDbl(cbxPrixFrancs) - CDbl(cbxAccompteFrancs)
Else
txtSoldeFrancs.Value = CDbl(cbxPrixFrancs)
End If
If txtAccompteEuros <> "" Then
txtSoldeEuros.Value = CDbl(txtPrixEuros) - CDbl(txtAccompteEuros)
Else
txtSoldeEuros.Value = CDbl(txtPrixEuros)
End If
Else
txtPrixEuros = ""
If cbxAccompteFrancs <> "" Then
txtSoldeFrancs.Value = -CDbl(cbxAccompteFrancs)
Else
txtSoldeFrancs.Value = ""
End If
If txtAccompteEuros <> "" Then
txtSoldeEuros.Value = -CDbl(txtAccompteEuros)
Else
txtSoldeEuros.Value = ""
End If
End If

End Sub

Private Sub cbxAccompteFrancs_Change()

If cbxAccompteFrancs.Text = "" Then cbxAccompteFrancs = "0,00"

If cbxAccompteFrancs = "" Then
LabelAccompteFrancs.ForeColor = &H80000008
LabelAccompteEuros.ForeColor = &H80000008
Else
LabelAccompteFrancs.ForeColor = &HFF0000
LabelAccompteEuros.ForeColor = &HFF0000
End If

txtAccompteEuros = CDbl(cbxAccompteFrancs) / 6.55957
txtSoldeFrancs = CDbl(cbxPrixFrancs) - CDbl(cbxAccompteFrancs)
End Sub

Private Sub txtSoldeFrancs_Change()

txtSoldeFrancs = Format(txtSoldeFrancs, "##,##0.00")

If txtSoldeFrancs > 0 Then
LabelSoldeFrancs.ForeColor = &HFF&
LabelSoldeEuros.ForeColor = &HFF&
Else
LabelSoldeFrancs.ForeColor = &H80000008
LabelSoldeEuros.ForeColor = &H80000008
End If

End Sub

Private Sub txtAccompteEuros_Change()
txtAccompteEuros = Format(txtAccompteEuros, "##,##0.00")
txtSoldeEuros = CDbl(txtPrixEuros) - CDbl(txtAccompteEuros)
End Sub

Private Sub txtPrixEuros_Change()
txtPrixEuros = Format(txtPrixEuros, "##,##0.00")
End Sub

Private Sub txtSoldeEuros_Change()
txtSoldeEuros = Format(txtSoldeEuros, "##,##0.00")
End Sub

Private Sub UserForm_Initialize()


cbxPrixFrancs.AddItem "1500,00"
cbxPrixFrancs.AddItem "1800,00"
cbxPrixFrancs.AddItem "2200,00"

cbxAccompteFrancs.AddItem "10,00"
cbxAccompteFrancs.AddItem "20,00"
cbxAccompteFrancs.AddItem "30,00"

End Sub
Sub EnvoieContrat_rectoEtVerso()

With Sheets("Contrat_recto")

'Ici je remplie le contrat
.txtPrix = "Le tarif de cette prestation a été fixé à " & USF_FicheDeRenseignements.txtPrixEuros & " €, soit " & USF_FicheDeRenseignements.cbxPrixFrancs & " francs."

'Ici je pose une condition pour l'affichage ou non suivant versement d'accompte
If USF_FicheDeRenseignements.cbxAccompteFrancs = "" Then
.TxtAccompte = ""
Else
.TxtAccompte = "Un accompte a été versé à la signature du contrat de " & USF_FicheDeRenseignements.txtAccompteEuros & " € , soit " & USF_FicheDeRenseignements.cbxAccompteFrancs & " francs."
End If

.txtSolde = "Il restera donc a régler le jour de la prestation la somme de " & USF_FicheDeRenseignements.txtSoldeEuros & " € , soit " & USF_FicheDeRenseignements.txtSoldeFrancs & " francs."
End With

With Sheets("Contrat_verso")
.lblDateDeSignature = "Fait à Valence le " & Application.Proper(Format(Now, "dddd dd mmmm yyyy "))
End With
End Sub

En faite au moment de l'envoie, dans la feuille un calcule ne devait peu être pas fini et je vidé mes controls.

'Ici je vide les Controls
cbxPrixFrancs = ""
cbxAccompteFrancs = ""
txtSoldeFrancs = ""
txtPrixEuros = ""
txtAccompteEuros = ""
txtSoldeEuros = ""

ce qui devait me provoquer une erreur car le TextBoxPrixEnFrancs été vide et je ne peu mettre une valeur dans le control CbxAccomptFrancs (même 0,00), si ce control n'est pas rempli, (Donc j'ai mis ce code dans l'UserformInizialyse.)


Ce qui vient a vous demander :

Comment pourrais-je remplir malgrés tout ce control, car au moment des saisie des données par inadvertance, il se pourrait que celui-ci soit saisie en premier et me provoquer cette erreur.

Je vous remercie de votre aide, G'Claire
 

Pièces jointes

  • GestionDesContratsTarification.zip
    43.8 KB · Affichages: 8

Discussions similaires

Statistiques des forums

Discussions
312 331
Messages
2 087 359
Membres
103 528
dernier inscrit
hplus