Textbox (point et virgule)

  • Initiateur de la discussion Initiateur de la discussion Pascal
  • Date de début Date de début

Boostez vos compétences Excel avec notre communauté !

Rejoignez Excel Downloads, le rendez-vous des passionnés où l'entraide fait la force. Apprenez, échangez, progressez – et tout ça gratuitement ! 👉 Inscrivez-vous maintenant !

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
 
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
 
- Navigue sans publicité
- Accède à Cléa, notre assistante IA experte Excel... et pas que...
- Profite de fonctionnalités exclusives
Ton soutien permet à Excel Downloads de rester 100% gratuit et de continuer à rassembler les passionnés d'Excel.
Je deviens Supporter XLD
Assurez vous de marquer un message comme solution pour une meilleure transparence.

Discussions similaires

  • Question Question
Microsoft 365 worksheet_change
Réponses
29
Affichages
479
Réponses
2
Affichages
201
Réponses
4
Affichages
177
Réponses
8
Affichages
233
Réponses
2
Affichages
153
Réponses
4
Affichages
461
Réponses
10
Affichages
281
Retour