Aide pour du format textbox

[Résolu]
Signaler
Messages postés
72
Date d'inscription
mardi 23 septembre 2008
Statut
Membre
Dernière intervention
23 février 2009
-
Messages postés
72
Date d'inscription
mardi 23 septembre 2008
Statut
Membre
Dernière intervention
23 février 2009
-
bonjour à tous,

j' ai un userform5 parlequel je rentre des données qui vont dans ma feuil4.
ces données, je les fais ressortir en partie sur des texbox dans mon userform9

et là, le drame, un petit problème de format...!

pour ceux ou j'ai un problème, je rentre dans ces texbox 20 chiffres 11111111111111100000 et lorsque fait mon opération en userform, la textbox me sort : 1,11111111111111E+19

la même opération pour d'autre texbox qui n'ont que 4 chiffres me sortent les 4 chiffres normalement...

si vous pouvez m'aider...

merci par avance...

16 réponses

Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
N'UTILISE PAS CET éVèNEMENT !

pas au _Change..., tu as l'embarras du choix..., _keydown, _keypress, _keyup, _validate, .....

<hr size="2" width="100%" />
Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 
Messages postés
1229
Date d'inscription
vendredi 16 novembre 2007
Statut
Membre
Dernière intervention
16 juin 2009
1
Bonjour,

lorsque fait mon opération en userform --> quelle opération?
Si c'est récuperer la valeur de ta feuil4 alors il faut simplement convertir.
Je suis pas VBAiste mais en vb6 on convertit par le mot clé Cstr(valeurnumérique). Ainsi dans la textbox on a bien une chaine de type string.
Bon courage

S.L.B.
<hr />-- Le règlement tu liras -- Des recherches tu feras -- Le style SMS tu banniras --
-- De la validation pertinente tu feras -- Du respect tu auras -- <
Messages postés
72
Date d'inscription
mardi 23 septembre 2008
Statut
Membre
Dernière intervention
23 février 2009

et bien en fait, je me sert d'une combo pour selectionner une immatriculation et ressortir les carractéristiques de l'engin. comme ci-dessous

Private Sub CommandButton1_Click()

Dim y As Variant

y = Columns("A").Find(ComboBox1.Value, Range("A1")).Row

UserForm9.TextBox2.Value = Feuil4.Cells(y, 1).Value 'immatriculation
UserForm9.TextBox3.Value = Feuil4.Cells(y, 2).Value 'marque
UserForm9.TextBox4.Value = Feuil4.Cells(y, 3).Value 'type
UserForm9.TextBox5.Value = Feuil4.Cells(y, 4).Value 'modele
UserForm9.TextBox6.Value = Feuil4.Cells(y, 5).Value 'date 1ere
UserForm9.TextBox7.Value = Feuil4.Cells(y, 6).Value 'date attrib
UserForm9.TextBox8.Value = Feuil4.Cells(y, 7).Value 'kilometrage attrib
UserForm9.TextBox9.Value = Feuil4.Cells(y, 18).Value 'date CONTROLE TECHNIQUE
UserForm9.TextBox10.Value = Feuil4.Cells(y, 19).Value 'PREVISION CT
UserForm9.TextBox11.Value = Feuil4.Cells(y, 8).Value 'service
UserForm9.TextBox12.Value = Feuil4.Cells(y, 12).Value 'n°carte BP
UserForm9.TextBox13.Value = Feuil4.Cells(y, 15).Value 'n°code BP
UserForm9.TextBox14.Value = Feuil4.Cells(y, 13).Value 'n°carte TOTAL
UserForm9.TextBox15.Value = Feuil4.Cells(y, 16).Value 'n°code TOTAL
UserForm9.TextBox16.Value = Feuil4.Cells(y, 14).Value 'n°carte SHEEL
UserForm9.TextBox17.Value = Feuil4.Cells(y, 17).Value 'n°code SHEEL
UserForm9.TextBox18.Value = Feuil4.Cells(y, 20).Value 'Observation

    If Feuil4.Cells(y, 9).Value = True Then
        UserForm9.TextBox19.Value = Feuil4.Cells(1, 9).Value
    ElseIf Feuil4.Cells(y, 10).Value = True Then
        UserForm9.TextBox19.Value = Feuil4.Cells(1, 10).Value
    ElseIf Feuil4.Cells(y, 11).Value = True Then
        UserForm9.TextBox19.Value = Feuil4.Cells(1, 11).Value
    End If
    
       

        
End Sub

ce que je me demande, c'est ou mettre le mot clé, est-ce que ce ne serait pas dans mon :

Private Sub TextBox12_Change()

End Sub
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
salut,
ce qui ne changera rien pour un nombre aussi précis

ce n'est pas un bug ou un problème de format, il faudra arrondir.
voir avec la fonction ROUND
(précédée en effet de CSTR comme l'indique

[../auteur/LILLITH212/1208539.aspx lillith212]

)

