Problème de Type

G

GClaire

Guest
Re, a toutes et tous

Je remet un post, qui est plus ou moins lié a ce post.

<http://www.excel-downloads.com/html/French/forum/messages/1_127146_127146.htm>

J'envois la valeur minimun d'heures dans la cellule (AX31) avec le code suivant, en partie donné par @Thierry, merci a lui :

Private Sub ValiderHeuresMiniMumJours_Click()
Dim TheNum As Byte
Dim i
TheDate = Month(Date)
TheNum = CByte(Month(Date))
If HeuresMiniMumJours = "" Then
MsgBox "Veuillez entrer une durée minimum de garde !!!", vbCritical, "Erreur à la validation"
HeuresMiniMumJours.SetFocus
Exit Sub
End If

MsgBox "Les données seront modifié pour la période restante de : " & _
(Worksheets(TheNum).Name) & " à " & (Worksheets(12).Name)
For i = TheNum To 12
With Worksheets(i)
.Range("AX31") = HeuresMiniMumJours.Value
End With
Next i
Unload Me
End Sub

et pour le format du TextBox :

Private Sub HeuresMiniMumJours_Enter()
HeuresMiniMumJours = format(HeuresMiniMumJours, "#,##0.00")
End Sub

Private Sub HeuresMiniMumJours_Exit(ByVal Cancel As MSForms.ReturnBoolean)
HeuresMiniMumJours = format(HeuresMiniMumJours, "#,##0.00")
End Sub

Donc si je garde, la valeur envoyée de la sorte, les heures supplémentaires (Supérieur a 5,50) ne sont pas comptées (Sauf pour les jours sans gardes), par contre si je tape dans cette cellule manuellement la valeur 5,50, cela fonctinne.

Donc avec Jean-Marie, m'a dit que cela venais d'un problème de type (1 ou 2).

Et m'as sugérer de modifier mon code de cette manière:

.Range("AX31") = HeuresMiniMumJours.Value

par

.Range("AX31") = Val (HeuresMiniMumJours)

Chose que j'ai faite, mais le problème et que la valeur retournée dans la cellule est 5,00 pour la valeur saisie dans le TextBox 5,50

Ce que me disait Jean-Marie est que par ce code je suis obligé de saisir dans le TextBox 5.50 au lieu de 5,50, car VBA ne comprends pas le point "." (si j'ai bien compris)

Comment puis-je faire, pour remédier a cela?

Merci d'avance, G'Claire
 
J

jmps

Guest
Bonjour G'CLaire,

Essaye comme ça :

.Range("AX1").Value = Val(WorksheetFunction.Substitute(HeuresMiniMumJours.Value, ",", "."))

Ca te remplace la virgule saisie par un point. Comme ça VBA comprendra 5.50 même quand tu saisis 5,50

J'espère que c'est bien ce que tu cherches à faire.

A+

José
 
J

Jocelyn

Guest
bonjour le Forum,
Bonjour GClaire,

voila un morceau de code donné aussi par @Thierry (merci a lui) qui régle normalement le probleme du point:

Private Sub HeuresMiniMumJours_Enter(ByVal KeyAscii As MSForms.ReturnInteger)
If KeyAscii = 44 Or KeyAscii = 46 Then
KeyAscii = Asc(Application.International(xlDecimalSeparator))
End If
End Sub

Voila j'espére que j'avais bien compris l'utilité de ce code et qu'il va d'aider.

A+
Jocelyn
 

Discussions similaires

Statistiques des forums

Discussions
312 570
Messages
2 089 768
Membres
104 271
dernier inscrit
acuponctus