Format textbox dans un userform

Bonjour,

Grand débutant en VBA, avec un pb récurrent...

Je cherche à forcer l'affichage de textbox (numérique, date, et monétaire) dont les valeurs sont issues d'une feuille de calcul.

J'ai essayé les solutions suivantes (Dans un fichier exemple) sans ... rien comme résultat :

Private Sub puhtpdt1_AfterUpdate()

'puhtpdt1.Value = Format(puhtpdt1.Value, "# ##0.00 €")

'puhtpdt1.Value = Round(Val(puhtpdt1.Value), 2)

'puhtpdt1.Value = Format(Text1.Value, "# ##0.00 €")

'math.round(puhtpdt1,3)

'puhtpdt1.Value = Format(puhtpdt1.Value, "0.00 €")

'valeur = CDbl(puhtpdt1.Value)

'Me.puhtpdt1 = Format(Me.puhtpdt1, "#,##0.00 €")

End Sub

Private Sub puhtpdt1_change()

'Me.puhtpdt1 = Format(Me.puhtpdt1, "#,##0.00 €")

'puhtpdt1.Value = Round(Val(puhtpdt1.Value), 2)

'puhtpdt1.Value = Format(Text1.Value, "# ##0.00 €")

End Sub

J'avoue ne plus rien comprendre. En PJ le fichier en question.

Pourriez vous m'aider, ensuite je mettrai en application dans le fichier réel.

Merci d'avance.

31pb-userbox.xlsm (27.34 Ko)

Bonjour,

Votre fichier plante chez moi.

Mais si je test cette macro dans un nouveau fichier avec un nouvel Userform, elle fonctionne :

Private Sub TextBox1_Change()

    TextBox1.Value = Format(TextBox1.Value, "0.00 €")

End Sub

Attention par contre, la fonction Format renvoie une valeur texte et non un nombre valide.

Bonjour,

J'avais oublié de préciser pour XL 2018 FR.

Et merçi pour cette réponse.

Je l'ai intégrée après modification du nom de la textbox

puhtpdt1.Value = Format(puhtpdt1.Value, "0.00 €") ou puhtpdt1 est le nom de la textbox

* dans :

Private Sub affichage_initialise() de l'userform

* dans :

Private Sub puhtpdt1_AfterUpdate() du textbox

* et :

Private Sub puhtpdt1_change() du textbox.

Toujours pas de changement.

A moins que je sache pas mettre la ligne de code au bon endroit ?

Merci encore.

Étonnant qu'il ne s'ouvre pas. Fait avec XL 2018.

Pour la différence texte/nb cela n'a pas d'importance c'est pour un affichage informatif. Je ne fais que renseigner CONTROLSOURCE dans les propriétés de la textbox en indiquant la référence de la cellule d'origine de la valeur.

Je mets le fichier au format 97-2003

A+

Bonjour,

Ne le prend pas mal mais...(précautions oratoires !) Tu sembles n'avoir qu'une très vague idée de l'utilité et à plus forte raison de la conception d'un UserForm.

D'ailleurs même pour Office ou Excel tu sembles aussi peu crédible puisque Office Excel 2018 n'existe pas encore et n'existera jamais : On est passé directement de 2016 à 2019 !

Bon après ça ne veut pas dire qu'on ne veut pas te donner un coup de main, mais... Il va falloir se retrousser les manches ! Hein.