++

<hr size="2" width="100%" />
Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp
Messages postés
72
Date d'inscription
mardi 23 septembre 2008
Statut
Membre
Dernière intervention
23 février 2009

je ne vois pas comment utiliser le couplage de ces deux fonctions, j'ai éssayé notamment
Private Sub TextBox12_Change()
    cstr(round(TextBox12.Value, [0])) As String

End Sub
mais je reste en erreur de syntaxe...
Messages postés
1229
Date d'inscription
vendredi 16 novembre 2007
Statut
Membre
Dernière intervention
16 juin 2009
1
Re:

L'exemple ci-dessous utilise la fonction Round pour arrondir un nombre à deux décimales :
Dim MyVar, pi
pi = 3.14159
MyVar = Round(pi, 2) 'MyVar contient
3,14.

ne mets pas de crochet.

S.L.B.
<hr />-- Le règlement tu liras -- Des recherches tu feras -- Le style SMS tu banniras --
-- De la validation pertinente tu feras -- Du respect tu auras -- <
Messages postés
72
Date d'inscription
mardi 23 septembre 2008
Statut
Membre
Dernière intervention
23 février 2009

je te remercie, le problème que j'ai c'est où le mettre...
car ma textbox resulte de la selection et du commandbutton. ce n'est donc pas une variable fixe que je peux déterminer à l'avance.

j'ai éssayé de la mettre au départ dans :

Private Sub TextBox12_Change()

Dim MyVar, TextBox12
MyVar = round(TextBox12.Value, 0) 'MyVar contient  3,14.

End Sub
mais la textbox est vide lorsque je clique sur le bouton, donc il y a erreur...

j'ai alors éssayé de l'incorporer dans :

Private Sub CommandButton1_Click()

UserForm9.TextBox12.Value = Feuil4.Cells(y, 12).Value 'n°carte BP

mais là, même chose, au départ la textbox est vide quand on commance l'opération, et ca ne sert à rien de l'employer sur la feuil4, car le format de cellule excel est bon...
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
ta zone ne change pas toute seule...

UserForm9.TextBox15.Value = ROUND(Feuil4.Cells(y, 16).Value, 4)'n°code TOTAL

ou

UserForm9.TextBox15.Text = CSTR(ROUND(Feuil4.Cells(y, 16).Value, 4))'n°code TOTAL

çà devrait être suffisant
++
<hr size="2" width="100%" />Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 
Messages postés
72
Date d'inscription
mardi 23 septembre 2008
Statut
Membre
Dernière intervention
23 février 2009

effectivement, comme j'avais cité avant, je ne l'avais pas copié car déjà éffacé, mais j'avais mis:

UserForm9.TextBox12.Value = round(Feuil4.Cells(y, 12).Value, 0) 'n°carte BP

ce qui ne fait aucun changement, et

UserForm9.TextBox12.Value = CStr(round(Feuil4.Cells(y, 12).Value, 0)) 'n°carte BP
 que je vient d'éssayer reste sans resultat

en essayant au départ
 round(UserForm9.TextBox12.Value, 0) = Feuil4.Cells(y, 12).Value 'n°carte BP

l'erreur est que la textbox est vide lorsque la fonction se mets en route, puisque le but est l'import de données et qu'il faudrait en suite qu'elle soit traité ici ce qui devient impossible...
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
l'erreur de textbox vide n'est pas à considérer, du fait qu'on ne fait pas de CHANGE (.text ou .value = autre_chose) dans l'évènement _Change

avec CSTR, c'est .TEXT, pas .VALUE
(peut-être simple erreur de copier/coller?)

et ROUND est une fonction, elle ne peut pas recevoir quelque chose....
cf
round(UserForm9.TextBox12.Value, 0) = ...

tu sembles vouloir aller trop vite, je doute que les conseils aient tous été correctement testés jusque là....
<hr size="2" width="100%" />Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp <
Messages postés
72
Date d'inscription
mardi 23 septembre 2008
Statut
Membre
Dernière intervention
23 février 2009

le probleme est que je ne peux pas changer mon .value en . text, si tu regarde en haut le total, ma recherche se fait comme ça, c'est le resultat qui me pose problème , uniquement pour les cases à 20 carractère chiffrés....
Messages postés
7668
Date d'inscription
samedi 5 novembre 2005
Statut
Membre
Dernière intervention
22 août 2014
26
Bonjour,
Moi, j'ai du mal à comprendre pourquoi tes cases "à 20 caractères chiffrés" ne sont pas au format string ...d'emblée (je serais étonné de ce que leur contenu soit destiné à des calculs)...
Messages postés
72
Date d'inscription
mardi 23 septembre 2008
Statut
Membre
Dernière intervention
23 février 2009

et bien dans mon userform5, celui par lequel je rentre les données, l'obligation de mon textbox d'entrée de donnée est:

