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