Textbox (point et virgule)

P

Pascal

Guest
Bonjour à tous et merci par avance pour l'aide que vous voudrez bien m'apporter.

Je viens de réaliser une macro facilitant la saisie de données sur une feuille excel.

A cet usage, j'ai créé un userform avec des textbox qui me servent pour saisir des nombres.

Quoiqu’il arrive, le nombre décimal est saisi dans le textbox avec un point(clavier numérique) :

1er cas : le chiffre envoyé dans la feuille excel est donc avec un point rendant ainsi impossible une simple somme.
2ème cas : j’ai réussi à faire en sorte que le nombre « arrive » sur la feuille de calcul avec une virgule. Donc là, les chiffres sont exploitables pour faire ladite somme.

Le problème est donc en partie résolu.

Cependant, le fichier doit servir toutes les semaines. Le userform doit donc relire les infos déjà saisies sur la feuille de calcul. Les données saisies la semaine précédente réapparaissent donc avec une virgule dans le textbox (et non plus avec un point comme lors de la saisie initiale). Si les infos sont validées sans être modifiées (ce qui arrivera régulièrement), la feuille excel est à nouveau alimentée avec des chiffres qui ne sont pas exploitables et je retombe donc dans la même galère.

Le changement dans les paramètres régionaux, n’a rien apporté de plus.

Je pense que la solution serait de retransformer la virgule en point lors de la relecture des chiffres par le masque de saisie.

J’espère avoir été clair et que l’un d’entre vous aura le petit « eurêka j’ai trouvé ».

Ps : je n’utilise pas de variables pour la gestion des textbox

Cordialement,

Ci joint le code servant à la relecture des infos par la grille et celui servant à la saisie.


Private Sub lawson_Change()
Dim LigneSel As Long
LigneSel = Lawson.ListIndex + 1
If LigneSel <= 0 Then
etude = ""
bst = ""
etude = ""
bst = ""
sas = ""
typeetude = "1,2,3 ou 4"
careception = "CA en euro"
caprogrammation = "CA en euro"
caanalyse = "CA en euro"
carapport = "CA en euro"
tpsreception = "Temps en jours "
tpsprogrammation = "Temps en jours"
tpsanalyse = "Temps en jours"
tpsrapport = "Temps en jours"
Else
etude = Sheets("synthese").Range("B" & (LigneSel * 4) - 1).Value
bst = Sheets("synthese").Range("C" & (LigneSel * 4) - 1).Value
sas = Sheets("synthese").Range("D" & (LigneSel * 4) - 1).Value
typeetude = Sheets("synthese").Range("e" & (LigneSel * 4) - 1).Value
avcareception = Sheets("s").Range("J" & (LigneSel * 4) - 1).Value
avcaprogrammation = Sheets("s").Range("J" & (LigneSel * 4)).Value
avcaanalyse = Sheets("s").Range("J" & (LigneSel * 4) + 1).Value
avcarapport = Sheets("s").Range("J" & (LigneSel * 4) + 2).Value
avtpsreception = Sheets("s").Range("I" & (LigneSel * 4) - 1).Value
avtpsprogrammation = Sheets("s").Range("I" & (LigneSel * 4)).Value
avtpsanalyse = Sheets("s").Range("I" & (LigneSel * 4) + 1).Value
avtpsrapport = Sheets("s").Range("I" & (LigneSel * 4) + 2).Value
End If

End Sub

Private Sub annuler_Click()


Dim rep As Byte

rep = MsgBox("Etes-vous sûr de vouloir quitter la saisie en cours", _
vbYesNo + vbQuestion, "Quitter la saisie ?")

If rep = vbYes Then
Me.Hide
Set Synthese = Nothing
End

End If

End Sub
Public Sub saisie(ligne As Integer, Lawson As String, etude As String, bst As String, _
sas As String)

For compteur = 0 To 3 Step 1

Sheets("s").Range("A" & ligne + compteur).Value = Lawson
Sheets("s").Range("B" & ligne + compteur).Value = etude
Sheets("s").Range("C" & ligne + compteur).Value = bst
Sheets("s").Range("D" & ligne + compteur).Value = sas
Sheets("s").Range("E" & ligne + compteur).Value = typeetude
If compteur = 0 Then Sheets("s").Range("J" & ligne + compteur).Value = avcareception: Sheets("s").Range("I" & ligne + compteur).Value = avtpsreception Else
If compteur = 1 Then Sheets("s").Range("J" & ligne + compteur).Value = avcaprogrammation: Sheets("s").Range("I" & ligne + compteur).Value = avtpsprogrammation Else
If compteur = 2 Then Sheets("s").Range("J" & ligne + compteur).Value = avcaanalyse: Sheets("s").Range("I" & ligne + compteur).Value = avtpsanalyse Else
If compteur = 3 Then Sheets("s").Range("J" & ligne + compteur).Value = avcarapport: Sheets("s").Range("I" & ligne + compteur).Value = avtpsrapport Else

Next compteur


End Sub
 
P

Phoenix

Guest
Salut Pacal

Sans etre un pro, pour ton probleme de point et de virgule, j'avais solutionné cela en indiquant a mon PC que le point correspondait a la virgule dans le parrametrage linguistique ( Demarrer / panneau de config /options regionales /personaliser ) dans symbole décimal tu met un point au lieu de la virgule.

tu n'as plus qu'a saisir toutes tes valeurs avec un point.

@+

Phoenix
 

Discussions similaires

Réponses
11
Affichages
296

Statistiques des forums

Discussions
312 229
Messages
2 086 426
Membres
103 206
dernier inscrit
diambote