Format personnalisé des nombres dans une textbox

Résolu
Bonjour,
J’utilise cette formule fournie par gbinforme qui marche très bien mais maintenant j’aimerais avoir le résultat sous cette forme : 000.00m3, comment faire avec cette formule.
Merci d’avance.

If IsNumeric(Me. TextBox17) And IsNumeric(Me.TextBox4) And IsNumeric(Me.TextBox5) Then
Me. TextBox13 = CDbl(Me. TextBox4) / CDbl(Me.TextBox5) * CDbl(Me.TextBox17)

Else

End If
End Sub

12 réponses

  1. Contributeur
    Peux-tu donner quelques exemples de comment c'est affiché pour le moment, et comment tu le voudrais?
    Juste un essai :
    Me. TextBox13 = cstr(CDbl(Me. TextBox4) / CDbl(Me.TextBox5) * CDbl(Me.TextBox17) )+"m3"
    0
    1. Contributeur
      je propose :
      Me. TextBox13 = cstr(round(CDbl(Me. TextBox4) / CDbl(Me.TextBox5) * CDbl(Me.TextBox17) ,2)+"m3"

      cela devrait arrondir à deux chiffres après la virgule
      0
      1. Re
        Merci de ta réponse rapide, je viens de tester la nouvelle ligne de code et au moment du calcul ce message apparaît:

        Erreur de compilation.
        Erreur de syntaxe

        Merci de te pencher sur mon problème
        0
        1. Contributeur
          mieux ainsi ?
          Me. TextBox13 = cstr(round(CDbl(Me. TextBox4) / CDbl(Me.TextBox5) * CDbl(Me.TextBox17) ,2))+"m3"
          0
        2. @yg_beBonjour,
          Re
          Merci ça correspond à ma demande puisque ‘il affiche bien les m3 avec 2 chiffres après la virgule mais le résultat est faux. Je m’explique 10/22,50*86,400=38,40m3
          Résultat dans la textbox si je mets un point à la place de la virgule le résultat final=39.27m3.
          Pourtant je voudrai bien continuer à utiliser le point comme séparateur.
          0
        3. Contributeur
          L'ancienne formule donnait le bon résultat, et la nouvelle pas?
          ancienne
          CDbl(Me. TextBox4) / CDbl(Me.TextBox5) * CDbl(Me.TextBox17)

          nouvelle
          cstr(round(CDbl(Me. TextBox4) / CDbl(Me.TextBox5) * CDbl(Me.TextBox17) ,2))+"m3"
          0
      2. Bonjour,
        L'ancienne formule donne le mauvais résultat aussi si je met un point à la place de la virgule. Que faire pour remédier à cela.
        0
        1. Contributeur
          As-tu gardé le
          else 
          avec rien pour
          If IsNumeric(Me. TextBox17) And IsNumeric(Me.TextBox4) And IsNumeric(Me.TextBox5)

          Si oui, ajoute ceci entre le
          else
          et le
          end if
          :
          Me.TextBox13="?"

          Cela donne quoi?
          0
          1. Contributeur
            Je propose plutôt ceci:
            Private Sub TextBox5_Change() 
            
            If IsNumeric(Me.TextBox17) And IsNumeric(Me.TextBox4) And IsNumeric(Me.TextBox5) Then 
                  Me.TextBox13  = CStr(Round(CDbl(Me.TextBox4) / CDbl(Me.TextBox5) *                         CDbl(Me.TextBox17), 2)) + "m3" 
            Else 
                 Me.TextBox13 = "?"
            End If 
            End Sub 

            J'espère que cela va eliminer les erreurs de calcul. On verra ensuite pour te permettre d'utiliser des points.
            0
            1. Contributeur
              Si cela fait ce que j'imagine, je propose ceci:
              Private Sub TextBox5_Change() 
              
              If IsNumeric(Me.TextBox17) And IsNumeric(Me.TextBox4) And IsNumeric(replace(Me.TextBox5,".",",")) Then 
                    Me.TextBox13  = CStr(Round(CDbl(Me.TextBox4) /  CDbl(replace(Me.TextBox5,".",",")) *   CDbl(Me.TextBox17), 2)) + "m3" 
              Else 
                   Me.TextBox13 = "?"
              End If 
              End Sub
              0
              1. Contributeur
                Peut-être ainsi?
                Private Sub TextBox5_Change() 
                
                If IsNumeric(Me.TextBox17) And IsNumeric(Me.TextBox4) And IsNumeric(replace(Me.TextBox5,".",",")) Then 
                      Me.TextBox13  = format(CDbl(Me.TextBox4) /  CDbl(replace(Me.TextBox5,".",",")) *   CDbl(Me.TextBox17),"0.00") + "m3" 
                Else 
                     Me.TextBox13 = "?"
                End If 
                End Sub
                0
                1. Bonjour,
                  J’ais modifier le code avec ta ligne : voilà le résultat 12/41*84,600=25,2878048780488m3,j’aimerais avoir 25,28m3 arrondi à 25,29m3
                  Merci d’avance.

                  If IsNumeric(Me. TextBox17) And IsNumeric(Me.TextBox4) And IsNumeric(Me.TextBox5) Then
                  Me.TextBox13 = CStr(CDbl(Me.TextBox4) / CDbl(Me.TextBox5) * CDbl(Me.TextBox17)) + "m3"
                  Else

                  End If
                  End Sub
                  -1
                  1. Re
                    si je met :
                    Private Sub TextBox5_Change()

                    If IsNumeric(Me.TextBox17) And IsNumeric(Me.TextBox4) And IsNumeric(Me.TextBox5) Then
                    Me.TextBox13 = "?" = CStr(Round(CDbl(Me.TextBox4) / CDbl(Me.TextBox5) * CDbl(Me.TextBox17), 2)) + "m3"
                    Else

                    End If
                    End Sub
                    Au moment du calcul dans textbox =False
                    J'aimerais utiliser le point que pour ce classeur
                    -1
                    1. Re
                      Merci ça marche, a part un tout petit détail.Quand le résultat et 28.40m3 il marque 28.4m3,serait il possible d'avoir le zéro.
                      En tout cas merci de ta patience.
                      -1
                      1. Bonjour,

                        Tu peux tester ce code :
                        Private Sub Calculer_Click()
                        Dim N1 As Double, N2 As Double, N3 As Double
                        If Not (IsNumeric(Replace(Me.TextBox17, ".", ",")) And _
                        IsNumeric(Replace(Me.TextBox4, ".", ",")) And _
                        IsNumeric(Replace(Me.TextBox5, ".", ","))) Then Exit Sub
                        N1 = CDbl(Replace(Me.TextBox4, ".", ","))
                        N2 = CDbl(Replace(Me.TextBox5, ".", ","))
                        N3 = CDbl(Replace(Me.TextBox17, ".", ","))
                        Me.TextBox13 = Replace(Format(N1 / N2 * N3, "0.00"), ",", ".") & " m3"
                        End Sub

                        A+
                        -1
                        1. Contributeur
                          Si une des valeurs n'est pas numérique, je pense important de faire
                          Me.TextBox13 = "?"
                          , pour ne pas laisser l'ancienne valeur calculée, qui n'est plus correcte.
                          0
                        2. @yg_beMerci tout marche bien. A bientôt sur le forum car encore pas mal de question pour finir mon projet.
                          Gyrus je garde ta réponse sous le coude et je teste dés que je peut.
                          merci encore de votre patience
                          0