Excel TextBox Format

Résolu
Bonjour,

J'ai des TextBox dans mon code qui prennent la valeur de cellules au format pourcentage
Je cherche a avoir la valeur de ma textbox au format pourcentage egalement avec 2 chiffres apres la virgule

Ma textBox s'appel BC1 et pour l'instant elle est egale a 48,22 %

Si je met rien dans le code j'obtien 0,4822 et au format text...
si je met le code suivant

BC1 = Format(BC1, "0.00%")

j'obtien bien 48,22% mais toujours en format text

si je met BC1 = Format(BC1, "0,00%") (avec une virgule)
j'obtien bien un pourcentage mais sans les deimales : il m 'affiche 48,00% au bon format

voila moi je voudrai avoir 48,22 % en tant que nombre et pas tex

si quelau un sait
merci
Antoine
Configuration: Windows XP
Internet Explorer 7.0

10 réponses

  1. Contributeur
    Je pense qu'à un certain moment il faut savoir dire les choses.
    C'est tombé sur toi comme ça aurait pu tomber sur d'autres, rappeler les regles élémentaires est malheureusement nécessaire...
    Sans rancune mais n'oublie pas que laisser un mot, même la personne n'a pas résolu ton pb, est le minimum pour la remercier d'y avoir passer du temps.
    eric
    0
    1. Salut Eric,

      Faut pas s'enerver comme ca !!!

      j'pense pas avoir été aussi méchant, égoiste, indécent... pour avoir reposé une question déĵà posée...
      effectivement j'aurai du mettre résolu sur l'autre ou la remettre en haut mais... j'y ai pas pensé...

      J'ai du poser une 30 ene de questions sur ce forum et j'ai du oublier de dire merci a 2 effectivement
      C'est parceque j'ai pas compri les réponses et que j'ai changé d'idée entre temps, c'est vrai que c'est un peu égoiste.

      Je trouve ce forum super bien et les gens dessus excellent, rapide et sympa donc je m'excuse si tu as mal pri ce message, j'recommencerai plus...

      On reste ami quand meme?

      anocheda
      0
      1. Excellent ca marche avec ton aide, en fait il faut juste faire:

        TextBox1.Value = Cells(1, 1).Value

        TextBox1.Value = Format(TextBox1.Value, "0.00%")
        TextBox1.Value = Replace(TextBox1.Value , ",", ".")

        Cells(1, 2) = TextBox1.Value
        Cells(1, 2).NumberFormat = "0.00%" ' avec un point ici et pas une virgule

        ca marche super bien maintenant

        merci
        0
        1. il faut que je vérifie ton exemple car j'ai en fait extrait du code dans une application que j'ai écrite et qui fonctionne correctement. Cela dit, en examinant le mieux le code de cette application, j'apporte une correction :

          ** alimentation champ formulaire
          TextBox1.Value = Cells(1, 1).Value

          '** transformation en valeur texte pour affichage champ formulaire
          TextBox1.Value = Format(TextBox1.Value, "0.00%")

          ' ** transformation valeur texte en valeur numérique
          TextBox1.Value = Replace(TextBox1.Value .Value, "%", "")
          TextBox1.Value = Replace(TextBox1.Value .Value, " ", "")
          TextBox1.Value = Replace(TextBox1.Value .Value, ",", ".")
          TextBox1.Value = Val(TextBox1.Value) /100
          TextBox1.value= Replace(TextBox1..Value, ",", ".")


          '** alimentation A2
          Cells(1, 2) = TextBox1.Value
          Cells(1, 2).Numberformat = "0,00%"
          '** restauration en valeur texte pour affichage champ formulaire
          TextBox1.Value = Format(TextBox1.Value, "0.00%")

          A vérifier et au fait, as-tu vérifié le format de ta cellule A2. Elle doit être au format standard ou nombre.
          0
          1. D'accord merci j'avais compri le truc mais ca marche pas....
            Est ce que ca marche chez toi?

            Si tu prend ton code (en enlevant des petites erreures) et que tu mets 0,1234 en A1,
            en A2 tu va avoir le bon resultat mais avec un petit triangle vert qui dit que c'est pas au bon format....
            0
            1. Contributeur
              Bonjour,

              tu as déjà posé cette question hier, merci d'éviter les doublons.
              0
              1. Bonjour Eric,

                Je sais bien mais hier la personne qui a repondue n'a pas put m'aider et du coup j'ai l'impression que comme il y a déjà eu une reponse les gens regarde plus la question...
                en reposant la meme question, en 5 minutes j'ai eu la reponse alors que sinon personne n'aurait lu

                voila

                dsl

                Antoine
                0
              2. Contributeur
                @anochedaS'il y a des regles sur un forum, elles n'ont pas été édictées au hasard..
                Le plus souvent c'est dans un but d'efficacité, de respect des autres.
                Pour certaines le simple bon-sens devrait être suffisant et ne pas devoir être écrites mais ...

                Un simple 'up' suffit à remettre ta question au début...
                En multipliant les posts tu prives les nouveaux lecteurs des précédentes propositions qui ont obligatoirement fait avancer la réponse.
                Les personnes qui sont intervenues dans ton 1er post sont peut-être encore en train de chercher (et même de nouveaux lecteurs) puisque tu n'as pas eu la décence courtoisie respect honneteté (rayer les mentions inutiles s'il y en a) de le signaler, voire même de le mettre tout simplement en résolu.
                C'est du temps qu'ils auraient pu passer à aider qcq'un d'autre...
                J'appele ça de l'égoïsme.

                Je ne parle pas des questions où tu as eu 3 réponses et où tu n'as même pas daigné répondre le moindre mot, et donc surtout pas merci

                Personnellement je suis intervenu sur 2 de tes questions, elles sont toujours en statut non résolu.
                Ton pseudo c'est quoi déjà ? Ah oui anocheda
                Mes interventions sur tes questions se limiteront maintenant a mettre un lien vers ce post

                Bonne soirée
                eric
                0
            2. '** alimentation champ formulaire
              TextBox1.Value = Cells(1, 1).Value

              '** transformation en valeur texte pour affichage champ formulaire
              TextBox1.Value = Format(TextBox1.Value, "0.00%")

              ' ** transformation valeur texte en valeur numérique
              TextBox1.Value = Replace(TextBox1.Value .Value, "%", "")
              TextBox1.Value = Replace(TextBox1.Value .Value, " ", "")
              TextBox1.Value = Replace(TextBox1.Value .Value, ",", ".")
              TextBox1.Value = Val(TextBox1.Value)

              '** alimentation A2
              Cells(1, 2).Value = TextBox1.Value
              Cells(1, 2).Value.Numberformat = "0,00%"

              '** restauration en valeur texte pour affichage champ formulaire
              TextBox1.Value = Format(TextBox1.Value, "0.00%")
              0
              1. Merci mais ca change rien,

                A l'affichage c'est toujours bon , j' 48,12 % mais il y a toujours une petite fenetre verte dans ma cellule qui dit:
                "Nombre stoké sous forme de texte" et donc c'est inutilisable

                je te met un fichier ultra simple en joint il prend la cellule A1 la met dans la textBox et la colle dans la cellule A2 et moi je voudrai qu'il n'y ait pas le petit onglet vert dans laq cellule

                merci si tu as le temps

                bon je sais pas comment on joint un fichier..

                tu ouvre un nouveau classeur , tu cré une textbox1 et un boutton et tu colle le code:

                Private Sub CommandButton1_Click()

                TextBox1.Value = Cells(1, 1).Value
                TextBox1.Value = Format(TextBox1.Value, "0.00%")
                Cells(1, 2).Value = TextBox1.Value

                End Sub

                en A1 tu marque 0,1234 et tu appui sur le bouton
                en A2 va y avoir la bonne reponse mais au mauvais format ...
                0
                1. 1- affichage
                  BC1.Value = Format(BC1.Value, "0.00%")

                  2- récupération valeur
                  BC1.Value = Replace(BC1.Value, "%", "")
                  BC1.Value = Replace(BC1.Value, " ", "")
                  BC1.Value = Replace(BC1.Value, ",", ".")
                  BC1.Value = Val(BC1.Value)
                  1