Format tbox vers Feuil excel vba

Résolu/Fermé
lanetmel Messages postés 200 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 15 mars 2018 - 10 mai 2012 à 03:50
eriiic Messages postés 24492 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 22 janvier 2023 - 13 mai 2012 à 20:53
Bonjour à tous,

J'espère que vous allez bien!

Petit problème de format!

à partir de mon usf reception
Sub Combobox10_change
Si je met 15 291 comme valeur dans ma textbox7 (quantité 1ère ligne)
et 360 comma valeur dans ma Textbox25 (coût total)
dans ma textbox16 : je fais un calcul, : Textbox25 / Textbox26/1000
dans la textbox16 la réponse qui s'affiche est bonne

(au lieu de mettre 23.54 ça donne plusieurs décimal (23.5432607416..) mais c'est bon)

mais quand je transfert les données dans ma feuille excel,(via la Sub Cmdok_click : le résultat
me donne 235432607416.. il n'y a plus de virgule Feuil infos col CK
J'ai tout essayé, changer de format de cellule dans ma feuille essayer de formater le format de ma textbox... Rien n'y fait.. Quelqu'un a une idée..?

Aussi je sais pas pourquoi ça ne fonctionne plus car ça fonctionnais avant,
les données de ma combobox 8 ne s'affichent plus dans ma feuil info colonne 8..
Toutes les autres fonctionne sauf celle là.. des idées?

merci à l'avance car j'ai vraiment chercher mais en vain...
Mélanie

https://www.cjoint.com/?BEkdJjxmvks


<config>Windows 7 / Internet Explorer 9.0</config
A voir également:

10 réponses

eriiic Messages postés 24492 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 22 janvier 2023 7 154
11 mai 2012 à 09:07
Bonjour,

J'ai du mal à tester car bizarrement chez moi, et que sur ton fichier, il refuse format() dans le code (???)

Déjà je dégagerais ces 2 lignes du début
'resultat = Format(resultat, "0.00%")
'resultat = Replace(resultat, ",", ".")
qui ne servent à rien car pas à l'affichage.

je l'ajouterai à la fin sur :
TextBox25.Value = Format(resultat2, "#.00%")
TextBox25.Value = Replace(TextBox25, ",", ".")

et d'autre part dans le code Cmdok_click je mettrai :
.Cells(lign, 89) = (TextBox16.Value)/100

eric
1
eriiic Messages postés 24492 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 22 janvier 2023 7 154
Modifié par eriiic le 11/05/2012 à 17:15
Re,

dans ma textbox j'ai toujours un nombres avec plusieurs décimales
tu peux la formater comme tu faisais au début du code avec :
TextBox25.Value = Format(resultat2, "#.00%")
TextBox25.Value = Replace(TextBox25, ",", ".")

Pour que ça soit écrit la bonne chose dans ma feuille info j'ai du faire /100 * 100
Ce n'est pas normal, si ta valeur est 23.xxx pour mettre la cellule au format % tu dois y mettre 0.23xxxx
D'autant plus que c'est correct chez moi lors des tests.

les données de ma combobox 8 (Fournisseur dans frame scierie) ne s'affichent plus dans ma feuil info colonne 8 (H)..
Si elle se met bien, mais tu l'effaces avec :
.Cells(lign, col2) = (TextBox8.Value)
col2=8

Au passage lorsque tu déclares :
Dim col1, col2, col3, col4, col5 As Integer
seule col5 est integer, les autres sont variant. A corriger...

eric
1
eriiic Messages postés 24492 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 22 janvier 2023 7 154
10 mai 2012 à 09:44
et si tu précisais le nom de la macro, où elle se trouve et les lignes en cause...
0
lanetmel Messages postés 200 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 15 mars 2018 4
Modifié par lanetmel le 10/05/2012 à 18:48
Bonjour

merci de me répondre!
Alors pour mon problème de format c'est dans mon usf : Reception
Dans ma Sub : Sub Combobox10_change
C'est là que je fais mon calcul
Private Sub Combobox10_change()

Dim mpmp As Currency
Dim totaltransport As Currency
Dim prixmpmp As Currency
Dim resultat, resultat2 As Currency
resultat = Format(resultat, "0.00%")
resultat = Replace(resultat, ",", ".")

If TextBox25 > 0 Then
If TextBox16 = "" Then

mpmp = TextBox26.Value / 1000
totaltransport = TextBox25.Value
resultat = totaltransport / mpmp

TextBox16.Value = resultat
TextBox16.Enabled = False
End If
End If

If TextBox16 > 0 Then
If TextBox25 = "" Then
mpmp = TextBox26.Value / 1000
prixmpmp = resultat
resultat2 = prixmpmp * resultat

TextBox25.Value = resultat2
End If
End If
End Sub

ensuite je vais écrire dans ma feuille infos la réponse via la sub :
Private Sub Cmdok_click()
avec cette ligne :
.Cells(lign, 89) = (TextBox16.Value)
.Cells(lign, 89).NumberFormat = "#.##%" ' avec un point ici et pas une virgule

J'espère que c'est ce dont tu avais besoin.. Hésite pas à me dire dans le cas contraire!
encore merci
Mélanie
0

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

Posez votre question
lanetmel Messages postés 200 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 15 mars 2018 4
10 mai 2012 à 18:49
Pour ce qui est de mon 2ème point :

Toutjours dans usf :Réception
Sub : Private Sub Cmdok_click()

ligne :
.Cells(lign, 8) = (ComboBox8.Value)


merci
0
eriiic Messages postés 24492 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 22 janvier 2023 7 154
11 mai 2012 à 00:53
J'ai un pb, 'projet ou bibliothèque introuvable' pour Format() dans resultat = Format(resultat, "0.00%")
Je ne peux aller plus loin, sans mettre en commentaire cette ligne.

Par contre tu aurais pu préciser le libellé de la combobox, là on est obligé de les cliquer une par une pour trouver que c'est 'Transporteur'.
Liste vide chez moi...

De plus précise TOUTES les saisies à faire pour que ça tourne.
Il n'aime pas que TextBox26 soit vide et j'en ai marre de tatonner, je ne la trouve pas...

eric
0
lanetmel Messages postés 200 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 15 mars 2018 4
11 mai 2012 à 04:01
Bonjour eriiic

Je te remercie de prendre le temps de m'aider
Je te joins le fichier à nouveau et quand tu exécuteras mon usf (réception)
j'ai indiquer en libellé ce qu'il faut mettre dans les cases afin que que ça fonctionne
et le Textbox26

Espérant que c'est ce que tu avais besoin
en te remerciant à l'avance

Mélanie


https://www.cjoint.com/?BEleannFncL
0
lanetmel Messages postés 200 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 15 mars 2018 4
11 mai 2012 à 16:13
Bonjour

Je sais pas trop ce qui s'est passé.. J'ai envoyé une réponse et elle a disparue... en tout cas pas grave, je recommence!
Premièrement merci beaucoup pour ton aide.
J'ai mis les lignes de format à la fin dans ma sub Combobox change
dans ma textbox j'ai toujours un nombres avec plusieurs décimales mais ce n'est pas grave, je peux vivre avec..
Pour que ça soit écrit la bonne chose dans ma feuille info j'ai du faire /100 * 100
je ne comprends pas mais ça fonctionne!
.Cells(lign, 89) = (TextBox16.Value) / 100 * 100
Alors merci! ça c'est règlé

Pour mon 2ème problème as-tu une idée?
Aussi je sais pas pourquoi ça ne fonctionne plus car ça fonctionnais avant,
les données de ma combobox 8 (Fournisseur dans frame scierie) ne s'affichent plus dans ma feuil info colonne 8 (H)..
via sub cmdok click
.Cells(lign, 8) = (ComboBox8.Value)

Toutes les autres fonctionne sauf celle là.. des idées?

encore merci c'est vraiment apprécié
Mélanie
0
lanetmel Messages postés 200 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 15 mars 2018 4
11 mai 2012 à 23:29
Bonjour Éric

mon format dans ma textbox : 2 décimales : règlé
merci beaucoup
le format de la même donnée dans ma feuille info : règlé
encore merci!
J'ai changé mon type de variable tel que tu me l'a conseillé
:)

Pour ce qui est de mon 2ème problème, je ne comprends pas ce que tu veux dire...

Si elle se met bien, mais tu l'effaces avec :
.Cells(lign, col2) = (TextBox8.Value)
col2=8

Et là je viens de remarquer que si j'empli toutes les cases de mon usf, alors le nom de mon fournisseur apparait dans ma feuille excel dans la colonne 8 tel que supposé mais sinon elle reste vide...

Car à moins que je n'aie rien compris (ce qui reste une possibilité) en déclarant mes variables c'est que je dis : selon le choix fait dans ma Combobox : je saute de 3 colonnes à chaque fois en partant à la colonne 11... non? Alors comment col2 pourrait être égale à 8 si selon moi elle peut pas être en bas de 11...

C'est moi qui comprend pas ?

merci à l'avance
MÉlanie
0
eriiic Messages postés 24492 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 22 janvier 2023 7 154
Modifié par eriiic le 12/05/2012 à 00:17
Une combobox sans sélection a pour index -1
-1 * 3 + 11 = ?
Il va falloir que tu apprennes le pas à pas, les espions et les points de blocage pour débugguer plus facilement.

Il ne faut faire les écritures que si il y a eu une saisie sur la ligne, et t'assurer que toutes les saisies obligatoires ont été faites.
Eventuellement alerte si il manque une saisie pour guider l'utilisateur...

Et s'il doit tourner sur plusieurs poste il faudrait eclaircir ce mystère : format() ne marche pas chez moi, et QUE sur ton fichier.
Là je t'avoue ne pas avoir d'idée, mais fait des tests sur plusieurs configurations avant de lancer définitivement le truc.

eric
0
lanetmel Messages postés 200 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 15 mars 2018 4
12 mai 2012 à 00:33
Bonjour Éric,

merci beaucoup. Je sais que je ne connais pas assez les bases.. il faudrait que je me trouve un livre qui explique bien du début à la fin (une brique).. Ce que l'on trouve sur internet aide beaucoup mais ce n'est souvent que des bouts et souvent trop avancé pour moi... Il y a tellement de façon d'écrire les choses et il faut connaitre les bons mots ce qui me manque souvent.. Néamoins les gens comme toi aide énormément et je te remercie.. Je vais continuer de chercher et quand j'aurai trouvé, je metterai mon post résolu

encore merci
MÉlanie
0
eriiic Messages postés 24492 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 22 janvier 2023 7 154
12 mai 2012 à 06:58
Mais je t'ai dis le pourquoi ça efface ta valeur :
Une combobox sans sélection a pour index -1
Tu mets :
col2 = (ComboBox5.ListIndex * 3) + 11
Donc si pas de sélection dans ComboBox5 col2 = -1 * 3 + 11 = 8

eric
0
lanetmel Messages postés 200 Date d'inscription mercredi 24 août 2011 Statut Membre Dernière intervention 15 mars 2018 4
Modifié par lanetmel le 13/05/2012 à 20:35
Bonjour Eric,

merci! grâce à toi j'ai trouvé une solution. J'ai mis la ligne à la fin pour mon fournisseur.
Tu m'as dit que ma combobox avait une valeur de -1 si elle était vide.. et que j'effaçais ma donnée déjà entrée...
Je sais que quand toutes les cases sont emplies, tout ce met à la bonne place.. Alors au lieu d'emplir mon fournisseur en premier et qu'il s'efface par la suite.. J'ai mis ma combobox en premier alors si elle est vide elle ne met rien dans ma feuille info et si elle est remplie les données vont à la bonne place et après j'ai mis le code pour emplir ma colonne 8.
Alors maintenant ça fonctionne!
merci beaucoup!
Mélanie
0
eriiic Messages postés 24492 Date d'inscription mardi 11 septembre 2007 Statut Contributeur Dernière intervention 22 janvier 2023 7 154
13 mai 2012 à 20:53
Bonjour,

Pas très propre tout ça, et pas rigoureux du tout. Tu t'exposes a des déconvenues...
Ce que je te disais au post 10 :
Il ne faut faire les écritures que si il y a eu une saisie sur la ligne, et t'assurer que toutes les saisies obligatoires ont été faites.
Eventuellement alerte si il manque une saisie pour guider l'utilisateur...

Mais bon, c'est toi qui voit....
eric
0