Format tbox vers Feuil excel vba

Résolu
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

10 réponses

  1. Contributeur
    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. Contributeur
      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. Contributeur
        et si tu précisais le nom de la macro, où elle se trouve et les lignes en cause...
        1. 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
          1. 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
            1. Contributeur
              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
              1. 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
                1. 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
                  1. 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
                    1. Contributeur
                      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
                    2. 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
                    3. Contributeur
                      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
                  2. 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
                    1. Contributeur
                      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