Private Sub TextBox11_Change()
    On Error Resume Next
   
    If Not IsNumeric(Right(TextBox11, 1)) Then
        MsgBox "Numérique"
        TextBox11 = Left(TextBox11, Len(TextBox11) - 1)
    End If
   
    TextBox11.MaxLength = 20 'nbr caractère max
    TextBox11.AutoTab = True 'autotabulation
End Sub

en suite, il est renvoyé par un "Private Sub CommandButton10_Click()"  par :
    IntLigne = ActiveSheet.Cells(2, 1).End(xlDown).Row + 1
'La ligne dans laquelle sont ajoutées les valeurs est définie par la TextBox1
    Lgn = Feuil4.Cells(65536, 1).End(xlUp).Row + 1
   
'texte des cases

'Dim Lgn As String

Feuil4.Cells(Lgn, 1).Value = UserForm5.TextBox1.Value 'immatriculation
Feuil4.Cells(Lgn, 2).Value = UserForm5.ListBox1.text  'marque
Feuil4.Cells(Lgn, 3).Value = UserForm5.TextBox3.Value 'type
Feuil4.Cells(Lgn, 4).Value = UserForm5.TextBox4.Value 'model
Feuil4.Cells(Lgn, 5).Value = UserForm5.TextBox5.Value 'date 1ere
Feuil4.Cells(Lgn, 6).Value = UserForm5.TextBox6.Value 'date attrib
Feuil4.Cells(Lgn, 7).Value = UserForm5.TextBox8.Value 'kilometrage attrib
Feuil4.Cells(Lgn, 8).Value = UserForm5.TextBox7.Value 'service
Feuil4.Cells(Lgn, 12).Value = UserForm5.TextBox9.Value 'n°carte BP
Feuil4.Cells(Lgn, 13).Value = UserForm5.TextBox10.Value 'n°carte TOTAL
Feuil4.Cells(Lgn, 14).Value = UserForm5.TextBox11.Value 'n°carte SHEEL
Feuil4.Cells(Lgn, 15).Value = UserForm5.TextBox12.Value 'n°code BP
Feuil4.Cells(Lgn, 16).Value = UserForm5.TextBox13.Value 'n°code TOTAL
Feuil4.Cells(Lgn, 17).Value = UserForm5.TextBox14.Value 'n°code SHEEL
Feuil4.Cells(Lgn, 9).Value = UserForm5.CheckBox1.Value '2 roues
Feuil4.Cells(Lgn, 10).Value = UserForm5.CheckBox2.Value '4 roues
Feuil4.Cells(Lgn, 11).Value = UserForm5.CheckBox3.Value 'CAR/PL
Feuil4.Cells(Lgn, 18).Value = UserForm5.TextBox15.Value 'date CONTROLE TECHNIQUE
Feuil4.Cells(Lgn, 19).Value = UserForm5.TextBox16.Value 'PREVISION CT

je suis d'accord avec toi pour le fait qu'il n'y aura aucun calcul, mais où dois-je glisser l'obligation string, et comment...?
Messages postés
13280
Date d'inscription
lundi 13 décembre 2004
Statut
Modérateur
Dernière intervention
3 février 2018
46
et hop retour dans le passé :
"


l'erreur de textbox vide n'est pas à
considérer, du fait qu'on ne fait pas de CHANGE (.text ou .value =
autre_chose) dans l'évènement _Change


"

résultat...

tu nous mets
TextBox11 = Left(TextBox11, Len(TextBox11) - 1)
dans
TextBox11_Change()
...

je disais aussi :
"
je doute que les conseils aient tous été correctement testés jusque là
"

pire, tu fais juste l'inverse

<hr size="2" width="100%" />
Prenez un instant pour répondre à [sujet-SONDAGE-POP3-POUR-CS_769706.aspx ce sondage] svp 
Messages postés
72
Date d'inscription
mardi 23 septembre 2008
Statut
Membre
Dernière intervention
23 février 2009

d'accord je comprends ce que tu veux dire pour le change,  mais alors comment puis-je faire? je suis novice, et tous mes changes sont basés comme cela (je me suis aidé par le site et le net...)

et pour:
Private Sub TextBox11_Change()
    On Error Resume Next
   
    If Not IsNumeric(Right(TextBox11, 1)) Then
        MsgBox "Numérique"
        TextBox11 = Left(TextBox11, Len(TextBox11) - 1)
    End If
   
    TextBox11.MaxLength = 20 'nbr caractère max
    TextBox11.AutoTab = True 'autotabulation
End Sub

y-a t-il autre chose qui puisse remplacer le change, sinon, comment changer  le "        TextBox11 = Left(TextBox11, Len(TextBox11) - 1)" qui s' y trouve...?
Messages postés
72
Date d'inscription
mardi 23 septembre 2008
Statut
Membre
Dernière intervention
23 février 2009

merci