Lameche15
Messages postés156Date d'inscriptionmardi 9 septembre 2008StatutMembreDernière intervention15 septembre 2022
-
5 oct. 2015 à 14:47
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018
-
6 oct. 2015 à 00:07
Bonjour à tous,
J'aimerais remplir une base de données depuis une Userform.
J'utilise des textbox pour récupérer les valeurs dont j'ai besoin.
Pour ma colonne montant, que j'ai pris soin de mettre au format monétaire avec symbole, j'aimerais récupérér la valeur de ma textbox n°5:
J'ai donc écrit ceci:
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 5 oct. 2015 à 19:04
Bonjour,
1) Si je comprends bien, tu te sers finalement de cette textbox pour renseigner une cellule.
Il n'est dans ce cas pas très adroit de formater la textbox. Préfère formater la cellule elle-même !
2) pourquoi ne pas utiliser tout simplement l'évènement keydown de la textbox concernée pour transformer en "," ton "." ? (ce serait alors vraiment simple).
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 Modifié par ucfoutu le 5/10/2015 à 20:45
Regarde ce que fait ce petit exemple tout bête que je vien d'écrire :
Dans cet exemple : une textbox textbox 1 et un bouton de commande, sur une feuille de calcul
Private Sub CommandButton1_Click() Range("A1").Value =TextBox1.Text Range("A1").NumberFormat = "0.00 €" End Sub
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) If KeyAscii = 44 Then KeyAscii = 46 End Sub
Dans la textbox : ne frappe que le chiffre, sans la monnaie (euro). Fais-le comme tu veux, avec virgule ou point comme décimale
Clique sur Commandbutton1 === >>> constate ...
________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.
ucfoutu
Messages postés18038Date d'inscriptionlundi 7 décembre 2009StatutModérateurDernière intervention11 avril 2018211 Modifié par ucfoutu le 6/10/2015 à 07:50
et tu peux même perfectionner le contrôle de saisie dans la foulée.
Ainsi, par exemple
Private Sub CommandButton1_Click() Range("A1").Value = TextBox1.Text Range("A1").NumberFormat = "0.00 €" End Sub
Private Sub TextBox1_KeyPress(ByVal KeyAscii As MSForms.ReturnInteger) Select Case KeyAscii Case 44, 46 ' que l'on frappe une virgule ou un point If InStr(TextBox1.Text, ".") Then 'si déjà un point présent KeyAscii = 0 'on ne permet pas deux points Else ' sinon KeyAscii = 46 'on force le point End If Case 48 To 57 'on laisse passer Case Else KeyAscii = 0 'on ne laisse pas passer End Select End Sub
EDIT IMPORTANT : pourquoi est-il nécessaire d'agir de cette manière (formatage de la cellule et non de la textbox) ? Tout simplement parce que, de cette manière, le contenu de la cellule sera numérique et non une chaîne de caractères. Or, seul un contenu numérique se prêtera à des opérations du tableur ...
J'ajoute par ailleurs que cette solution est valable quelle que soit la machine utilisée (que son séparateur décimal soit le point ou la virgule), puisque la saisie est automatiquement faite avec le point (même si l'on frappe une virgule). Dans la cellule figurera ainsi toujours le séparateur valable sur la machine. L'avantage n'échappera pas ....
________________________
Nul ne saurait valablement coder ce qu'il ne saurait exposer clairement.