Aide pour du format textbox

Résolu
mythiac Messages postés 72 Date d'inscription mardi 23 septembre 2008 Statut Membre Dernière intervention 23 février 2009 - 21 oct. 2008 à 16:22
mythiac Messages postés 72 Date d'inscription mardi 23 septembre 2008 Statut Membre Dernière intervention 23 février 2009 - 22 oct. 2008 à 13:45
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

PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
22 oct. 2008 à 13:39
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 
3
lillith212 Messages postés 1229 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 16 juin 2009
21 oct. 2008 à 16:27
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 -- <
0
mythiac Messages postés 72 Date d'inscription mardi 23 septembre 2008 Statut Membre Dernière intervention 23 février 2009
21 oct. 2008 à 16:34
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
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
21 oct. 2008 à 16:36
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
0

Vous n’avez pas trouvé la réponse que vous recherchez ?

Posez votre question
mythiac Messages postés 72 Date d'inscription mardi 23 septembre 2008 Statut Membre Dernière intervention 23 février 2009
21 oct. 2008 à 16:50
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...
0
lillith212 Messages postés 1229 Date d'inscription vendredi 16 novembre 2007 Statut Membre Dernière intervention 16 juin 2009
21 oct. 2008 à 16:54
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 -- <
0
mythiac Messages postés 72 Date d'inscription mardi 23 septembre 2008 Statut Membre Dernière intervention 23 février 2009
21 oct. 2008 à 17:12
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...
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
21 oct. 2008 à 17:50
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 
0
mythiac Messages postés 72 Date d'inscription mardi 23 septembre 2008 Statut Membre Dernière intervention 23 février 2009
21 oct. 2008 à 17:59
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...
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
21 oct. 2008 à 18:07
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 <
0
mythiac Messages postés 72 Date d'inscription mardi 23 septembre 2008 Statut Membre Dernière intervention 23 février 2009
21 oct. 2008 à 18:14
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....
0
jmfmarques Messages postés 7666 Date d'inscription samedi 5 novembre 2005 Statut Membre Dernière intervention 22 août 2014 27
21 oct. 2008 à 18:35
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)...
0
mythiac Messages postés 72 Date d'inscription mardi 23 septembre 2008 Statut Membre Dernière intervention 23 février 2009
22 oct. 2008 à 07:57
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...?
0
PCPT Messages postés 13272 Date d'inscription lundi 13 décembre 2004 Statut Membre Dernière intervention 3 février 2018 47
22 oct. 2008 à 09:58
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 
0
mythiac Messages postés 72 Date d'inscription mardi 23 septembre 2008 Statut Membre Dernière intervention 23 février 2009
22 oct. 2008 à 10:52
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...?
0
mythiac Messages postés 72 Date d'inscription mardi 23 septembre 2008 Statut Membre Dernière intervention 23 février 2009
22 oct. 2008 à 13:45
merci
0
Rejoignez-nous