Manipulation de formats

Troudz

XLDnaute Occasionnel
Bonjour le forum,

J'ai un peu honte de poser une question aussi basique mais ça fait des plombes que je tourne en rond sans trouver de solution.

J'explique mon soucis. Je fais saisir des montants à mon utilisateur via un userform. Afin de soigner la présentation, je joue sur les évenements Enter et Exit pour séparer les milliers quand on est pas dans le textbox et ne pas les séparer quand on y rentre.

J'utilise pour cela :
Code:
Private Sub Textbox1_Exit(ByVal Cancel As MSForms.ReturnBoolean)
    If Textbox1 = "" Then
        Textbox1 = 0
    Else
        Textbox1 = VBA.Format(R4Textbox1, "###,##0")
    End If
End Sub

Code:
Private Sub Textbox1_Enter()
    R4Textbox1 = VBA.Format(Textbox1, "0")
End Sub

Lorsque la saisie est terminée, j'enregistre la saisie dans ma feuille en faisant attention de la garder au format numérique avec :
Code:
Cells(1, 1) = val(R4Textbox2)

Malgré toutes ces précautions, lorsque l'utilisateur saisi un nombre du genre "198 222", je n'ai que les 198 qui sont saisis dans ma cellule.

Est ce que qqun saurait me dire pourquoi ? Est ce que je fais une erreur dans mes formats ?

Je vous remercie d'avance et souhaite une bonne fin de journée à tout le forum.
 
G

Guest

Guest
Re : Manipulation de formats

Bonsoir,

Voir l'aide excel sur 'val', interressant.

'Remplacer le "," éventuel par un point et l'espace par ""
Code:
Cells(1,1)=Val(replace(replace("TextBox1,",",".")," ",""))
A+

A+
 

Troudz

XLDnaute Occasionnel
Re : Manipulation de formats

Bonsoir Hasco,

J'aimerai bien voir l'aide mais je suis au boulot et Excel plante lamentablement à chaque fois que j'y fais une recherche :mad::mad::mad: c'est pas faute de l'avoir signalé pourtant.

Ce n'est pas un problème de virgule ou de point puisque ce sont des nombres entiers qui sont saisis.

J'ai continué à gratter de mon côté et j'ai changé le format utilisé en mettant :

Code:
Textbox1 = VBA.Format(R4Textbox1, "# ##0")

et apparement ça fonctionne. Est ce que cette solution te semble pérenne ou c'est juste un hasard si ça fonctionne ?
 
G

Guest

Guest
Re : Manipulation de formats

Re
Ben, cela n'a rien à voir avec ta question initiale qui était:
lorsque l'utilisateur saisi un nombre du genre "198 222", je n'ai que les 198 qui sont saisis dans ma cellule.
A laquelle je répondais plus haut. Pas sur les textbox.


Mais oui cela devrait fonctionner.

A+
 

Troudz

XLDnaute Occasionnel
Re : Manipulation de formats

Désolé Hasco, je me suis mal fait comprendre.

Si je saisie "198 211" dans mon textbox et que je fais :
Code:
Textbox1 = VBA.Format(R4Textbox1, "###,##0")

lorsque je reporte Textbox1 dans ma celulle, je n'obtiens que 198.

Alors que si je fais :
Code:
Textbox1 = VBA.Format(R4Textbox1, "# ##0")

j'obtiens bien 198 211 dans ma cellule.

Par contre ça ne sépare que les milliers, pas les millions.
 
G

Guest

Guest
Re : Manipulation de formats

Bonjour,

Pose une question, claire, tu parles de textbox, de cellules, de ce que tu obtiens sans réelle question.

Au contraire de l'interface utilisateur qui peut-être localisée, vba fonctionne toujours avec les normes US, dont le séparateur de milliers(millions) est la virgule.

Produira un texte dans la cellule:
Code:
Cells(1,1) = VBA.Format(R4Textbox1, "#,##0")

Produire une valeur numérique pour une cellule à partir d'un texte contenant des espaces
Code:
Cells(1,1)=Cdbl(R4Textbox1)
Cells(1,1).numberFormat= "#,##0"
C'est le format de la cellule qu'il faut changer pas le format de la valeur textuelle.
(Cdbl lèvera une erreur si dans le texte il y a un '.' il faudra au préalable le remplacer)

Si cela ne répond pas à ta demande, fournit un fichier exemple, avec une question précise et des explications précises de ce que tu veux obtenir.

A+
 

Troudz

XLDnaute Occasionnel
Re : Manipulation de formats

Merci pour cette explication Hasco, j'y vois désormais un peu plus clair.

Je suis désolé si ma question n'était pas claire au départ. Il me semblait pourtant avoir bien expliqué qu'il y avait "saisie dans textbox" puis "report dans cellule". Et que mon soucis au final était un problème de format entre la saisie et le report.

En tout cas, je te remercie pour cette réponse plus claire que la question :)
 

Discussions similaires

Réponses
49
Affichages
985

Statistiques des forums

Discussions
314 628
Messages
2 111 332
Membres
111 103
dernier inscrit
Maxime@mar