Pour positiver un peu, ça serait bien que tu nous expliques (sans parler de classeur ni d'Excel)

Dans quel contexte tu te trouves :

Tu essaies de bricoler un truc avec un UserForm histoire de ne pas mourir idiot, mais tu n'as pas d'objectif précis.

Ou au contraire tu essaies de bricoler un utilitaire dans un contexte bien précis (dans ce cas ça serait bien de préciser le but recherché.)

Essaie d'être le plus précis possible parce que là on voit bien qu'il s'agit vaguement d'un ticket de caisse, mais ça ne nous dit rien de la finalité (exercice, entrainement ou au contraire gestion d'une buvette, que sais-je...)

En fonction de la précision de ta réponse on essaiera de t'orienter dans une direction la plus pertinente possible.

Parce que pour le moment c'est très nébuleux.

A+

Bonjour,

Galopin01,

Oups, je me suis emmêlé avec les versions. Donc avec XL2019.

J'ai bien dit grand débutant, je n'ai donc aucune prétention. L'Userform devrait être là pour saisir des données. Je le détourne mais je ne connais, à mon niveau, pas d'autre solution.

Dans quel contexte je me trouve, et donc mon objectif :

J'ai créé un classeur qui simule un encaissement dans une supérette en partant d'une liste de produits, de clients, …avec émission soit d'un ticket soit d'une facture. Et ce dans le cadre d'une utilisation par des élèves.

Le Userform (Utilisé à mauvais escient) permet de récapituler certaines informations et de les présenter visuellement comme s'il s'agissait d'un ticket de caisse. Cela me permet d'afficher un "écran" après un clic sur un bouton simulant un ticket de caisse pour éviter des impressions sauvages.

Je ne souhaite donc pas de saisie dans les Textbox (J'ai trouvé pour bloquer la saisie et uniquement visualiser avec Enabled=False), les valeurs sont donc issues de la feuille de calcul.

Le fichier joint est plus que simplifié.

Mon problème est que certaines données ne sont plus au format souhaité.

Voila. Si cela peut fournir de l'aide...

Merci.

A+

Bonjour toutes et tous

coucou Galopin et Pedro22

@magnan

Si, j'ai un peu compris pour la textbox 2 de ton userform affichage pour l'heure n'étant pas au bon format hh:mm:ss

un petit bricolage à l'ouverture de l'userform affichage (initialize)

ztest888

Désolé je n'ai pas 2019 je ne peux pas utiliser ce fichier dans ces conditions

A+.

Re,

Galopin01,

J'ai mis dans un message (Le 3ieme) le fichier dans un format plus ancien.

A+

Décidément cet UserForm non conventionnel ne me dit rien.

Est-ce ton complément (ATLEntity...) qui perturbe le fonctionnement ? Je ne sais pas.

A+

Re,

coucou Galopin

peut être que les textboxs de l'userform, leurs propriétés sont tous sur enabled=false

classeur qui me fait planté grrr

Re,

Vérification des compléments Excel installés :

Analysis tool pack

Analysis tool pack VBA

Complement solveur

Euro currency tool

et basta.

Et aucun autre complément n’apparaît.

Les propriétés sont bien sur enabled=false.

Mais j'avais fait les essais avant de me positionner sur cette valeur

Désolé pour les plantages. Que faire ?

A+

Re,

Oups

Je n'arrive pas à supprimer ce message.

Désolé.

Re,

Oups

Je n'arrive pas à supprimer ce message.

Désolé.

Je ne sais pas. Ton truc est pas banal... Peut-être qu'un expert passera par là ?

(ATLEntity... est dans les références VBA je ne sais même pas d’où tu sors ça même Google est pas trop explicite.

De toute façon je ne pense pas que ce soit ça qui me bloque.

Bon de toute façon tu prends carrément le contre pied de ce pourquoi les UserForm sont faits... Tu me diras que tu demandes juste à consulter... C'est vrai, mébon : Ça ne me console pas !

Au passage si tu peux m'expliquer pourquoi je n'arrive pas à vider ton Userform des données de la feuille sans que ça n'efface cette feuille. Ça j'avais encore jamais vu ça en 20 ans de forum ! Je ne pense pas que ce soit du à 2019 car ton fichier converti en 2003 à exactement le même comportement. Bref je deviens un peu chèvre avec ce classeur !

A+

Bonsoir

tu refais ton userform

et tu touche pas au textbox

exemple pour les textbox

Private Sub UserForm_Activate()
TextBox1.Value = Range("B2").Text
TextBox6.Value = Range("C10").Text
TextBox7.Value = Range("B7").Text
End Sub

A+

Maurice

Bonjour,

Archer :

Je suis reparti de la feuille de calcul, refait totalement un userform, sans changer les propriétés à l'exception de caption.

Et suivi tes conseils de refaire Private Sub UserForm_Activate() pour tous les textbox.

Le résultat reste le même.

Galopin01 :

ATLEntity ? ou trouver cette bête ? pour éventuellement la désinstaller

En fichier joint la version 2 au format 97-2003

Et vous, en faisant un userform sur vos machines, ou en paramétrant les textbox existants, arrivez-vous au même blocage de format des textbox ?

Merci pour vos conseils.

A+

16pb-userbox2.zip (17.67 Ko)

Pour ATLEntity c'est dans le Outils > Références... de VBA YAKA le décocher... Bien vérifier apès avoir validé que la petite boite est bien décochée. Mais c'est pas ça qui fera avancer le pb.

Pour le reste je vais me débrouiller en refaisant un UserForm "à ma main". Mais il faudra attendre ce soir car je ne serai pas très libre aujourd'hui.

A+

Re,

Décoché. Mais rien de différent sous le soleil.

Merci pour le suivi.

A+ et bonne journée.

Bonjour

dernier envoie

mettre les textbox par defaut

Dim Ctrl As Control
Dim Sh As Object

Private Sub UserForm_Initialize()
Me.Caption = "Lecture Nom ????"
Me.BackColor = &H80000005
   For Each Ctrl In Me.Controls
      Select Case Left(Ctrl.Name, 3)
          Case "Tex"
            Ctrl.BackColor = &H80000018
            Ctrl.Font.Name = "Arial Narrow"
            Ctrl.ControlSource = ""
            Ctrl.Font.Size = 10
            Ctrl.Font.Bold = True
            Ctrl.Height = 22
            Ctrl.Text = ""
         Case "Lab"
'            Ctrl.BackColor = &H80000018
            Ctrl.BackStyle = 0
            Ctrl.Font.Name = "Arial Narrow"
            Ctrl.Font.Size = 12
            Ctrl.Font.Bold = True
            Ctrl.Height = 25
       End Select
   Next Ctrl
End Sub

Private Sub UserForm_Activate()
    ' date
    TextBox1.Value = Range("C5").Text
    ' heure
    TextBox2.Value = Range("E5").Text
    'vendeur
    TextBox3.Value = Range("B2").Text
    'nom pdt1
    TextBox4.Value = Range("B10").Text
    'puht pdt1
    TextBox5.Value = Application.Trim(Range("C10").Text)
    'tx tva pdt1
    TextBox6.Value = Range("D10").Text
    'tva pdt1
    TextBox7.Value = Application.Trim(Range("E10").Text)
    'puttc pdt1
    TextBox8.Value = Range("F10").Text
    'nom pdt2
    TextBox9.Value = Range("B11").Text
    'puht pdt2
    TextBox10.Value = Application.Trim(Range("C11").Text)
    'tx tva pdt2
    TextBox11.Value = Range("D11").Text
    'tva pdt2
    TextBox12.Value = Application.Trim(Range("E11").Text)
    'puttc pdt2
    TextBox13.Value = Range("F11").Text
    'total
    TextBox14.Value = Range("F12").Text
End Sub

A+

Maurice

Finalement j'ai trouvé un petit moment pour refaire ton truc à ma sauce (en pièce jointe)

A+

54pb-userbox-vg1.xlsm (23.96 Ko)
Rechercher des sujets similaires à "format textbox userform"